reline 0.2.8.pre.1 → 0.2.8.pre.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2c1dd7202ef6de3ebf89e2ed39c83af1e48bcd46d5f967037edc0097301b8286
4
- data.tar.gz: 4d2047341862d83b785903974e4766b5a3d481a033208bfcc1d8891a0b116e65
3
+ metadata.gz: 45220c00c821168746654f6c7f5ad3cc88ff8b4e3d3b6e5aefccc83b34392041
4
+ data.tar.gz: a3bbf71304ce777dbae4d5b1cc91f5a2b297b811194947e5e8e8a27b229667a2
5
5
  SHA512:
6
- metadata.gz: a9109bb68de735bd5dba6de8dffecfd23fecd8f09aa0b1f92d0bca6b008ef7c3d3785c16292db8ea90c9baf4d275ef382cd6d0d15487fbe6e491c74a670004bd
7
- data.tar.gz: af8f8b99ceb34416253857caf4d87a07bde1fddf72d80ff14caeb2a5940178566bd63fc4a6884eddd60959ac3f352c056bb73bbe646915582b5b3b4d091beeed
6
+ metadata.gz: a9d8e4a15c1eff337dc476b8b4f2d603b64d35faf255a9984f119b2f14a76bcd93f145d01d1e0698e2cb0a3d80c28c8b3baa343866e3cb7b8b28ab4642e77ebf
7
+ data.tar.gz: fcc70f912f7472acb0d7eeee8f221a60d06e3f08cd079b37a988392eca35723753e3b02638a4bcbb41876dc59cfcb46349b16bfff88e336ecea9bd2a4cf93231
data/lib/reline/ansi.rb CHANGED
@@ -37,6 +37,7 @@ class Reline::ANSI
37
37
  # default bindings
38
38
  [27, 32] => :em_set_mark, # M-<space>
39
39
  [24, 24] => :em_exchange_mark, # C-x C-x
40
+ [27, 91, 90] => :completion_journey_up, # S-Tab
40
41
  }.each_pair do |key, func|
41
42
  config.add_default_key_binding_by_keymap(:emacs, key, func)
42
43
  end
data/lib/reline/config.rb CHANGED
@@ -65,6 +65,7 @@ class Reline::Config
65
65
  @history_size = -1 # unlimited
66
66
  @keyseq_timeout = 500
67
67
  @test_mode = false
68
+ @autocompletion = false
68
69
  end
69
70
 
70
71
  def reset
@@ -89,6 +90,14 @@ class Reline::Config
89
90
  (val.respond_to?(:any?) ? val : [val]).any?(@editing_mode_label)
90
91
  end
91
92
 
93
+ def autocompletion=(val)
94
+ @autocompletion = val
95
+ end
96
+
97
+ def autocompletion
98
+ @autocompletion
99
+ end
100
+
92
101
  def keymap
93
102
  @key_actors[@keymap_label]
94
103
  end
@@ -479,8 +479,9 @@ class Reline::LineEditor
479
479
  end
480
480
 
481
481
  class DialogProcScope
482
- def initialize(line_editor, proc_to_exec, context)
482
+ def initialize(line_editor, config, proc_to_exec, context)
483
483
  @line_editor = line_editor
484
+ @config = config
484
485
  @proc_to_exec = proc_to_exec
485
486
  @context = context
486
487
  @cursor_pos = Reline::CursorPos.new
@@ -519,6 +520,10 @@ class Reline::LineEditor
519
520
  @line_editor.instance_variable_get(:@completion_journey_data)
520
521
  end
521
522
 
523
+ def config
524
+ @config
525
+ end
526
+
522
527
  def call
523
528
  instance_exec(&@proc_to_exec)
524
529
  end
@@ -544,7 +549,7 @@ class Reline::LineEditor
544
549
 
545
550
  def add_dialog_proc(name, p, context = nil)
546
551
  return if @dialogs.any? { |d| d.name == name }
547
- @dialogs << Dialog.new(name, DialogProcScope.new(self, p, context))
552
+ @dialogs << Dialog.new(name, DialogProcScope.new(self, @config, p, context))
548
553
  end
