From 9b8de9b59c37a62a7d9b6f2c47727deec307b20a Mon Sep 17 00:00:00 2001 From: Henrixounez Date: Mon, 2 Sep 2019 13:14:40 +0200 Subject: [PATCH] readline: clear the screen on ctrl+l --- vlib/readline/readline_lin.v | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/vlib/readline/readline_lin.v b/vlib/readline/readline_lin.v index b246a28226..1728d65b15 100644 --- a/vlib/readline/readline_lin.v +++ b/vlib/readline/readline_lin.v @@ -59,6 +59,7 @@ enum Action { history_previous history_next overwrite + clear_screen } // Toggle raw mode of the terminal by changing its attributes @@ -128,6 +129,7 @@ fn (r Readline) analyse(c byte) Action { case 255 : return Action.eof case `\n`: return Action.commit_line case `\r`: return Action.commit_line + case `\f`: return Action.clear_screen // CTRL + L case `\b`: return Action.delete_left // Backspace case 127 : return Action.delete_left // DEL case 27 : return r.analyse_control() // ESC @@ -189,6 +191,7 @@ fn (r mut Readline) execute(a Action, c byte) bool { case Action.move_cursor_end: r.move_cursor_end() case Action.move_cursor_word_left: r.move_cursor_word_left() case Action.move_cursor_word_right: r.move_cursor_word_right() + case Action.clear_screen: r.clear_screen() } return false } @@ -340,3 +343,9 @@ fn (r mut Readline) move_cursor_word_right() { r.refresh_line() } } + +fn (r mut Readline) clear_screen() { + term.set_cursor_position(1, 1) + term.erase_clear() + r.refresh_line() +}