]> granicus.if.org Git - vim/commitdiff
patch 9.0.0148: a "below" aligned text property gets 'showbreak' displayed v9.0.0148
authorBram Moolenaar <Bram@vim.org>
Fri, 5 Aug 2022 20:39:30 +0000 (21:39 +0100)
committerBram Moolenaar <Bram@vim.org>
Fri, 5 Aug 2022 20:39:30 +0000 (21:39 +0100)
Problem:    A "below" aligned text property gets 'showbreak' displayed.
Solution:   Do not use 'showbreak' before or in virtual text. (issue #10851)

src/drawline.c
src/testdir/test_textprop.vim
src/version.c

index 47b8cdc94b3e8e8fa0832fc7e24f675a9586b6d6..9e03b38a725a393f9af4fab49fc719c3ead748c4 100644 (file)
@@ -392,6 +392,7 @@ win_line(
 #ifdef FEAT_LINEBREAK
     int                need_showbreak = FALSE; // overlong line, skipping first x
                                        // chars
+    int                dont_use_showbreak = FALSE;  // do not use 'showbreak'
 #endif
 #if defined(FEAT_SIGNS) || defined(FEAT_QUICKFIX) \
        || defined(FEAT_SYN_HL) || defined(FEAT_DIFF)
@@ -1567,7 +1568,15 @@ win_line(
                            if (*ptr == NUL)
                                // don't combine char attr after EOL
                                text_prop_flags &= ~PT_FLAG_COMBINE;
-
+#ifdef FEAT_LINEBREAK
+                           if (below || right)
+                           {
+                               // no 'showbreak' before "below" text property
+                               // or after "right" text property
+                               need_showbreak = FALSE;
+                               dont_use_showbreak = TRUE;
+                           }
+#endif
                            // Keep in sync with where
                            // textprop_size_after_trunc() is called in
                            // win_lbr_chartabsize().
@@ -3441,9 +3450,11 @@ win_line(
            n_extra = 0;
            lcs_prec_todo = wp->w_lcs_chars.prec;
 #ifdef FEAT_LINEBREAK
+           if (!dont_use_showbreak
 # ifdef FEAT_DIFF
-           if (filler_todo <= 0)
+                   && filler_todo <= 0
 # endif
+              )
                need_showbreak = TRUE;
 #endif
 #ifdef FEAT_DIFF
index 311de947fbbc9a51a2deb5bc3041c16a5c110f3a..9bb37135ea8f2553dced7af2716d73441dda1be1 100644 (file)
@@ -2311,6 +2311,7 @@ func Test_props_with_text_after()
   CheckRunVimInTerminal
 
   let lines =<< trim END
+      set showbreak=+++
       call setline(1, 'some text here and other text there')
       call prop_type_add('rightprop', #{highlight: 'ErrorMsg'})
       call prop_type_add('afterprop', #{highlight: 'Search'})
index fcee2220c44e294e28a0acd4cba4a799f3ae6855..e32b8095d7013701483011c9a7cce73264ac6e32 100644 (file)
@@ -735,6 +735,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    148,
 /**/
     147,
 /**/