reline 0.5.1 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/reline/ansi.rb +1 -1
- data/lib/reline/config.rb +19 -19
- data/lib/reline/key_actor/emacs.rb +11 -11
- data/lib/reline/key_actor/vi_command.rb +23 -23
- data/lib/reline/key_actor/vi_insert.rb +2 -2
- data/lib/reline/line_editor.rb +313 -467
- data/lib/reline/unicode.rb +60 -8
- data/lib/reline/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 45922535b3972631020c6b33bc6b88fd400062fb2c0820ab95ab991704c1fc42
|
4
|
+
data.tar.gz: 53f36ad5e7e196ba34a22990c32b38556653b7384bd99108a791d1b4c7cd3b36
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb1b50add8dc60baeefd1fecce83abbaf0e134c16c30ca7fd268efe46d364638280bd2a16100e54be6dbf691bc8a9d4220c53210233a06a0278361c07bd5a56f
|
7
|
+
data.tar.gz: 5ed4f57373cd6e9329de58b9361037e4f8e510020c0ba59970de5733a8c8f4b5c004b871d8e21f013ee065daed9b55f433142529b5e4039276a0f0adbc00c4d9
|
data/lib/reline/ansi.rb
CHANGED
@@ -284,7 +284,7 @@ class Reline::ANSI
|
|
284
284
|
buf = @@output.pread(@@output.pos, 0)
|
285
285
|
row = buf.count("\n")
|
286
286
|
column = buf.rindex("\n") ? (buf.size - buf.rindex("\n")) - 1 : 0
|
287
|
-
rescue Errno::ESPIPE
|
287
|
+
rescue Errno::ESPIPE, IOError
|
288
288
|
# Just returns column 1 for ambiguous width because this I/O is not
|
289
289
|
# tty and can't seek.
|
290
290
|
row = 0
|
data/lib/reline/config.rb
CHANGED
@@ -53,8 +53,6 @@ class Reline::Config
|
|
53
53
|
@additional_key_bindings[:vi_insert] = {}
|
54
54
|
@additional_key_bindings[:vi_command] = {}
|
55
55
|
@oneshot_key_bindings = {}
|
56
|
-
@skip_section = nil
|
57
|
-
@if_stack = nil
|
58
56
|
@editing_mode_label = :emacs
|
59
57
|
@keymap_label = :emacs
|
60
58
|
@keymap_prefix = []
|
@@ -190,9 +188,7 @@ class Reline::Config
|
|
190
188
|
end
|
191
189
|
end
|
192
190
|
end
|
193
|
-
|
194
|
-
@skip_section = nil
|
195
|
-
@if_stack = []
|
191
|
+
if_stack = []
|
196
192
|
|
197
193
|
lines.each_with_index do |line, no|
|
198
194
|
next if line.match(/\A\s*#/)
|
@@ -201,11 +197,11 @@ class Reline::Config
|
|
201
197
|
|
202
198
|
line = line.chomp.lstrip
|
203
199
|
if line.start_with?('$')
|
204
|
-
handle_directive(line[1..-1], file, no)
|
200
|
+
handle_directive(line[1..-1], file, no, if_stack)
|
205
201
|
next
|
206
202
|
end
|
207
203
|
|
208
|
-
next if
|
204
|
+
next if if_stack.any? { |_no, skip| skip }
|
209
205
|
|
210
206
|
case line
|
211
207
|
when /^set +([^ ]+) +([^ ]+)/i
|
@@ -214,43 +210,47 @@ class Reline::Config
|
|
214
210
|
next
|
215
211
|
when /\s*("#{KEYSEQ_PATTERN}+")\s*:\s*(.*)\s*$/o
|
216
212
|
key, func_name = $1, $2
|
213
|
+
func_name = func_name.split.first
|
217
214
|
keystroke, func = bind_key(key, func_name)
|
218
215
|
next unless keystroke
|
219
216
|
@additional_key_bindings[@keymap_label][@keymap_prefix + keystroke] = func
|
220
217
|
end
|
221
218
|
end
|
222
|
-
unless
|
223
|
-
raise InvalidInputrc, "#{file}:#{
|
219
|
+
unless if_stack.empty?
|
220
|
+
raise InvalidInputrc, "#{file}:#{if_stack.last[0]}: unclosed if"
|
224
221
|
end
|
225
|
-
ensure
|
226
|
-
@skip_section, @if_stack = conditions
|
227
222
|
end
|
228
223
|
|
229
|
-
def handle_directive(directive, file, no)
|
224
|
+
def handle_directive(directive, file, no, if_stack)
|
230
225
|
directive, args = directive.split(' ')
|
231
226
|
case directive
|
232
227
|
when 'if'
|
233
228
|
condition = false
|
234
229
|
case args
|
235
|
-
when
|
230
|
+
when /^mode=(vi|emacs)$/i
|
231
|
+
mode = $1.downcase
|
232
|
+
# NOTE: mode=vi means vi-insert mode
|
233
|
+
mode = 'vi_insert' if mode == 'vi'
|
234
|
+
if @editing_mode_label == mode.to_sym
|
235
|
+
condition = true
|
236
|
+
end
|
236
237
|
when 'term'
|
237
238
|
when 'version'
|
238
239
|
else # application name
|
239
240
|
condition = true if args == 'Ruby'
|
240
241
|
condition = true if args == 'Reline'
|
241
242
|
end
|
242
|
-
|
243
|
-
@skip_section = !condition
|
243
|
+
if_stack << [no, !condition]
|
244
244
|
when 'else'
|
245
|
-
if
|
245
|
+
if if_stack.empty?
|
246
246
|
raise InvalidInputrc, "#{file}:#{no}: unmatched else"
|
247
247
|
end
|
248
|
-
|
248
|
+
if_stack.last[1] = !if_stack.last[1]
|
249
249
|
when 'endif'
|
250
|
-
if
|
250
|
+
if if_stack.empty?
|
251
251
|
raise InvalidInputrc, "#{file}:#{no}: unmatched endif"
|
252
252
|
end
|
253
|
-
|
253
|
+
if_stack.pop
|
254
254
|
when 'include'
|
255
255
|
read(File.expand_path(args))
|
256
256
|
end
|
@@ -49,13 +49,13 @@ class Reline::KeyActor::Emacs < Reline::KeyActor::Base
|
|
49
49
|
# 23 ^W
|
50
50
|
:em_kill_region,
|
51
51
|
# 24 ^X
|
52
|
-
:
|
52
|
+
:ed_unassigned,
|
53
53
|
# 25 ^Y
|
54
54
|
:em_yank,
|
55
55
|
# 26 ^Z
|
56
56
|
:ed_ignore,
|
57
57
|
# 27 ^[
|
58
|
-
:
|
58
|
+
:ed_unassigned,
|
59
59
|
# 28 ^\
|
60
60
|
:ed_ignore,
|
61
61
|
# 29 ^]
|
@@ -319,9 +319,9 @@ class Reline::KeyActor::Emacs < Reline::KeyActor::Base
|
|
319
319
|
# 158 M-^^
|
320
320
|
:ed_unassigned,
|
321
321
|
# 159 M-^_
|
322
|
-
:em_copy_prev_word,
|
323
|
-
# 160 M-SPACE
|
324
322
|
:ed_unassigned,
|
323
|
+
# 160 M-SPACE
|
324
|
+
:em_set_mark,
|
325
325
|
# 161 M-!
|
326
326
|
:ed_unassigned,
|
327
327
|
# 162 M-"
|
@@ -415,7 +415,7 @@ class Reline::KeyActor::Emacs < Reline::KeyActor::Base
|
|
415
415
|
# 206 M-N
|
416
416
|
:vi_search_next,
|
417
417
|
# 207 M-O
|
418
|
-
:
|
418
|
+
:ed_unassigned,
|
419
419
|
# 208 M-P
|
420
420
|
:vi_search_prev,
|
421
421
|
# 209 M-Q
|
@@ -431,15 +431,15 @@ class Reline::KeyActor::Emacs < Reline::KeyActor::Base
|
|
431
431
|
# 214 M-V
|
432
432
|
:ed_unassigned,
|
433
433
|
# 215 M-W
|
434
|
-
:
|
434
|
+
:ed_unassigned,
|
435
435
|
# 216 M-X
|
436
|
-
:ed_command,
|
437
|
-
# 217 M-Y
|
438
436
|
:ed_unassigned,
|
437
|
+
# 217 M-Y
|
438
|
+
:em_yank_pop,
|
439
439
|
# 218 M-Z
|
440
440
|
:ed_unassigned,
|
441
441
|
# 219 M-[
|
442
|
-
:
|
442
|
+
:ed_unassigned,
|
443
443
|
# 220 M-\
|
444
444
|
:ed_unassigned,
|
445
445
|
# 221 M-]
|
@@ -495,9 +495,9 @@ class Reline::KeyActor::Emacs < Reline::KeyActor::Base
|
|
495
495
|
# 246 M-v
|
496
496
|
:ed_unassigned,
|
497
497
|
# 247 M-w
|
498
|
-
:
|
498
|
+
:ed_unassigned,
|
499
499
|
# 248 M-x
|
500
|
-
:
|
500
|
+
:ed_unassigned,
|
501
501
|
# 249 M-y
|
502
502
|
:ed_unassigned,
|
503
503
|
# 250 M-z
|
@@ -17,7 +17,7 @@ class Reline::KeyActor::ViCommand < Reline::KeyActor::Base
|
|
17
17
|
# 7 ^G
|
18
18
|
:ed_unassigned,
|
19
19
|
# 8 ^H
|
20
|
-
:
|
20
|
+
:ed_prev_char,
|
21
21
|
# 9 ^I
|
22
22
|
:ed_unassigned,
|
23
23
|
# 10 ^J
|
@@ -41,7 +41,7 @@ class Reline::KeyActor::ViCommand < Reline::KeyActor::Base
|
|
41
41
|
# 19 ^S
|
42
42
|
:ed_ignore,
|
43
43
|
# 20 ^T
|
44
|
-
:
|
44
|
+
:ed_transpose_chars,
|
45
45
|
# 21 ^U
|
46
46
|
:vi_kill_line_prev,
|
47
47
|
# 22 ^V
|
@@ -51,7 +51,7 @@ class Reline::KeyActor::ViCommand < Reline::KeyActor::Base
|
|
51
51
|
# 24 ^X
|
52
52
|
:ed_unassigned,
|
53
53
|
# 25 ^Y
|
54
|
-
:
|
54
|
+
:em_yank,
|
55
55
|
# 26 ^Z
|
56
56
|
:ed_unassigned,
|
57
57
|
# 27 ^[
|
@@ -75,7 +75,7 @@ class Reline::KeyActor::ViCommand < Reline::KeyActor::Base
|
|
75
75
|
# 36 $
|
76
76
|
:ed_move_to_end,
|
77
77
|
# 37 %
|
78
|
-
:
|
78
|
+
:ed_unassigned,
|
79
79
|
# 38 &
|
80
80
|
:ed_unassigned,
|
81
81
|
# 39 '
|
@@ -89,11 +89,11 @@ class Reline::KeyActor::ViCommand < Reline::KeyActor::Base
|
|
89
89
|
# 43 +
|
90
90
|
:ed_next_history,
|
91
91
|
# 44 ,
|
92
|
-
:
|
92
|
+
:ed_unassigned,
|
93
93
|
# 45 -
|
94
94
|
:ed_prev_history,
|
95
95
|
# 46 .
|
96
|
-
:
|
96
|
+
:ed_unassigned,
|
97
97
|
# 47 /
|
98
98
|
:vi_search_prev,
|
99
99
|
# 48 0
|
@@ -117,9 +117,9 @@ class Reline::KeyActor::ViCommand < Reline::KeyActor::Base
|
|
117
117
|
# 57 9
|
118
118
|
:ed_argument_digit,
|
119
119
|
# 58 :
|
120
|
-
:
|
120
|
+
:ed_unassigned,
|
121
121
|
# 59 ;
|
122
|
-
:
|
122
|
+
:ed_unassigned,
|
123
123
|
# 60 <
|
124
124
|
:ed_unassigned,
|
125
125
|
# 61 =
|
@@ -157,21 +157,21 @@ class Reline::KeyActor::ViCommand < Reline::KeyActor::Base
|
|
157
157
|
# 77 M
|
158
158
|
:ed_unassigned,
|
159
159
|
# 78 N
|
160
|
-
:
|
160
|
+
:ed_unassigned,
|
161
161
|
# 79 O
|
162
|
-
:
|
162
|
+
:ed_unassigned,
|
163
163
|
# 80 P
|
164
164
|
:vi_paste_prev,
|
165
165
|
# 81 Q
|
166
166
|
:ed_unassigned,
|
167
167
|
# 82 R
|
168
|
-
:
|
168
|
+
:ed_unassigned,
|
169
169
|
# 83 S
|
170
|
-
:
|
170
|
+
:ed_unassigned,
|
171
171
|
# 84 T
|
172
172
|
:vi_to_prev_char,
|
173
173
|
# 85 U
|
174
|
-
:
|
174
|
+
:ed_unassigned,
|
175
175
|
# 86 V
|
176
176
|
:ed_unassigned,
|
177
177
|
# 87 W
|
@@ -179,11 +179,11 @@ class Reline::KeyActor::ViCommand < Reline::KeyActor::Base
|
|
179
179
|
# 88 X
|
180
180
|
:ed_delete_prev_char,
|
181
181
|
# 89 Y
|
182
|
-
:
|
182
|
+
:ed_unassigned,
|
183
183
|
# 90 Z
|
184
184
|
:ed_unassigned,
|
185
185
|
# 91 [
|
186
|
-
:
|
186
|
+
:ed_unassigned,
|
187
187
|
# 92 \
|
188
188
|
:ed_unassigned,
|
189
189
|
# 93 ]
|
@@ -191,7 +191,7 @@ class Reline::KeyActor::ViCommand < Reline::KeyActor::Base
|
|
191
191
|
# 94 ^
|
192
192
|
:vi_first_print,
|
193
193
|
# 95 _
|
194
|
-
:
|
194
|
+
:ed_unassigned,
|
195
195
|
# 96 `
|
196
196
|
:ed_unassigned,
|
197
197
|
# 97 a
|
@@ -221,7 +221,7 @@ class Reline::KeyActor::ViCommand < Reline::KeyActor::Base
|
|
221
221
|
# 109 m
|
222
222
|
:ed_unassigned,
|
223
223
|
# 110 n
|
224
|
-
:
|
224
|
+
:ed_unassigned,
|
225
225
|
# 111 o
|
226
226
|
:ed_unassigned,
|
227
227
|
# 112 p
|
@@ -231,11 +231,11 @@ class Reline::KeyActor::ViCommand < Reline::KeyActor::Base
|
|
231
231
|
# 114 r
|
232
232
|
:vi_replace_char,
|
233
233
|
# 115 s
|
234
|
-
:
|
234
|
+
:ed_unassigned,
|
235
235
|
# 116 t
|
236
236
|
:vi_to_next_char,
|
237
237
|
# 117 u
|
238
|
-
:
|
238
|
+
:ed_unassigned,
|
239
239
|
# 118 v
|
240
240
|
:vi_histedit,
|
241
241
|
# 119 w
|
@@ -253,9 +253,9 @@ class Reline::KeyActor::ViCommand < Reline::KeyActor::Base
|
|
253
253
|
# 125 }
|
254
254
|
:ed_unassigned,
|
255
255
|
# 126 ~
|
256
|
-
:vi_change_case,
|
257
|
-
# 127 ^?
|
258
256
|
:ed_unassigned,
|
257
|
+
# 127 ^?
|
258
|
+
:em_delete_prev_char,
|
259
259
|
# 128 M-^@
|
260
260
|
:ed_unassigned,
|
261
261
|
# 129 M-^A
|
@@ -415,7 +415,7 @@ class Reline::KeyActor::ViCommand < Reline::KeyActor::Base
|
|
415
415
|
# 206 M-N
|
416
416
|
:ed_unassigned,
|
417
417
|
# 207 M-O
|
418
|
-
:
|
418
|
+
:ed_unassigned,
|
419
419
|
# 208 M-P
|
420
420
|
:ed_unassigned,
|
421
421
|
# 209 M-Q
|
@@ -439,7 +439,7 @@ class Reline::KeyActor::ViCommand < Reline::KeyActor::Base
|
|
439
439
|
# 218 M-Z
|
440
440
|
:ed_unassigned,
|
441
441
|
# 219 M-[
|
442
|
-
:
|
442
|
+
:ed_unassigned,
|
443
443
|
# 220 M-\
|
444
444
|
:ed_unassigned,
|
445
445
|
# 221 M-]
|
@@ -41,7 +41,7 @@ class Reline::KeyActor::ViInsert < Reline::KeyActor::Base
|
|
41
41
|
# 19 ^S
|
42
42
|
:vi_search_next,
|
43
43
|
# 20 ^T
|
44
|
-
:
|
44
|
+
:ed_transpose_chars,
|
45
45
|
# 21 ^U
|
46
46
|
:vi_kill_line_prev,
|
47
47
|
# 22 ^V
|
@@ -51,7 +51,7 @@ class Reline::KeyActor::ViInsert < Reline::KeyActor::Base
|
|
51
51
|
# 24 ^X
|
52
52
|
:ed_insert,
|
53
53
|
# 25 ^Y
|
54
|
-
:
|
54
|
+
:em_yank,
|
55
55
|
# 26 ^Z
|
56
56
|
:ed_insert,
|
57
57
|
# 27 ^[
|