Mercurial > vim
diff src/misc2.c @ 18291:11f68eb58fda v8.1.2140
patch 8.1.2140: "gk" and "gj" do not work correctly in number column
Commit: https://github.com/vim/vim/commit/ceba3dd5187788e09f65bd41b07b40f6f9aab953
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Oct 12 16:12:54 2019 +0200
patch 8.1.2140: "gk" and "gj" do not work correctly in number column
Problem: "gk" and "gj" do not work correctly in number column.
Solution: Allow for a negative "curswant". (Zach Wegner, closes https://github.com/vim/vim/issues/4969)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 12 Oct 2019 16:15:03 +0200 |
parents | a81f0c936112 |
children | 506bf60a30a0 |
line wrap: on
line diff
--- a/src/misc2.c +++ b/src/misc2.c @@ -119,10 +119,11 @@ getvpos(pos_T *pos, colnr_T wcol) static int coladvance2( pos_T *pos, - int addspaces, /* change the text to achieve our goal? */ - int finetune, /* change char offset for the exact column */ - colnr_T wcol) /* column to move to */ + int addspaces, // change the text to achieve our goal? + int finetune, // change char offset for the exact column + colnr_T wcol_arg) // column to move to (can be negative) { + colnr_T wcol = wcol_arg; int idx; char_u *ptr; char_u *line; @@ -136,7 +137,7 @@ coladvance2( one_more = (State & INSERT) || restart_edit != NUL || (VIsual_active && *p_sel != 'o') - || ((ve_flags & VE_ONEMORE) && wcol < MAXCOL) ; + || ((ve_flags & VE_ONEMORE) && wcol < MAXCOL); line = ml_get_buf(curbuf, pos->lnum, FALSE); if (wcol >= MAXCOL) @@ -206,6 +207,7 @@ coladvance2( if (virtual_active() && addspaces + && wcol >= 0 && ((col != wcol && col != wcol + 1) || csize > 1)) { /* 'virtualedit' is set: The difference between wcol and col is @@ -305,7 +307,7 @@ coladvance2( if (has_mbyte) mb_adjustpos(curbuf, pos); - if (col < wcol) + if (wcol < 0 || col < wcol) return FAIL; return OK; }