549
554
 
550
555
  DIALOG_HEIGHT = 20
@@ -1426,7 +1431,20 @@ class Reline::LineEditor
1426
1431
  if result.is_a?(Array)
1427
1432
  completion_occurs = true
1428
1433
  process_insert
1429
- complete(result)
1434
+ if @config.autocompletion
1435
+ move_completed_list(result, :down)
1436
+ else
1437
+ complete(result)
1438
+ end
1439
+ end
1440
+ end
1441
+ elsif @config.editing_mode_is?(:emacs, :vi_insert) and key.char == :completion_journey_up
1442
+ if not @config.disable_completion and @config.autocompletion
1443
+ result = call_completion_proc
1444
+ if result.is_a?(Array)
1445
+ completion_occurs = true
1446
+ process_insert
1447
+ move_completed_list(result, :up)
1430
1448
  end
1431
1449
  end
1432
1450
  elsif not @config.disable_completion and @config.editing_mode_is?(:vi_insert) and ["\C-p".ord, "\C-n".ord].include?(key.char)
@@ -1,3 +1,3 @@
1
1
  module Reline
2
- VERSION = '0.2.8.pre.1'
2
+ VERSION = '0.2.8.pre.2'
3
3
  end
@@ -42,6 +42,14 @@ class Reline::Windows
42
42
  }.each_pair do |key, func|
43
43
  config.add_default_key_binding_by_keymap(:emacs, key, func)
44
44
  end
45
+
46
+ # Emulate ANSI key sequence.
47
+ {
48
+ [27, 91, 90] => :completion_journey_up, # S-Tab
49
+ }.each_pair do |key, func|
50
+ config.add_default_key_binding_by_keymap(:emacs, key, func)
51
+ config.add_default_key_binding_by_keymap(:vi_insert, key, func)
52
+ end
45
53
  end
46
54
 
47
55
  if defined? JRUBY_VERSION
@@ -106,6 +114,7 @@ class Reline::Windows
106
114
  SCROLLLOCK_ON = 0x0040
107
115
  SHIFT_PRESSED = 0x0010
108
116
 
117
+ VK_TAB = 0x09
109
118
  VK_END = 0x23
110
119
  VK_HOME = 0x24
111
120
  VK_LEFT = 0x25
@@ -199,6 +208,9 @@ class Reline::Windows
199
208
  [ { control_keys: [], virtual_key_code: VK_DELETE }, [0, 83] ],
200
209
  [ { control_keys: [], virtual_key_code: VK_HOME }, [0, 71] ],
201
210
  [ { control_keys: [], virtual_key_code: VK_END }, [0, 79] ],
211
+
212
+ # Emulate ANSI key sequence.
213
+ [ { control_keys: :SHIFT, virtual_key_code: VK_TAB }, [27, 91, 90] ],
202
214
  ]
203
215
 
204
216
  def self.process_key_event(repeat_count, virtual_key_code, virtual_scan_code, char_code, control_key_state)
data/lib/reline.rb CHANGED
@@ -107,6 +107,14 @@ module Reline
107
107
  @completion_proc = p
108
108
  end
109
109
 
110
+ def autocompletion
111
+ @config.autocompletion
112
+ end
113
+
114
+ def autocompletion=(val)
115
+ @config.autocompletion = val
116
+ end
117
+
110
118
  def output_modifier_proc=(p)
111
119
  raise ArgumentError unless p.respond_to?(:call) or p.nil?
112
120
  @output_modifier_proc = p
@@ -180,6 +188,7 @@ module Reline
180
188
 
181
189
  Reline::DEFAULT_DIALOG_PROC_AUTOCOMPLETE = ->() {
182
190
  # autocomplete
191
+ return nil unless config.autocompletion
183
192
  if just_cursor_moving and completion_journey_data.nil?
184
193
  # Auto complete starts only when edited
185
194
  return nil
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reline
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.8.pre.1
4
+ version: 0.2.8.pre.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - aycabta