reline 0.1.3 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -0
- data/lib/reline.rb +27 -11
- data/lib/reline/ansi.rb +48 -7
- data/lib/reline/config.rb +65 -8
- data/lib/reline/general_io.rb +18 -0
- data/lib/reline/history.rb +31 -11
- data/lib/reline/key_actor/emacs.rb +6 -6
- data/lib/reline/key_actor/vi_command.rb +4 -4
- data/lib/reline/key_actor/vi_insert.rb +2 -2
- data/lib/reline/key_stroke.rb +2 -0
- data/lib/reline/line_editor.rb +309 -133
- data/lib/reline/sibori.rb +170 -0
- data/lib/reline/unicode.rb +93 -15
- data/lib/reline/unicode/east_asian_width.rb +1149 -1130
- data/lib/reline/version.rb +1 -1
- data/lib/reline/windows.rb +26 -3
- metadata +22 -7
data/lib/reline/version.rb
CHANGED
data/lib/reline/windows.rb
CHANGED
@@ -92,6 +92,7 @@ class Reline::Windows
|
|
92
92
|
@@ReadConsoleInput = Win32API.new('kernel32', 'ReadConsoleInput', ['L', 'P', 'L', 'P'], 'L')
|
93
93
|
@@GetFileType = Win32API.new('kernel32', 'GetFileType', ['L'], 'L')
|
94
94
|
@@GetFileInformationByHandleEx = Win32API.new('kernel32', 'GetFileInformationByHandleEx', ['L', 'I', 'P', 'L'], 'I')
|
95
|
+
@@FillConsoleOutputAttribute = Win32API.new('kernel32', 'FillConsoleOutputAttribute', ['L', 'L', 'L', 'L', 'P'], 'L')
|
95
96
|
|
96
97
|
@@input_buf = []
|
97
98
|
@@output_buf = []
|
@@ -198,6 +199,20 @@ class Reline::Windows
|
|
198
199
|
@@output_buf.unshift(c)
|
199
200
|
end
|
200
201
|
|
202
|
+
def self.in_pasting?
|
203
|
+
not self.empty_buffer?
|
204
|
+
end
|
205
|
+
|
206
|
+
def self.empty_buffer?
|
207
|
+
if not @@input_buf.empty?
|
208
|
+
false
|
209
|
+
elsif @@kbhit.call == 0
|
210
|
+
true
|
211
|
+
else
|
212
|
+
false
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
201
216
|
def self.get_screen_size
|
202
217
|
csbi = 0.chr * 22
|
203
218
|
@@GetConsoleScreenBufferInfo.call(@@hConsoleHandle, csbi)
|
@@ -249,9 +264,17 @@ class Reline::Windows
|
|
249
264
|
end
|
250
265
|
|
251
266
|
def self.clear_screen
|
252
|
-
|
253
|
-
|
254
|
-
|
267
|
+
csbi = 0.chr * 22
|
268
|
+
return if @@GetConsoleScreenBufferInfo.call(@@hConsoleHandle, csbi) == 0
|
269
|
+
buffer_width = csbi[0, 2].unpack('S').first
|
270
|
+
attributes = csbi[8, 2].unpack('S').first
|
271
|
+
_window_left, window_top, _window_right, window_bottom = *csbi[10,8].unpack('S*')
|
272
|
+
fill_length = buffer_width * (window_bottom - window_top + 1)
|
273
|
+
screen_topleft = window_top * 65536
|
274
|
+
written = 0.chr * 4
|
275
|
+
@@FillConsoleOutputCharacter.call(@@hConsoleHandle, 0x20, fill_length, screen_topleft, written)
|
276
|
+
@@FillConsoleOutputAttribute.call(@@hConsoleHandle, attributes, fill_length, screen_topleft, written)
|
277
|
+
@@SetConsoleCursorPosition.call(@@hConsoleHandle, screen_topleft)
|
255
278
|
end
|
256
279
|
|
257
280
|
def self.set_screen_size(rows, columns)
|
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.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- aycabta
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-11-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: io-console
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: yamatanooroti
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.0.6
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.0.6
|
69
83
|
description: Alternative GNU Readline or Editline implementation by pure Ruby.
|
70
84
|
email:
|
71
85
|
- aycabta@gmail.com
|
@@ -89,15 +103,16 @@ files:
|
|
89
103
|
- lib/reline/key_stroke.rb
|
90
104
|
- lib/reline/kill_ring.rb
|
91
105
|
- lib/reline/line_editor.rb
|
106
|
+
- lib/reline/sibori.rb
|
92
107
|
- lib/reline/unicode.rb
|
93
108
|
- lib/reline/unicode/east_asian_width.rb
|
94
109
|
- lib/reline/version.rb
|
95
110
|
- lib/reline/windows.rb
|
96
111
|
homepage: https://github.com/ruby/reline
|
97
112
|
licenses:
|
98
|
-
- Ruby
|
113
|
+
- Ruby
|
99
114
|
metadata: {}
|
100
|
-
post_install_message:
|
115
|
+
post_install_message:
|
101
116
|
rdoc_options: []
|
102
117
|
require_paths:
|
103
118
|
- lib
|
@@ -112,8 +127,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
112
127
|
- !ruby/object:Gem::Version
|
113
128
|
version: '0'
|
114
129
|
requirements: []
|
115
|
-
rubygems_version: 3.1.
|
116
|
-
signing_key:
|
130
|
+
rubygems_version: 3.1.4
|
131
|
+
signing_key:
|
117
132
|
specification_version: 4
|
118
133
|
summary: Alternative GNU Readline or Editline implementation by pure Ruby.
|
119
134
|
test_files: []
|