neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 0c91cb4f03814bfdfe262c6d2693c6883c38719b
parent 7485fd0518557f7f49f9b636a80e4e3b523dd9dd
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Mon, 21 Aug 2023 06:11:23 +0800

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

Diffstat:
Mruntime/doc/motion.txt | 3++-
Msrc/nvim/normal.c | 2+-
Mtest/old/testdir/test_normal.vim | 10+++++++---
3 files changed, 10 insertions(+), 5 deletions(-)

diff --git 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 @@ -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 @@ -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