]> granicus.if.org Git - vim/commitdiff
patch 8.1.1712: signs in number column cause text to be misaligned v8.1.1712
authorBram Moolenaar <Bram@vim.org>
Thu, 18 Jul 2019 10:48:16 +0000 (12:48 +0200)
committerBram Moolenaar <Bram@vim.org>
Thu, 18 Jul 2019 10:48:16 +0000 (12:48 +0200)
Problem:    Signs in number column cause text to be misaligned.
Solution:   Improve alignment. (Yasuhiro Matsumoto, closes #4694)

src/screen.c
src/testdir/test_signs.vim
src/version.c

index 825b7ab0e8d3255b992eaec0ea293938e8f0484c..fdb1e0af5bd7041735c68a0c40a796b84d73a98a 100644 (file)
@@ -3120,8 +3120,13 @@ get_sign_display_info(
                {
                    if (nrcol)
                    {
-                       sprintf((char *)extra, "%*s ", number_width(wp),
-                                                               *pp_extra);
+                       int n, width = number_width(wp) - 2;
+
+                       for (n = 0; n < width; n++)
+                           extra[n] = ' ';
+                       extra[n] = 0;
+                       STRCAT(extra, *pp_extra);
+                       STRCAT(extra, " ");
                        *pp_extra = extra;
                    }
                    *c_extrap = NUL;
index 1b9a29d9fef0a0b766f6da3879b979f27766f16e..3d885d6428f931f0d3737a7be2a7c447b093d4a8 100644 (file)
@@ -1766,6 +1766,7 @@ func Test_sign_numcol()
   set number
   set signcolumn=number
   sign define sign1 text==>
+  sign define sign2 text=V
   sign place 10 line=1 name=sign1
   redraw!
   call assert_equal("=> 01234", s:ScreenLine(1, 1, 8))
@@ -1846,6 +1847,12 @@ func Test_sign_numcol()
   redraw!
   call assert_equal("=> 01234", s:ScreenLine(1, 1, 8))
   call assert_equal(" 2 abcde", s:ScreenLine(2, 1, 8))
+  " Add sign with multi-byte text
+  set numberwidth=4
+  sign place 40 line=2 name=sign2
+  redraw!
+  call assert_equal(" => 01234", s:ScreenLine(1, 1, 9))
+  call assert_equal(" V abcde", s:ScreenLine(2, 1, 9))
 
   sign unplace * group=*
   sign undefine sign1
index 6c6550b090de126b37d6b36b1942fdd8cf2d72f2..a6d1492e26d32a9150ca8f5a7bd7dda6da648ede 100644 (file)
@@ -777,6 +777,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1712,
 /**/
     1711,
 /**/