diff options
author | aycabta <aycabta@gmail.com> | 2020-11-26 19:13:34 +0900 |
---|---|---|
committer | aycabta <aycabta@gmail.com> | 2020-12-05 02:58:59 +0900 |
commit | c2bd5b84d06f5e74afce72e4e4af06d7176453b2 (patch) | |
tree | 1dd5c60a940e3132410b2e01e4f2a4b78d458c11 /lib/reline.rb | |
parent | 7624f5275713c3dd2d551058355d9a4544c2ef53 (diff) |
[ruby/reline] Support bracketed paste mode
https://github.com/ruby/reline/commit/d1a6869322
Diffstat (limited to 'lib/reline.rb')
-rw-r--r-- | lib/reline.rb | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/lib/reline.rb b/lib/reline.rb index 2862f5bc64..6a5f9b2390 100644 --- a/lib/reline.rb +++ b/lib/reline.rb @@ -44,6 +44,7 @@ module Reline self.output = STDOUT yield self @completion_quote_character = nil + @bracketed_paste_finished = false end def encoding @@ -243,6 +244,10 @@ module Reline line_editor.input_key(c) line_editor.rerender } + if @bracketed_paste_finished + line_editor.rerender_all + @bracketed_paste_finished = false + end } if prev_pasting_state == true and not Reline::IOGate.in_pasting? and not line_editor.finished? prev_pasting_state = false @@ -275,8 +280,13 @@ module Reline buffer = [] loop do c = Reline::IOGate.getc - buffer << c - result = key_stroke.match_status(buffer) + if c == -1 + result = :unmatched + @bracketed_paste_finished = true + else + buffer << c + result = key_stroke.match_status(buffer) + end case result when :matched expanded = key_stroke.expand(buffer).map{ |expanded_c| |