Mercurial > vim
changeset 17141:3c0efdd95f8d v8.1.1570
patch 8.1.1570: icon signs not displayed properly in the number column
commit https://github.com/vim/vim/commit/4dff4aed09d2b0d570ca0d19de9cb08bdf03e695
Author: Bram Moolenaar <Bram@vim.org>
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)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 19 Jun 2019 16:45:05 +0200 |
parents | 79404044c9e3 |
children | c74374576448 |
files | src/gui.c src/screen.c src/testdir/test_signs.vim src/version.c |
diffstat | 4 files changed, 34 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- 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; }
--- 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; }
--- 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