mirror of
https://github.com/fish-shell/fish-shell
synced 2025-01-12 13:08:49 +00:00
Fixes behavior of 'x' in normal mode
After 'x' is used to delete a character at the end of a line the cursor should be repositioned at the last character, i.e. repeatedly pressing 'x' in normal mode should delete the entire string.
This commit is contained in:
parent
1fbcb1ee9d
commit
e2ed561264
3 changed files with 16 additions and 0 deletions
|
@ -2746,6 +2746,9 @@ const wchar_t *reader_readline(int nchars) {
|
||||||
if (el->position < el->size()) {
|
if (el->position < el->size()) {
|
||||||
update_buff_pos(el, el->position + 1);
|
update_buff_pos(el, el->position + 1);
|
||||||
remove_backward();
|
remove_backward();
|
||||||
|
if (el->position > 0 && el->position == el->size()) {
|
||||||
|
update_buff_pos(el, el->position - 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,6 +92,18 @@ expect_prompt -re {\r\nTAXT\r\n} {
|
||||||
puts stderr "vi mode replace char, default timeout: long delay"
|
puts stderr "vi mode replace char, default timeout: long delay"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Test deleting characters with 'x'.
|
||||||
|
send "echo MORE-TEXT"
|
||||||
|
send "\033"
|
||||||
|
# Delay needed to allow fish to transition to vi "normal" mode.
|
||||||
|
sleep 0.150
|
||||||
|
send "xxxxx\r"
|
||||||
|
expect_prompt -re {\r\nMORE\r\n} {
|
||||||
|
puts "vi mode delete char, default timeout: long delay"
|
||||||
|
} unmatched {
|
||||||
|
puts stderr "vi mode delete char, default timeout: long delay"
|
||||||
|
}
|
||||||
|
|
||||||
# Verify that changing the escape timeout has an effect.
|
# Verify that changing the escape timeout has an effect.
|
||||||
send "set -g fish_escape_delay_ms 200\r"
|
send "set -g fish_escape_delay_ms 200\r"
|
||||||
expect_prompt
|
expect_prompt
|
||||||
|
|
|
@ -5,6 +5,7 @@ prime vi mode, default timeout
|
||||||
vi-mode default timeout set correctly
|
vi-mode default timeout set correctly
|
||||||
vi replace line, default timeout: long delay
|
vi replace line, default timeout: long delay
|
||||||
vi mode replace char, default timeout: long delay
|
vi mode replace char, default timeout: long delay
|
||||||
|
vi mode delete char, default timeout: long delay
|
||||||
vi replace line, 100ms timeout: long delay
|
vi replace line, 100ms timeout: long delay
|
||||||
vi replace line, 100ms timeout: short delay
|
vi replace line, 100ms timeout: short delay
|
||||||
t-binding success
|
t-binding success
|
||||||
|
|
Loading…
Reference in a new issue