diff options
| author | aycabta <aycabta@gmail.com> | 2021-08-27 21:33:22 +0900 |
|---|---|---|
| committer | aycabta <aycabta@gmail.com> | 2021-08-29 20:30:33 +0900 |
| commit | 4cd344c958a0886fc02238f7f397188dbfca27bd (patch) | |
| tree | 18b48a4d1a4f75fb144db4ce385e2d41e54e6a57 /lib | |
| parent | 8d4370b066fd9ff7e6f6c9ee0c5035ad5c81050e (diff) | |
[ruby/reline] Add the ability to handle context between dialogs
https://github.com/ruby/reline/commit/063d9c70d9
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/reline.rb | 8 | ||||
| -rw-r--r-- | lib/reline/line_editor.rb | 11 |
2 files changed, 12 insertions, 7 deletions
diff --git a/lib/reline.rb b/lib/reline.rb index 81c5f9ed64..842f6ba61d 100644 --- a/lib/reline.rb +++ b/lib/reline.rb @@ -132,10 +132,10 @@ module Reline @dig_perfect_match_proc = p end - def add_dialog_proc(name_sym, p) + def add_dialog_proc(name_sym, p, context = nil) raise ArgumentError unless p.respond_to?(:call) or p.nil? raise ArgumentError unless name_sym.instance_of?(Symbol) - @dialog_proc_list << [name_sym, p] + @dialog_proc_list << [name_sym, p, context] end def input=(val) @@ -273,8 +273,8 @@ module Reline line_editor.dig_perfect_match_proc = dig_perfect_match_proc line_editor.pre_input_hook = pre_input_hook @dialog_proc_list.each do |d| - name_sym, dialog_proc = d - line_editor.add_dialog_proc(name_sym, dialog_proc) + name_sym, dialog_proc, context = d + line_editor.add_dialog_proc(name_sym, dialog_proc, context) end unless config.test_mode diff --git a/lib/reline/line_editor.rb b/lib/reline/line_editor.rb index c8884749dd..6783ff96d9 100644 --- a/lib/reline/line_editor.rb +++ b/lib/reline/line_editor.rb @@ -478,12 +478,17 @@ class Reline::LineEditor end class DialogProcScope - def initialize(line_editor, proc_to_exec) + def initialize(line_editor, proc_to_exec, context) @line_editor = line_editor @proc_to_exec = proc_to_exec + @context = context @cursor_pos = Reline::CursorPos.new end + def context + @context + end + def retrieve_completion_block(set_completion_quote_character = false) @line_editor.retrieve_completion_block(set_completion_quote_character) end @@ -536,9 +541,9 @@ class Reline::LineEditor end end - def add_dialog_proc(name, p) + def add_dialog_proc(name, p, context = nil) return if @dialogs.any? { |d| d.name == name } - @dialogs << Dialog.new(name, DialogProcScope.new(self, p)) + @dialogs << Dialog.new(name, DialogProcScope.new(self, p, context)) end DIALOG_HEIGHT = 20 |
