]> granicus.if.org Git - vim/commitdiff
patch 9.0.0442: virtual text "above" doesn't handel line numbers v9.0.0442
authorBram Moolenaar <Bram@vim.org>
Sun, 11 Sep 2022 12:31:01 +0000 (13:31 +0100)
committerBram Moolenaar <Bram@vim.org>
Sun, 11 Sep 2022 12:31:01 +0000 (13:31 +0100)
Problem:    Virtual text "above" doesn't handel line numbers.
Solution:   Take the left column offset into account. (issue #11084)
            Also make padding work.

src/drawline.c
src/testdir/dumps/Test_prop_with_text_above_1.dump
src/testdir/dumps/Test_prop_with_text_above_2.dump
src/testdir/dumps/Test_prop_with_text_above_3.dump
src/testdir/dumps/Test_prop_with_text_above_4.dump [new file with mode: 0644]
src/testdir/test_textprop.vim
src/version.c

index 56d42e2a7fb838c17e21913b6002580f69f97f39..7f9660349b0c9296354b0da582564afca5bfadd2 100644 (file)
@@ -350,7 +350,7 @@ text_prop_position(
        if (above)
        {
            before = 0;
-           after = wp->w_width - cells;
+           after = wp->w_width - cells - win_col_off(wp) - padding;
        }
        else
        {
@@ -436,6 +436,8 @@ text_prop_position(
                *p_extra = l;
                *n_extra = n_used + before + after + padding;
                *n_attr = mb_charlen(*p_extra);
+               if (above)
+                   *n_attr -= padding;
                *n_attr_skip = before + padding + col_off;
            }
        }
@@ -1858,8 +1860,8 @@ win_line(
                                dont_use_showbreak = TRUE;
                            }
 #endif
-                           if ((right || above || below || !wrap || padding > 0)
-                                                           && wp->w_width > 2)
+                           if ((right || above || below || !wrap
+                                           || padding > 0) && wp->w_width > 2)
                            {
                                char_u  *prev_p_extra = wlv.p_extra;
                                int     start_line;
index cc68f5e50cc0c000303cfeeb94d1cac76f527798..6f2b09d616018a4c3f689b340a235e65ec0d705d 100644 (file)
@@ -2,7 +2,7 @@
 |s+0&#ffd7ff255|e|c|o|n|d| |t|h|i|n|g| |a|b|o|v|e| @41
 |o+0&#ffffff0|n|e| |t|w|o| @52
 |t|h|r>e@1| |f|o|u|r| @49
-|a+0&#ffff4012|n|o|t|h|e|r| |t|h|i|n|g| @46
+@3|a+0&#ffff4012|n|o|t|h|e|r| |t|h|i|n|g| @43
 |f+0&#ffffff0|i|v|e| |s|i|x| @51
 |~+0#4040ff13&| @58
 |~| @58
index 7f45faf118d5d36a48d764fa736264e364392960..7c84c73c4969cc39fcf5ff59e2d6ef30d4482d5b 100644 (file)
@@ -2,7 +2,7 @@
 |s+0&#ffd7ff255|e|c|o|n|d| |t|h|i|n|g| |a|b|o|v|e| @41
 >o+0&#ffffff0|n|e| |t|w|o| @52
 |t|h|r|e@1| |f|o|u|r| @49
-|a+0&#ffff4012|n|o|t|h|e|r| |t|h|i|n|g| @46
+@3|a+0&#ffff4012|n|o|t|h|e|r| |t|h|i|n|g| @43
 |f+0&#ffffff0|i|v|e| |s|i|x| @51
 |~+0#4040ff13&| @58
 |~| @58
index 8a4b1d491746e90641fca08db4659fa73bfb3db4..a7277c2e3787c0361a516ccb7bf36ac262da787c 100644 (file)
@@ -2,7 +2,7 @@
 |s+0&#ffd7ff255|e|c|o|n|d| |t|h|i|n|g| |a|b|o|v|e| @41
 |i+0&#ffffff0|n|s|e|r|t|e|d> |o|n|e| |t|w|o| @43
 |t|h|r|e@1| |f|o|u|r| @49
-|a+0&#ffff4012|n|o|t|h|e|r| |t|h|i|n|g| @46
+@3|a+0&#ffff4012|n|o|t|h|e|r| |t|h|i|n|g| @43
 |f+0&#ffffff0|i|v|e| |s|i|x| @51
 |~+0#4040ff13&| @58
 |~| @58
diff --git a/src/testdir/dumps/Test_prop_with_text_above_4.dump b/src/testdir/dumps/Test_prop_with_text_above_4.dump
new file mode 100644 (file)
index 0000000..1ab0b69
--- /dev/null
@@ -0,0 +1,9 @@
+| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|1| |f+0#0000000#ffff4012|i|r|s|t| |t|h|i|n|g| |a|b|o|v|e| @36
+| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|s+0#0000000#ffd7ff255|e|c|o|n|d| |t|h|i|n|g| |a|b|o|v|e| @35
+| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|i+0#0000000&|n|s|e|r|t|e|d> |o|n|e| |t|w|o| @37
+| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|2| |t+0#0000000&|h|r|e@1| |f|o|u|r| @43
+| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@1|3| | +0#0000000&@2|a+0&#ffff4012|n|o|t|h|e|r| |t|h|i|n|g| @37
+| +0#0000e05#a8a8a8255@1| +0#af5f00255#ffffff0@3|f+0#0000000&|i|v|e| |s|i|x| @45
+|~+0#4040ff13&| @58
+|~| @58
+| +0#0000000&@41|1|,|9|-|1@1|7| @6|A|l@1| 
index f97772ce63e9e067276e3fc0e57a8027209fd1fb..6e3ca3b1d1bab4f340579aa920a71b3661cc7201 100644 (file)
@@ -2857,7 +2857,7 @@ func Test_props_with_text_above()
       call prop_type_add('above2', #{highlight: 'DiffChange'})
       call prop_add(1, 0, #{type: 'above1', text: 'first thing above', text_align: 'above'})
       call prop_add(1, 0, #{type: 'above2', text: 'second thing above', text_align: 'above'})
-      call prop_add(3, 0, #{type: 'above1', text: 'another thing', text_align: 'above'})
+      call prop_add(3, 0, #{type: 'above1', text: 'another thing', text_align: 'above', text_padding_left: 3})
 
       normal gglllj
   END
@@ -2870,6 +2870,9 @@ func Test_props_with_text_above()
   call term_sendkeys(buf, "inserted \<Esc>")
   call VerifyScreenDump(buf, 'Test_prop_with_text_above_3', {})
 
+  call term_sendkeys(buf, ":set number signcolumn=yes\<CR>")
+  call VerifyScreenDump(buf, 'Test_prop_with_text_above_4', {})
+
   call StopVimInTerminal(buf)
 endfunc
 
index b7bc80a1f2ce0e5309c84bbeff4b2de4a8be766c..9d4f39be903874ae691a5c96ade8b2e0d9997d38 100644 (file)
@@ -703,6 +703,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    442,
 /**/
     441,
 /**/