Skip to content

Commit 20f889c

Browse files
committed
Autodetect terminal caps in ScrollingSingleLineInput
1 parent 6e38609 commit 20f889c

File tree

4 files changed

+18
-8
lines changed

4 files changed

+18
-8
lines changed

Changes

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
Revision history for Terminal-LineEditor
22

33
{{$NEXT}}
4+
[Compatibility]
5+
- Autodect terminal capabilities based on environment variables
6+
7+
[Packaging]
8+
- Update Terminal::Capabilities dependency to :ver<0.0.8+> for terminal
9+
autodetection functionality
10+
411

512
0.0.20 2025-05-13T17:12:27-07:00
613
[Bug fix]

META6.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"depends": [
99
"Terminal::API:auth<zef:patrickb>:ver<1.0.3+>",
1010
"Terminal::ANSIParser:auth<zef:japhb>:ver<0.0.3+>",
11-
"Terminal::Capabilities:auth<zef:japhb>:ver<0.0.1+>",
11+
"Terminal::Capabilities:auth<zef:japhb>:ver<0.0.8+>",
1212
"Text::MiscUtils:auth<zef:japhb>:ver<0.0.8+>"
1313
],
1414
"description": "Generalized terminal line editing",

lib/Terminal/LineEditor/DuospaceInput.rakumod

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
use Text::MiscUtils::Layout;
44
use Terminal::Capabilities;
5+
use Terminal::Capabilities::Autodetect;
56

67
use Terminal::LineEditor::EditableBuffer;
78

@@ -48,8 +49,7 @@ class Terminal::LineEditor::ScrollingSingleLineInput
4849
does Terminal::LineEditor::DuospaceLayoutCache {
4950
has UInt:D $.display-width is required;
5051

51-
# For backwards compatibility, default to symbol-set Uni1
52-
has Terminal::Capabilities:D $.caps .= new(symbol-set => symbol-set('Uni1'));
52+
has Terminal::Capabilities $.caps;
5353

5454
has Str $.left-scroll-mark;
5555
has Str $.right-scroll-mark;
@@ -64,6 +64,9 @@ class Terminal::LineEditor::ScrollingSingleLineInput
6464
# Initialize scroll-cursor so buffer is ready
6565
$!scroll-cursor = self.buffer.add-cursor(:!auto-edit-move);
6666

67+
# Autodetect capabilities if not supplied
68+
$!caps //= terminal-env-detect()[0];
69+
6770
# Default scroll marks to match symbol set
6871
my constant %marks = ASCII => « < > »,
6972
Latin1 => < « » >,

t/11-scrolling-single-line-input.rakutest

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@ isa-ok $input.insert-cursor, Terminal::LineEditor::SingleLineTextBuffer::Cursor
2626
isa-ok $input.scroll-cursor, $input.insert-cursor.WHAT;
2727

2828

29-
# Default marks
30-
is $input.left-scroll-mark, '◀';
31-
is $input.right-scroll-mark, '▶';
32-
is $input.left-no-scroll-mark, ' ';
33-
is $input.right-no-scroll-mark, ' ';
29+
# Default marks (only specify width for marks that depend on terminal auto-detect)
30+
is $input.left-scroll-mark.chars, 1;
31+
is $input.right-scroll-mark.chars, 1;
32+
is $input.left-no-scroll-mark, ' ';
33+
is $input.right-no-scroll-mark, ' ';
3434

3535

3636
# available-width()

0 commit comments

Comments
 (0)