summaryrefslogtreecommitdiff
path: root/lib/reline.rb
diff options
context:
space:
mode:
authoraycabta <aycabta@gmail.com>2020-11-26 19:13:34 +0900
committeraycabta <aycabta@gmail.com>2020-12-05 02:58:59 +0900
commitc2bd5b84d06f5e74afce72e4e4af06d7176453b2 (patch)
tree1dd5c60a940e3132410b2e01e4f2a4b78d458c11 /lib/reline.rb
parent7624f5275713c3dd2d551058355d9a4544c2ef53 (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.rb14
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|