diff options
author | Bram Moolenaar <Bram@vim.org> | 2014-08-29 14:20:51 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2014-08-29 14:20:51 +0200 |
commit | 773b158de8f813b0683fc56e37639937e5c9c1ee (patch) | |
tree | ff13a9c74f250e04676c428b18175db4cee5549c /src/normal.c | |
parent | d7408fa0ceb7bf414ca5c17f8ae3bc13131b7b15 (diff) | |
download | vim-git-773b158de8f813b0683fc56e37639937e5c9c1ee.tar.gz |
updated for version 7.4.425v7.4.425
Problem: When 'showbreak' is used "gj" may move to the wrong position.
(Nazri Ramliy)
Solution: Adjust virtcol when 'showbreak' is set. (Christian Brabandt)
Diffstat (limited to 'src/normal.c')
-rw-r--r-- | src/normal.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/normal.c b/src/normal.c index fc9e94480..7479ac789 100644 --- a/src/normal.c +++ b/src/normal.c @@ -4509,13 +4509,19 @@ nv_screengo(oap, dir, dist) #if defined(FEAT_LINEBREAK) || defined(FEAT_MBYTE) if (curwin->w_cursor.col > 0 && curwin->w_p_wrap) { + colnr_T virtcol; + /* * Check for landing on a character that got split at the end of the * last line. We want to advance a screenline, not end up in the same * screenline or move two screenlines. */ validate_virtcol(); - if (curwin->w_virtcol > curwin->w_curswant + virtcol = curwin->w_virtcol; + if (virtcol > (colnr_T)width1 && *p_sbr != NUL) + virtcol -= vim_strsize(p_sbr); + + if (virtcol > curwin->w_curswant && (curwin->w_curswant < (colnr_T)width1 ? (curwin->w_curswant > (colnr_T)width1 / 2) : ((curwin->w_curswant - width1) % width2 |