forked from aniani/vim
patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Problem: 'showbreak' displayed below truncated "after" text prop. Solution: Suppress 'showbreak' when "after" prop doesn't wrap.
This commit is contained in:
@@ -1094,6 +1094,7 @@ win_lbr_chartabsize(
|
|||||||
int tab_corr = (*s == TAB);
|
int tab_corr = (*s == TAB);
|
||||||
int n;
|
int n;
|
||||||
char_u *sbr;
|
char_u *sbr;
|
||||||
|
int no_sbr = FALSE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(FEAT_PROP_POPUP)
|
#if defined(FEAT_PROP_POPUP)
|
||||||
@@ -1155,7 +1156,7 @@ win_lbr_chartabsize(
|
|||||||
if (tp->tp_col == MAXCOL)
|
if (tp->tp_col == MAXCOL)
|
||||||
{
|
{
|
||||||
int below = (tp->tp_flags & TP_FLAG_ALIGN_BELOW);
|
int below = (tp->tp_flags & TP_FLAG_ALIGN_BELOW);
|
||||||
int wrap = (tp->tp_flags & TP_FLAG_WRAP);
|
int wrap = (tp->tp_flags & TP_FLAG_WRAP);
|
||||||
int len = (int)STRLEN(p);
|
int len = (int)STRLEN(p);
|
||||||
int n_used = len;
|
int n_used = len;
|
||||||
|
|
||||||
@@ -1168,6 +1169,9 @@ win_lbr_chartabsize(
|
|||||||
// "after"
|
// "after"
|
||||||
if (below)
|
if (below)
|
||||||
cells += wp->w_width - (vcol + size) % wp->w_width;
|
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;
|
cts->cts_cur_text_width += cells;
|
||||||
size += cells;
|
size += cells;
|
||||||
@@ -1242,7 +1246,7 @@ win_lbr_chartabsize(
|
|||||||
* Do not use 'showbreak' at the NUL after the text.
|
* Do not use 'showbreak' at the NUL after the text.
|
||||||
*/
|
*/
|
||||||
added = 0;
|
added = 0;
|
||||||
sbr = c == NUL ? empty_option : get_showbreak_value(wp);
|
sbr = (c == NUL || no_sbr) ? empty_option : get_showbreak_value(wp);
|
||||||
if ((*sbr != NUL || wp->w_p_bri) && wp->w_p_wrap && vcol != 0)
|
if ((*sbr != NUL || wp->w_p_bri) && wp->w_p_wrap && vcol != 0)
|
||||||
{
|
{
|
||||||
colnr_T sbrlen = 0;
|
colnr_T sbrlen = 0;
|
||||||
|
@@ -1722,7 +1722,7 @@ win_line(
|
|||||||
// don't combine char attr after EOL
|
// don't combine char attr after EOL
|
||||||
text_prop_flags &= ~PT_FLAG_COMBINE;
|
text_prop_flags &= ~PT_FLAG_COMBINE;
|
||||||
#ifdef FEAT_LINEBREAK
|
#ifdef FEAT_LINEBREAK
|
||||||
if (below || right)
|
if (below || right || !wrap)
|
||||||
{
|
{
|
||||||
// no 'showbreak' before "below" text property
|
// no 'showbreak' before "below" text property
|
||||||
// or after "right" text property
|
// or after "right" text property
|
||||||
|
@@ -0,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|
|
@@ -2336,6 +2336,35 @@ func Test_props_with_text_after()
|
|||||||
call delete('XscriptPropsWithTextAfter')
|
call delete('XscriptPropsWithTextAfter')
|
||||||
endfunc
|
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()
|
func Test_props_with_text_after_joined()
|
||||||
CheckRunVimInTerminal
|
CheckRunVimInTerminal
|
||||||
|
|
||||||
|
@@ -735,6 +735,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
157,
|
||||||
/**/
|
/**/
|
||||||
156,
|
156,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user