Patch 9.0.0157
Problem:    'showbreak' displayed below truncated "after" text prop.
Solution:   Suppress 'showbreak' when "after" prop doesn't wrap.
Files:      src/drawline.c, src/charset.c, src/testdir/test_textprop.vim
            src/testdir/dumps/Test_prop_with_text_after_below_trunc_1.dump


*** ../vim-9.0.0156/src/drawline.c      2022-08-06 17:38:47.120785704 +0100
--- src/drawline.c      2022-08-06 21:02:37.982653209 +0100
***************
*** 1722,1728 ****
                                // 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
--- 1722,1728 ----
                                // don't combine char attr after EOL
                                text_prop_flags &= ~PT_FLAG_COMBINE;
  #ifdef FEAT_LINEBREAK
!                           if (below || right || !wrap)
                            {
                                // no 'showbreak' before "below" text property
                                // or after "right" text property
*** ../vim-9.0.0156/src/charset.c       2022-08-05 20:25:46.666888629 +0100
--- src/charset.c       2022-08-06 21:03:03.034657907 +0100
***************
*** 1094,1099 ****
--- 1094,1100 ----
      int               tab_corr = (*s == TAB);
      int               n;
      char_u    *sbr;
+     int               no_sbr = FALSE;
  #endif
  
  #if defined(FEAT_PROP_POPUP)
***************
*** 1155,1161 ****
                    if (tp->tp_col == MAXCOL)
                    {
                        int below = (tp->tp_flags & TP_FLAG_ALIGN_BELOW);
!                       int     wrap = (tp->tp_flags & TP_FLAG_WRAP);
                        int len = (int)STRLEN(p);
                        int n_used = len;
  
--- 1156,1162 ----
                    if (tp->tp_col == MAXCOL)
                    {
                        int below = (tp->tp_flags & TP_FLAG_ALIGN_BELOW);
!                       int wrap = (tp->tp_flags & TP_FLAG_WRAP);
                        int len = (int)STRLEN(p);
                        int n_used = len;
  
***************
*** 1168,1173 ****
--- 1169,1177 ----
                        // "after"
                        if (below)
                            cells += wp->w_width - (vcol + size) % wp->w_width;
+ #ifdef FEAT_LINEBREAK
+                       no_sbr = TRUE;  // don't use 'showbreak' now
+ #endif
                    }
                    cts->cts_cur_text_width += cells;
                    size += cells;
***************
*** 1242,1248 ****
       * Do not use 'showbreak' at the NUL after the text.
       */
      added = 0;
!     sbr = c == NUL ? empty_option : get_showbreak_value(wp);
      if ((*sbr != NUL || wp->w_p_bri) && wp->w_p_wrap && vcol != 0)
      {
        colnr_T sbrlen = 0;
--- 1246,1252 ----
       * Do not use 'showbreak' at the NUL after the text.
       */
      added = 0;
!     sbr = (c == NUL || no_sbr) ? empty_option : get_showbreak_value(wp);
      if ((*sbr != NUL || wp->w_p_bri) && wp->w_p_wrap && vcol != 0)
      {
        colnr_T sbrlen = 0;
*** ../vim-9.0.0156/src/testdir/test_textprop.vim       2022-08-06 
17:38:47.120785704 +0100
--- src/testdir/test_textprop.vim       2022-08-06 21:01:25.662636728 +0100
***************
*** 2336,2341 ****
--- 2336,2370 ----
    call delete('XscriptPropsWithTextAfter')
  endfunc
  
+ func Test_props_with_text_after_below_trunc()
+   CheckRunVimInTerminal
+ 
+   let lines =<< trim END
+       vim9script
+       edit foobar
+       set showbreak=+++
+       setline(1, ['onasdf asdf asdf asdf asd fas df', 'two'])
+       prop_type_add('test', {highlight: 'Special'})
+       prop_add(1, 0, {
+           type: 'test',
+           text: 'the quick brown fox jumps over the lazy dog',
+           text_align: 'after'
+       })
+       prop_add(1, 0, {
+           type: 'test',
+           text: 'the quick brown fox jumps over the lazy dog',
+           text_align: 'below'
+       })
+       normal G$
+   END
+   call writefile(lines, 'XscriptPropsAfterTrunc')
+   let buf = RunVimInTerminal('-S XscriptPropsAfterTrunc', #{rows: 8, cols: 
60})
+   call VerifyScreenDump(buf, 'Test_prop_with_text_after_below_trunc_1', {})
+ 
+   call StopVimInTerminal(buf)
+   call delete('XscriptPropsAfterTrunc')
+ endfunc
+ 
  func Test_props_with_text_after_joined()
    CheckRunVimInTerminal
  
*** 
../vim-9.0.0156/src/testdir/dumps/Test_prop_with_text_after_below_trunc_1.dump  
    2022-08-06 21:03:17.926660469 +0100
--- src/testdir/dumps/Test_prop_with_text_after_below_trunc_1.dump      
2022-08-06 21:01:29.582637738 +0100
***************
*** 0 ****
--- 1,8 ----
+ |o+0&#ffffff0|n|a|s|d|f| |a|s|d|f| |a|s|d|f| |a|s|d|f| |a|s|d| |f|a|s| 
|d|f|t+0#e000e06&|h|e| |q|u|i|c|k| |b|r|o|w|n| |f|o|x| |j|u|m|p|s| |o|…
+ |t|h|e| |q|u|i|c|k| |b|r|o|w|n| |f|o|x| |j|u|m|p|s| |o|v|e|r| |t|h|e| 
|l|a|z|y| |d|o|g| +0#0000000&@16
+ |t|w>o| @56
+ |~+0#4040ff13&| @58
+ |~| @58
+ |~| @58
+ |~| @58
+ |"+0#0000000&|f|o@1|b|a|r|"| |[|N|e|w|]| @27|2|,|3| @10|A|l@1| 
*** ../vim-9.0.0156/src/version.c       2022-08-06 18:12:02.966750593 +0100
--- src/version.c       2022-08-06 20:36:47.466841838 +0100
***************
*** 737,738 ****
--- 737,740 ----
  {   /* Add new patch number below this line */
+ /**/
+     157,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
260. Co-workers have to E-mail you about the fire alarm to get
     you out of the building.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///                                                                      \\\
\\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/20220806200423.9942E1C0F2E%40moolenaar.net.

Raspunde prin e-mail lui