# HG changeset patch # User Bram Moolenaar # Date 1560955505 -7200 # Node ID 3c0efdd95f8df481ad1a87131747f4e7f77bd662 # Parent 79404044c9e30fd0f007a70b241a8ed192e5340a patch 8.1.1570: icon signs not displayed properly in the number column commit https://github.com/vim/vim/commit/4dff4aed09d2b0d570ca0d19de9cb08bdf03e695 Author: Bram Moolenaar Date: Wed Jun 19 16:31:28 2019 +0200 patch 8.1.1570: icon signs not displayed properly in the number column Problem: Icon signs not displayed properly in the number column. Solution: Display them properly. (Yegappan Lakshmanan, closes https://github.com/vim/vim/issues/4559) diff --git a/src/gui.c b/src/gui.c --- a/src/gui.c +++ b/src/gui.c @@ -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 --- 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 --- 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 --- 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,