1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

[ruby/reline] Hide cursor when rendering dialog

a9050cf676
This commit is contained in:
aycabta 2021-08-22 01:31:21 +09:00
parent c0349765e9
commit 02a61fe33f
3 changed files with 28 additions and 0 deletions

View file

@ -274,6 +274,22 @@ class Reline::ANSI
end
end
def self.hide_cursor
if Reline::Terminfo.enabled?
@@output.write Reline::Terminfo.tigetstr('civis')
else
# ignored
end
end
def self.show_cursor
if Reline::Terminfo.enabled?
@@output.write Reline::Terminfo.tigetstr('cnorm')
else
# ignored
end
end
def self.erase_after_cursor
@@output.write "\e[K"
end

View file

@ -562,6 +562,7 @@ class Reline::LineEditor
@dialog_updown = :down
@dialog_vertical_offset = 1
end
Reline::IOGate.hide_cursor
reset_dialog(old_dialog_contents, old_dialog_contents_width, old_dialog_column, old_dialog_vertical_offset, old_dialog_updown)
case @dialog_updown
when :down
@ -581,6 +582,7 @@ class Reline::LineEditor
move_cursor_up(@dialog_contents.size)
when :up
end
Reline::IOGate.show_cursor
@dialog_lines_backup = {
lines: modify_lines(whole_lines),
line_index: @line_index,
@ -683,6 +685,7 @@ class Reline::LineEditor
visual_lines.concat(vl)
}
visual_lines_under_dialog = visual_lines[visual_start, @dialog_contents.size]
Reline::IOGate.hide_cursor
move_cursor_down(@dialog_vertical_offset)
dialog_vertical_size = @dialog_contents.size
dialog_vertical_size.times do |i|
@ -698,6 +701,7 @@ class Reline::LineEditor
end
move_cursor_up(dialog_vertical_size - 1 + @dialog_vertical_offset)
Reline::IOGate.move_cursor_column(prompt_width + @cursor)
Reline::IOGate.show_cursor
end
private def calculate_scroll_partial_screen(highest_in_all, cursor_y)

View file

@ -343,6 +343,14 @@ class Reline::Windows
raise NotImplementedError
end
def self.hide_cursor
# ignored
end
def self.show_cursor
# ignored
end
def self.set_winch_handler(&handler)
@@winch_handler = handler
end