diff options
author | vimboss <devnull@localhost> | 2007-11-08 13:51:42 +0000 |
---|---|---|
committer | vimboss <devnull@localhost> | 2007-11-08 13:51:42 +0000 |
commit | 9f069b705a81135a3340c34d2ef999e8f3c5bee0 (patch) | |
tree | 76d41e16bb6a429647d5ea6eb130caf3476bb22f | |
parent | bae148facbe436077e19991661686044235934c9 (diff) | |
download | vim-9f069b705a81135a3340c34d2ef999e8f3c5bee0.tar.gz |
-rw-r--r-- | src/screen.c | 24 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 25 insertions, 1 deletions
diff --git a/src/screen.c b/src/screen.c index ed3a1c1d..5b361e9b 100644 --- a/src/screen.c +++ b/src/screen.c @@ -2599,6 +2599,7 @@ win_line(wp, lnum, startrow, endrow, nochange) int syntax_attr = 0; /* attributes desired by syntax */ int has_syntax = FALSE; /* this buffer has syntax highl. */ int save_did_emsg; + int eol_hl_off = 0; /* 1 if highlighted char after EOL */ #endif #ifdef FEAT_SPELL int has_spell = FALSE; /* this buffer has spell checking */ @@ -4312,6 +4313,10 @@ win_line(wp, lnum, startrow, endrow, nochange) { #ifdef FEAT_SEARCH_EXTRA long prevcol = (long)(ptr - line) - (c == NUL); + + /* we're not really at that column when skipping some text */ + if ((wp->w_p_wrap ? wp->w_skipcol : wp->w_leftcol) > prevcol) + ++prevcol; #endif /* invert at least one char, used for Visual and empty line or @@ -4408,11 +4413,20 @@ win_line(wp, lnum, startrow, endrow, nochange) ScreenAttrs[off] = char_attr; #ifdef FEAT_RIGHTLEFT if (wp->w_p_rl) + { --col; + --off; + } else #endif + { ++col; + ++off; + } ++vcol; +#ifdef FEAT_SYN_HL + eol_hl_off = 1; +#endif } } @@ -4422,6 +4436,14 @@ win_line(wp, lnum, startrow, endrow, nochange) if (c == NUL) { #ifdef FEAT_SYN_HL + if (eol_hl_off > 0 && vcol - eol_hl_off == (long)wp->w_virtcol) + { + /* highlight last char after line */ + --col; + --off; + --vcol; + } + /* Highlight 'cursorcolumn' past end of the line. */ if (wp->w_p_wrap) v = wp->w_skipcol; @@ -4432,7 +4454,7 @@ win_line(wp, lnum, startrow, endrow, nochange) vcol = v + col - win_col_off(wp); if (wp->w_p_cuc - && (int)wp->w_virtcol >= vcol + && (int)wp->w_virtcol >= vcol - eol_hl_off && (int)wp->w_virtcol < W_WIDTH(wp) * (row - startrow + 1) + v && lnum != wp->w_cursor.lnum diff --git a/src/version.c b/src/version.c index be8df81d..904e42f7 100644 --- a/src/version.c +++ b/src/version.c @@ -667,6 +667,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 152, +/**/ 151, /**/ 150, |