mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:8.2.1976: cannot backspace in prompt buffer after using cursor-left
Problem: Cannot backspace in prompt buffer after using cursor-left. (Maxim
Kim)
Solution: Ignore "arrow_used" in a prompt buffer. (closes vim/vim#7281)
6f6244855f
cmdchar_todo wasn't adapted properly for Nvim's state system, which caused it to
be a dead store and such was removed in #11900.
Re-introduce cmdchar_todo properly.
This commit is contained in:
parent
a128b64e73
commit
c2d0a1041e
@ -227,6 +227,7 @@ typedef struct insert_state {
|
||||
cmdarg_T *ca;
|
||||
int mincol;
|
||||
int cmdchar;
|
||||
int cmdchar_todo; // cmdchar to handle once in init_prompt
|
||||
int startln;
|
||||
long count;
|
||||
int c;
|
||||
@ -290,6 +291,7 @@ static void insert_enter(InsertState *s)
|
||||
s->did_backspace = true;
|
||||
s->old_topfill = -1;
|
||||
s->replaceState = REPLACE;
|
||||
s->cmdchar_todo = s->cmdchar;
|
||||
// Remember whether editing was restarted after CTRL-O
|
||||
did_restart_edit = restart_edit;
|
||||
// sleep before redrawing, needed for "CTRL-O :" that results in an
|
||||
@ -585,7 +587,8 @@ static int insert_check(VimState *state)
|
||||
}
|
||||
|
||||
if (bt_prompt(curbuf)) {
|
||||
init_prompt(s->cmdchar);
|
||||
init_prompt(s->cmdchar_todo);
|
||||
s->cmdchar_todo = NUL;
|
||||
}
|
||||
|
||||
// If we inserted a character at the last position of the last line in the
|
||||
@ -8268,7 +8271,7 @@ static bool ins_bs(int c, int mode, int *inserted_space_p)
|
||||
|| (!revins_on
|
||||
&& ((curwin->w_cursor.lnum == 1 && curwin->w_cursor.col == 0)
|
||||
|| (!can_bs(BS_START)
|
||||
&& (arrow_used
|
||||
&& ((arrow_used && !bt_prompt(curbuf))
|
||||
|| (curwin->w_cursor.lnum == Insstart_orig.lnum
|
||||
&& curwin->w_cursor.col <= Insstart_orig.col)))
|
||||
|| (!can_bs(BS_INDENT) && !arrow_used && ai_col > 0
|
||||
|
@ -126,6 +126,14 @@ func Test_prompt_garbage_collect()
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
func Test_prompt_backspace()
|
||||
new
|
||||
set buftype=prompt
|
||||
call feedkeys("A123456\<Left>\<BS>\<Esc>", 'xt')
|
||||
call assert_equal('% 12346', getline(1))
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
" Test for editing the prompt buffer
|
||||
func Test_prompt_buffer_edit()
|
||||
new
|
||||
|
Loading…
Reference in New Issue
Block a user