summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-06-19 16:31:28 +0200
committerBram Moolenaar <Bram@vim.org>2019-06-19 16:31:28 +0200
commit4dff4aed09d2b0d570ca0d19de9cb08bdf03e695 (patch)
treef5766d4cd30da11862e47d4ebda66eb546b77392
parentbf8c3adef21c24a9bf2c1a93042a096ea8d8b2e1 (diff)
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.c12
-rw-r--r--src/screen.c26
-rw-r--r--src/testdir/test_signs.vim2
-rw-r--r--src/version.c2
4 files changed, 34 insertions, 8 deletions
diff --git a/src/gui.c b/src/gui.c
index a4673f0266..5689182277 100644
--- 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
index 914bf37c3a..05639c30b7 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 1435e8683e..c979804a80 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 7e97f9147b..d71b86e13f 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,