diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-06-19 16:31:28 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-06-19 16:31:28 +0200 |
commit | 4dff4aed09d2b0d570ca0d19de9cb08bdf03e695 (patch) | |
tree | f5766d4cd30da11862e47d4ebda66eb546b77392 | |
parent | bf8c3adef21c24a9bf2c1a93042a096ea8d8b2e1 (diff) | |
download | vim-git-4dff4aed09d2b0d570ca0d19de9cb08bdf03e695.tar.gz |
patch 8.1.1570: icon signs not displayed properly in the number columnv8.1.1570
Problem: Icon signs not displayed properly in the number column.
Solution: Display them properly. (Yegappan Lakshmanan, closes #4559)
-rw-r--r-- | src/gui.c | 12 | ||||
-rw-r--r-- | src/screen.c | 26 | ||||
-rw-r--r-- | src/testdir/test_signs.vim | 2 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 34 insertions, 8 deletions
@@ -2253,6 +2253,7 @@ gui_outstr_nowrap( int col = gui.col; #ifdef FEAT_SIGN_ICONS int draw_sign = FALSE; + char_u extra[18]; # ifdef FEAT_NETBEANS_INTG int multi_sign = FALSE; # endif @@ -2275,10 +2276,17 @@ gui_outstr_nowrap( multi_sign = TRUE; # endif /* draw spaces instead */ - s = (char_u *)" "; + if (*curwin->w_p_scl == 'n' && *(curwin->w_p_scl + 1) == 'u' && + (curwin->w_p_nu || curwin->w_p_rnu)) + { + sprintf((char *)extra, "%*c ", number_width(curwin), ' '); + s = extra; + } + else + s = (char_u *)" "; if (len == 1 && col > 0) --col; - len = 2; + len = (int)STRLEN(s); draw_sign = TRUE; highlight_mask = 0; } diff --git a/src/screen.c b/src/screen.c index 914bf37c3..05639c30b 100644 --- a/src/screen.c +++ b/src/screen.c @@ -3088,15 +3088,31 @@ get_sign_display_info( if (gui.in_use && icon_sign != 0) { // Use the image in this position. - *c_extrap = SIGN_BYTE; - *c_finalp = NUL; + if (nrcol) + { + *c_extrap = NUL; + sprintf((char *)extra, "%-*c ", number_width(wp), SIGN_BYTE); + *pp_extra = extra; + *n_extrap = (int)STRLEN(*pp_extra); + } + else + *c_extrap = SIGN_BYTE; # ifdef FEAT_NETBEANS_INTG if (buf_signcount(wp->w_buffer, lnum) > 1) { - *c_extrap = MULTISIGN_BYTE; - *c_finalp = NUL; + if (nrcol) + { + *c_extrap = NUL; + sprintf((char *)extra, "%-*c ", number_width(wp), + MULTISIGN_BYTE); + *pp_extra = extra; + *n_extrap = (int)STRLEN(*pp_extra); + } + else + *c_extrap = MULTISIGN_BYTE; } # endif + *c_finalp = NUL; *char_attrp = icon_sign; } else @@ -3108,7 +3124,7 @@ get_sign_display_info( { if (nrcol) { - sprintf((char *)extra, "%-*s ", number_width(wp), + sprintf((char *)extra, "%*s ", number_width(wp), *pp_extra); *pp_extra = extra; } diff --git a/src/testdir/test_signs.vim b/src/testdir/test_signs.vim index 1435e8683..c979804a8 100644 --- a/src/testdir/test_signs.vim +++ b/src/testdir/test_signs.vim @@ -1776,7 +1776,7 @@ func Test_sign_numcol() " Enable number column. Check whether sign is displayed in the number column set number redraw! - call assert_equal("=> 01234", s:ScreenLine(1, 1, 9)) + call assert_equal(" => 01234", s:ScreenLine(1, 1, 9)) " Disable sign column. Make sure line number is displayed set signcolumn=no diff --git a/src/version.c b/src/version.c index 7e97f9147..d71b86e13 100644 --- a/src/version.c +++ b/src/version.c @@ -778,6 +778,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1570, +/**/ 1569, /**/ 1568, |