mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
updated for version 7.2.355
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)
This commit is contained in:
11
src/move.c
11
src/move.c
@@ -889,6 +889,7 @@ validate_cursor_col()
|
|||||||
{
|
{
|
||||||
colnr_T off;
|
colnr_T off;
|
||||||
colnr_T col;
|
colnr_T col;
|
||||||
|
int width;
|
||||||
|
|
||||||
validate_virtcol();
|
validate_virtcol();
|
||||||
if (!(curwin->w_valid & VALID_WCOL))
|
if (!(curwin->w_valid & VALID_WCOL))
|
||||||
@@ -896,15 +897,14 @@ validate_cursor_col()
|
|||||||
col = curwin->w_virtcol;
|
col = curwin->w_virtcol;
|
||||||
off = curwin_col_off();
|
off = curwin_col_off();
|
||||||
col += off;
|
col += off;
|
||||||
|
width = W_WIDTH(curwin) - off + curwin_col_off2();
|
||||||
|
|
||||||
/* long line wrapping, adjust curwin->w_wrow */
|
/* long line wrapping, adjust curwin->w_wrow */
|
||||||
if (curwin->w_p_wrap
|
if (curwin->w_p_wrap
|
||||||
&& col >= (colnr_T)W_WIDTH(curwin)
|
&& col >= (colnr_T)W_WIDTH(curwin)
|
||||||
&& W_WIDTH(curwin) - off + curwin_col_off2() > 0)
|
&& width > 0)
|
||||||
{
|
/* use same formula as what is used in curs_columns() */
|
||||||
col -= W_WIDTH(curwin);
|
col -= ((col - W_WIDTH(curwin)) / width + 1) * width;
|
||||||
col = col % (W_WIDTH(curwin) - off + curwin_col_off2());
|
|
||||||
}
|
|
||||||
if (col > (int)curwin->w_leftcol)
|
if (col > (int)curwin->w_leftcol)
|
||||||
col -= curwin->w_leftcol;
|
col -= curwin->w_leftcol;
|
||||||
else
|
else
|
||||||
@@ -1041,6 +1041,7 @@ curs_columns(scroll)
|
|||||||
/* long line wrapping, adjust curwin->w_wrow */
|
/* long line wrapping, adjust curwin->w_wrow */
|
||||||
if (curwin->w_wcol >= W_WIDTH(curwin))
|
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;
|
n = (curwin->w_wcol - W_WIDTH(curwin)) / width + 1;
|
||||||
curwin->w_wcol -= n * width;
|
curwin->w_wcol -= n * width;
|
||||||
curwin->w_wrow += n;
|
curwin->w_wrow += n;
|
||||||
|
@@ -681,6 +681,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
355,
|
||||||
/**/
|
/**/
|
||||||
354,
|
354,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user