From 253ea70e526e0e7200c2add0a0c043d892361719 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Wed, 3 Feb 2010 17:40:39 +0000 Subject: [PATCH] [7.2.355] Computing the cursor column in validate_cursor_col() is wrong when Problem: Computing the cursor column in validate_cursor_col() is wrong when line numbers are used and 'n' is not in 'cpoptions', causing the popup menu to be positioned wrong. Solution: Correctly use the offset. (partly by Dominique Pelle) Patch 7.2.355 --- src/move.c | 11 ++++++----- src/version.c | 2 ++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/move.c b/src/move.c index 26ff3bf4..ad1f4d61 100644 --- a/src/move.c +++ b/src/move.c @@ -889,6 +889,7 @@ validate_cursor_col() { colnr_T off; colnr_T col; + int width; validate_virtcol(); if (!(curwin->w_valid & VALID_WCOL)) @@ -896,15 +897,14 @@ validate_cursor_col() col = curwin->w_virtcol; off = curwin_col_off(); col += off; + width = W_WIDTH(curwin) - off + curwin_col_off2(); /* long line wrapping, adjust curwin->w_wrow */ if (curwin->w_p_wrap && col >= (colnr_T)W_WIDTH(curwin) - && W_WIDTH(curwin) - off + curwin_col_off2() > 0) - { - col -= W_WIDTH(curwin); - col = col % (W_WIDTH(curwin) - off + curwin_col_off2()); - } + && width > 0) + /* use same formula as what is used in curs_columns() */ + col -= ((col - W_WIDTH(curwin)) / width + 1) * width; if (col > (int)curwin->w_leftcol) col -= curwin->w_leftcol; else @@ -1041,6 +1041,7 @@ curs_columns(scroll) /* long line wrapping, adjust curwin->w_wrow */ if (curwin->w_wcol >= W_WIDTH(curwin)) { + /* this same formula is used in validate_cursor_col() */ n = (curwin->w_wcol - W_WIDTH(curwin)) / width + 1; curwin->w_wcol -= n * width; curwin->w_wrow += n; diff --git a/src/version.c b/src/version.c index bee0e2a1..91ae2ec9 100644 --- a/src/version.c +++ b/src/version.c @@ -682,6 +682,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 355, +/**/ 354, /**/ 353, -- 2.11.4.GIT