reline 0.2.8.pre.10 → 0.2.8.pre.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/reline/line_editor.rb +35 -8
- data/lib/reline/version.rb +1 -1
- data/lib/reline/windows.rb +3 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5d16269b004e83a04194509a08f401942324ca51a216897f84a7c79bf0c1e0a4
|
4
|
+
data.tar.gz: dc7fe8a18875d588b45f6e5ef37bba5495e40d30ab0268d7895f4dfb36b6e3bc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 59c0d2c3361faedafaa0266b8951d9dd5b2776aac5b37cb139b2e1a28b2c4a10b825aa79f90054d79eb5f8c5aa1d0969ee63d8e105605c66ec991e4527d2e35f
|
7
|
+
data.tar.gz: 43fbf984721138fe3c52c3ddda17d06f8a2d5f95a0216120d2b62134c3f99d7c8798e23bac06d7d6cef7748360e5ad35cca5804cd81d31e11c429a24e0d087f7
|
data/lib/reline/line_editor.rb
CHANGED
@@ -181,7 +181,27 @@ class Reline::LineEditor
|
|
181
181
|
Reline::IOGate.set_winch_handler do
|
182
182
|
@resized = true
|
183
183
|
end
|
184
|
-
|
184
|
+
if ENV.key?('RELINE_ALT_SCROLLBAR')
|
185
|
+
@full_block = '::'
|
186
|
+
@upper_half_block = "''"
|
187
|
+
@lower_half_block = '..'
|
188
|
+
@block_elem_width = 2
|
189
|
+
elsif Reline::IOGate.win?
|
190
|
+
@full_block = '█'
|
191
|
+
@upper_half_block = '▀'
|
192
|
+
@lower_half_block = '▄'
|
193
|
+
@block_elem_width = 1
|
194
|
+
elsif @encoding == Encoding::UTF_8
|
195
|
+
@full_block = '█'
|
196
|
+
@upper_half_block = '▀'
|
197
|
+
@lower_half_block = '▄'
|
198
|
+
@block_elem_width = Reline::Unicode.calculate_width('█')
|
199
|
+
else
|
200
|
+
@full_block = '::'
|
201
|
+
@upper_half_block = "''"
|
202
|
+
@lower_half_block = '..'
|
203
|
+
@block_elem_width = 2
|
204
|
+
end
|
185
205
|
end
|
186
206
|
|
187
207
|
def resize
|
@@ -618,7 +638,7 @@ class Reline::LineEditor
|
|
618
638
|
@dialogs << Dialog.new(name, @config, DialogProcScope.new(self, @config, p, context))
|
619
639
|
end
|
620
640
|
|
621
|
-
|
641
|
+
DIALOG_DEFAULT_HEIGHT = 20
|
622
642
|
private def render_dialog(cursor_column)
|
623
643
|
@dialogs.each do |dialog|
|
624
644
|
render_each_dialog(dialog, cursor_column)
|
@@ -658,7 +678,7 @@ class Reline::LineEditor
|
|
658
678
|
else
|
659
679
|
dialog.width = dialog.contents.map { |l| calculate_width(l, true) }.max
|
660
680
|
end
|
661
|
-
height = dialog_render_info.height ||
|
681
|
+
height = dialog_render_info.height || DIALOG_DEFAULT_HEIGHT
|
662
682
|
height = dialog.contents.size if dialog.contents.size < height
|
663
683
|
if dialog.contents.size > height
|
664
684
|
if dialog.pointer
|
@@ -673,6 +693,9 @@ class Reline::LineEditor
|
|
673
693
|
end
|
674
694
|
dialog.contents = dialog.contents[dialog.scroll_top, height]
|
675
695
|
end
|
696
|
+
if dialog.contents and dialog.scroll_top >= dialog.contents.size
|
697
|
+
dialog.scroll_top = dialog.contents.size - height
|
698
|
+
end
|
676
699
|
if dialog_render_info.scrollbar and dialog_render_info.contents.size > height
|
677
700
|
bar_max_height = height * 2
|
678
701
|
moving_distance = (dialog_render_info.contents.size - height) * 2
|
@@ -685,7 +708,8 @@ class Reline::LineEditor
|
|
685
708
|
upper_space = @first_line_started_from - @started_from
|
686
709
|
lower_space = @highest_in_all - @first_line_started_from - @started_from - 1
|
687
710
|
dialog.column = dialog_render_info.pos.x
|
688
|
-
|
711
|
+
dialog.width += @block_elem_width if dialog.scrollbar_pos
|
712
|
+
diff = (dialog.column + dialog.width) - (@screen_size.last)
|
689
713
|
if diff > 0
|
690
714
|
dialog.column -= diff
|
691
715
|
end
|
@@ -701,7 +725,10 @@ class Reline::LineEditor
|
|
701
725
|
dialog.vertical_offset = dialog_render_info.pos.y + 1
|
702
726
|
end
|
703
727
|
Reline::IOGate.hide_cursor
|
704
|
-
dialog.
|
728
|
+
if dialog.column < 0
|
729
|
+
dialog.column = 0
|
730
|
+
dialog.width = @screen_size.last
|
731
|
+
end
|
705
732
|
reset_dialog(dialog, old_dialog)
|
706
733
|
move_cursor_down(dialog.vertical_offset)
|
707
734
|
Reline::IOGate.move_cursor_column(dialog.column)
|
@@ -721,12 +748,12 @@ class Reline::LineEditor
|
|
721
748
|
if dialog.scrollbar_pos and (dialog.scrollbar_pos != old_dialog.scrollbar_pos or dialog.column != old_dialog.column)
|
722
749
|
@output.write "\e[37m"
|
723
750
|
if dialog.scrollbar_pos <= (i * 2) and (i * 2 + 1) < (dialog.scrollbar_pos + bar_height)
|
724
|
-
@output.write
|
751
|
+
@output.write @full_block
|
725
752
|
elsif dialog.scrollbar_pos <= (i * 2) and (i * 2) < (dialog.scrollbar_pos + bar_height)
|
726
|
-
@output.write
|
753
|
+
@output.write @upper_half_block
|
727
754
|
str += ''
|
728
755
|
elsif dialog.scrollbar_pos <= (i * 2 + 1) and (i * 2) < (dialog.scrollbar_pos + bar_height)
|
729
|
-
@output.write
|
756
|
+
@output.write @lower_half_block
|
730
757
|
else
|
731
758
|
@output.write ' ' * @block_elem_width
|
732
759
|
end
|
data/lib/reline/version.rb
CHANGED
data/lib/reline/windows.rb
CHANGED
@@ -323,12 +323,13 @@ class Reline::Windows
|
|
323
323
|
end
|
324
324
|
|
325
325
|
def self.erase_after_cursor
|
326
|
-
csbi = 0.chr *
|
326
|
+
csbi = 0.chr * 22
|
327
327
|
@@GetConsoleScreenBufferInfo.call(@@hConsoleHandle, csbi)
|
328
|
+
attributes = csbi[8, 2].unpack1('S')
|
328
329
|
cursor = csbi[4, 4].unpack1('L')
|
329
330
|
written = 0.chr * 4
|
330
331
|
@@FillConsoleOutputCharacter.call(@@hConsoleHandle, 0x20, get_screen_size.last - cursor_pos.x, cursor, written)
|
331
|
-
@@FillConsoleOutputAttribute.call(@@hConsoleHandle,
|
332
|
+
@@FillConsoleOutputAttribute.call(@@hConsoleHandle, attributes, get_screen_size.last - cursor_pos.x, cursor, written)
|
332
333
|
end
|
333
334
|
|
334
335
|
def self.scroll_down(val)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reline
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.8.pre.
|
4
|
+
version: 0.2.8.pre.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- aycabta
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-10-
|
11
|
+
date: 2021-10-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: io-console
|
@@ -73,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
73
73
|
- !ruby/object:Gem::Version
|
74
74
|
version: 1.3.1
|
75
75
|
requirements: []
|
76
|
-
rubygems_version: 3.
|
76
|
+
rubygems_version: 3.1.6
|
77
77
|
signing_key:
|
78
78
|
specification_version: 4
|
79
79
|
summary: Alternative GNU Readline or Editline implementation by pure Ruby.
|