readline: give the possibility to ignore the empty line in the history (#13452)

pull/13465/head
Vincenzo Palazzo 2022-02-13 23:12:25 +01:00 committed by GitHub
parent 57e850e932
commit bf11df40e2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 4 deletions

View File

@ -42,7 +42,9 @@ enum FnType {
fn new_repl() Repl { fn new_repl() Repl {
return Repl{ return Repl{
readline: readline.Readline{} readline: readline.Readline{
skip_empty: true
}
modules: ['os', 'time', 'math'] modules: ['os', 'time', 'math']
vstartup_lines: os.read_file(vstartup) or { '' }.trim_right('\n\r').split_into_lines() vstartup_lines: os.read_file(vstartup) or { '' }.trim_right('\n\r').split_into_lines()
// Test file used to check if a function as a void return or a // Test file used to check if a function as a void return or a

View File

@ -28,6 +28,7 @@ mut:
prompt string prompt string
prompt_offset int prompt_offset int
previous_lines [][]rune previous_lines [][]rune
skip_empty bool // skip the empty lines when calling .history_previous()
search_index int search_index int
is_tty bool is_tty bool
} }

View File

@ -551,10 +551,15 @@ fn (mut r Readline) history_previous() {
r.previous_lines[0] = r.current r.previous_lines[0] = r.current
} }
r.search_index++ r.search_index++
r.current = r.previous_lines[r.search_index] prev_line := r.previous_lines[r.search_index]
if r.skip_empty && prev_line == [] {
r.history_previous()
} else {
r.current = prev_line
r.cursor = r.current.len r.cursor = r.current.len
r.refresh_line() r.refresh_line()
} }
}
// history_next sets current line to the content of the next line in the history buffer. // history_next sets current line to the content of the next line in the history buffer.
fn (mut r Readline) history_next() { fn (mut r Readline) history_next() {