summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/reline/ansi.rb16
-rw-r--r--lib/reline/line_editor.rb4
-rw-r--r--lib/reline/windows.rb8
3 files changed, 28 insertions, 0 deletions
diff --git a/lib/reline/ansi.rb b/lib/reline/ansi.rb
index 09bd95662a..f642060510 100644
--- a/lib/reline/ansi.rb
+++ b/lib/reline/ansi.rb
@@ -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
diff --git a/lib/reline/line_editor.rb b/lib/reline/line_editor.rb
index f275f7cf02..d8e2842e6a 100644
--- a/lib/reline/line_editor.rb
+++ b/lib/reline/line_editor.rb
@@ -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)
diff --git a/lib/reline/windows.rb b/lib/reline/windows.rb
index 8665f3bc45..ae87b38706 100644
--- a/lib/reline/windows.rb
+++ b/lib/reline/windows.rb
@@ -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