From 272c4fba8386ccc17706647c6b28fa70f43e1e66 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Sun, 3 Sep 2023 09:04:58 +0800 Subject: [PATCH] vim-patch:9.0.1852: i_CTRL-O does not reset Select Mode (#24990) Problem: i_CTRL-O does not reset Select Mode Solution: Reset select mode on CTRL-O in insert mode closes: vim/vim#13001 closes: vim/vim#12115 https://github.com/vim/vim/commit/d69aecf141ff05a645d02f39f1cbf6381ed7d0c0 Co-authored-by: pierreganty Co-authored-by: Christian Brabandt --- src/nvim/edit.c | 1 + test/old/testdir/test_selectmode.vim | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/nvim/edit.c b/src/nvim/edit.c index 88ed1e6cb4..06eb81be92 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -3579,6 +3579,7 @@ static void ins_insert(int replaceState) // Pressed CTRL-O in Insert mode. static void ins_ctrl_o(void) { + restart_VIsual_select = 0; if (State & VREPLACE_FLAG) { restart_edit = 'V'; } else if (State & REPLACE_FLAG) { diff --git a/test/old/testdir/test_selectmode.vim b/test/old/testdir/test_selectmode.vim index dd341d99d1..59a1deba65 100644 --- a/test/old/testdir/test_selectmode.vim +++ b/test/old/testdir/test_selectmode.vim @@ -312,4 +312,15 @@ func Test_selectmode_register() bw! endfunc +func Test_ins_ctrl_o_in_insert_mode_resets_selectmode() + new + " ctrl-o in insert mode resets restart_VIsual_select + call setline(1, 'abcdef') + call cursor(1, 1) + exe "norm! \\\c\\\\IABC" + call assert_equal('ABCbcdef', getline(1)) + + bwipe! +endfunc + " vim: shiftwidth=2 sts=2 expandtab