mirror of
https://github.com/vlang/v.git
synced 2025-09-12 00:46:55 -04:00
This commit is contained in:
parent
19d31f221f
commit
840e659d08
@ -10,6 +10,7 @@ module readline
|
|||||||
import term.termios
|
import term.termios
|
||||||
import term
|
import term
|
||||||
import os
|
import os
|
||||||
|
import encoding.utf8.east_asian
|
||||||
|
|
||||||
fn C.raise(sig int)
|
fn C.raise(sig int)
|
||||||
|
|
||||||
@ -379,12 +380,16 @@ fn (mut r Readline) refresh_line() {
|
|||||||
} else {
|
} else {
|
||||||
r.prompt
|
r.prompt
|
||||||
}
|
}
|
||||||
end_of_input = calculate_screen_position(last_prompt_line.len, 0, get_screen_columns(),
|
last_prompt_width := east_asian.display_width(last_prompt_line, 1)
|
||||||
r.current.len, end_of_input)
|
current_width := east_asian.display_width(r.current.string(), 1)
|
||||||
|
cursor_prefix_width := east_asian.display_width(r.current[..r.cursor].string(), 1)
|
||||||
|
|
||||||
|
end_of_input = calculate_screen_position(last_prompt_width, 0, get_screen_columns(),
|
||||||
|
current_width, end_of_input)
|
||||||
end_of_input[1] += r.current.filter(it == `\n`).len
|
end_of_input[1] += r.current.filter(it == `\n`).len
|
||||||
mut cursor_pos := [0, 0]
|
mut cursor_pos := [0, 0]
|
||||||
cursor_pos = calculate_screen_position(last_prompt_line.len, 0, get_screen_columns(),
|
cursor_pos = calculate_screen_position(last_prompt_width, 0, get_screen_columns(),
|
||||||
r.cursor, cursor_pos)
|
cursor_prefix_width, cursor_pos)
|
||||||
shift_cursor(0, -r.cursor_row_offset)
|
shift_cursor(0, -r.cursor_row_offset)
|
||||||
term.erase_toend()
|
term.erase_toend()
|
||||||
print(last_prompt_line)
|
print(last_prompt_line)
|
||||||
@ -392,7 +397,7 @@ fn (mut r Readline) refresh_line() {
|
|||||||
if end_of_input[0] == 0 && end_of_input[1] > 0 {
|
if end_of_input[0] == 0 && end_of_input[1] > 0 {
|
||||||
print('\n')
|
print('\n')
|
||||||
}
|
}
|
||||||
shift_cursor(cursor_pos[0] - r.prompt_offset, -(end_of_input[1] - cursor_pos[1]))
|
shift_cursor(cursor_pos[0], -(end_of_input[1] - cursor_pos[1]))
|
||||||
r.cursor_row_offset = cursor_pos[1]
|
r.cursor_row_offset = cursor_pos[1]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user