aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-08-21 06:11:23 +0800
committerzeertzjq <zeertzjq@outlook.com>2023-08-21 06:12:03 +0800
commit0c91cb4f03814bfdfe262c6d2693c6883c38719b (patch)
tree9ff51a7708101ad4607bb0a180bc88f70c2538b7
parent7485fd0518557f7f49f9b636a80e4e3b523dd9dd (diff)
downloadrneovim-0c91cb4f03814bfdfe262c6d2693c6883c38719b.tar.gz
rneovim-0c91cb4f03814bfdfe262c6d2693c6883c38719b.tar.bz2
rneovim-0c91cb4f03814bfdfe262c6d2693c6883c38719b.zip
vim-patch:9.0.1761: g<kEnd> behaves different from g<end>
Problem: g<kEnd> behaves different from g<end> Solution: Make g<kEnd> behave like g<End> closes: vim/vim#12861 https://github.com/vim/vim/commit/654bdbbd329e7267051cc2eb496bc52b66053081
-rw-r--r--runtime/doc/motion.txt3
-rw-r--r--src/nvim/normal.c2
-rw-r--r--test/old/testdir/test_normal.vim10
3 files changed, 10 insertions, 5 deletions
diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt
index a2f11d27ef..05244cde91 100644
--- a/runtime/doc/motion.txt
+++ b/runtime/doc/motion.txt
@@ -246,7 +246,8 @@ g$ When lines wrap ('wrap' on): To the last character of
instead of going to the end of the line.
When 'virtualedit' is enabled moves to the end of the
screen line.
- *g<End>*
+
+ *g<End>* *g<kEnd>*
g<End> Like |g$| but to the last non-blank character
instead of the last character.
diff --git a/src/nvim/normal.c b/src/nvim/normal.c
index 4a4b675591..e72a0fe385 100644
--- a/src/nvim/normal.c
+++ b/src/nvim/normal.c
@@ -5323,7 +5323,7 @@ static void nv_g_dollar_cmd(cmdarg_T *cap)
oparg_T *oap = cap->oap;
int i;
int col_off = curwin_col_off();
- const bool flag = cap->nchar == K_END;
+ const bool flag = cap->nchar == K_END || cap->nchar == K_KEND;
oap->motion_type = kMTCharWise;
oap->inclusive = true;
diff --git a/test/old/testdir/test_normal.vim b/test/old/testdir/test_normal.vim
index dbedddfed9..4eaab0d792 100644
--- a/test/old/testdir/test_normal.vim
+++ b/test/old/testdir/test_normal.vim
@@ -4118,20 +4118,24 @@ func Test_normal_click_on_double_width_char()
endfunc
func Test_normal33_g_cmd_nonblank()
- " Test that g$ goes to the last non-blank char and g<end> to the last
+ " Test that g<End> goes to the last non-blank char and g$ to the last
" visible column
20vnew
setlocal nowrap nonumber signcolumn=no
call setline(1, ['fooo fooo fooo fooo fooo fooo fooo fooo '])
- exe "normal 0g\<end>"
+ exe "normal 0g\<End>"
call assert_equal(11, col('.'))
normal 0g$
call assert_equal(20, col('.'))
+ exe "normal 0g\<kEnd>"
+ call assert_equal(11, col('.'))
setlocal wrap
- exe "normal 0g\<end>"
+ exe "normal 0g\<End>"
call assert_equal(11, col('.'))
normal 0g$
call assert_equal(20, col('.'))
+ exe "normal 0g\<kEnd>"
+ call assert_equal(11, col('.'))
bw!
endfunc