forked from aniani/vim
patch 9.0.0725: virtual text "after" wraps to next line when 'wrap' is off
Problem: Virtual text "after" wraps to next line even when 'wrap' is off and 'list' is set. Solution: Do not use the minimum width when 'wrap' is off. (issue #11336)
This commit is contained in:
@@ -583,8 +583,9 @@ textprop_size_after_trunc(
|
||||
int strsize = 0;
|
||||
int n_used;
|
||||
|
||||
// if the remaining size is to small wrap anyway and use the next line
|
||||
if (space < PROP_TEXT_MIN_CELLS)
|
||||
// if the remaining size is to small and 'wrap' is set we wrap anyway and
|
||||
// use the next line
|
||||
if (space < PROP_TEXT_MIN_CELLS && wp->w_p_wrap)
|
||||
space += wp->w_width;
|
||||
if (flags & (TP_FLAG_ALIGN_BELOW | TP_FLAG_ALIGN_ABOVE))
|
||||
space -= padding;
|
||||
@@ -658,7 +659,8 @@ text_prop_position(
|
||||
? (col_with_padding <= col_off || !wp->w_p_wrap)
|
||||
: (n_used < *n_extra)))
|
||||
{
|
||||
if (right && (wrap || room < PROP_TEXT_MIN_CELLS))
|
||||
if (right && (wrap
|
||||
|| (room < PROP_TEXT_MIN_CELLS && wp->w_p_wrap)))
|
||||
{
|
||||
// right-align on next line instead of wrapping if possible
|
||||
before = wp->w_width - col_off - strsize + room;
|
||||
|
8
src/testdir/dumps/Test_text_after_nowrap_5.dump
Normal file
8
src/testdir/dumps/Test_text_after_nowrap_5.dump
Normal file
@@ -0,0 +1,8 @@
|
||||
|f+0&#ffffff0|i|r|s|t| |l|i|n|e|$+0#4040ff13&| +0#0000000&@1|j+0&#ffd7ff255|u|s|t| |a|f|t|e|r| |t|x|t| |j|u|s|t| |a|f|t|e|r| |t|x|t| |j|u|s|t| |a|f|t|e|r| |t|x|t| | +0&#ffffff0|i+0&#ffd7ff255
|
||||
>0+0&#ffffff0| |1| |2| |3| |4| |5| |6| |7| |8| |9| |1|0| |1@1| |1|2| |1|3| |1|4| |1|5| |1|6| |1|7| |1|8| |1|9| |2|0| |2|1| |2@1| |2
|
||||
|t|h|i|r|d|$+0#4040ff13&| +0#0000000&@53
|
||||
|f|o|u|r|t|h|$+0#4040ff13&| +0#0000000&@52
|
||||
|~+0#4040ff13&| @58
|
||||
|~| @58
|
||||
|~| @58
|
||||
|:+0#0000000&|c|a|l@1| |C|h|a|n|g|e|T|e|x|t|(|)| @23|2|,|1| @10|A|l@1|
|
@@ -3289,6 +3289,22 @@ func Test_text_after_nowrap()
|
||||
text_padding_left: 1,
|
||||
})
|
||||
normal 2Gw
|
||||
def g:ChangeText()
|
||||
prop_clear(1)
|
||||
set list
|
||||
prop_add(1, 0, {
|
||||
type: 'theprop',
|
||||
text: 'just after txt '->repeat(3),
|
||||
text_align: 'after',
|
||||
text_padding_left: 2,
|
||||
})
|
||||
prop_add(1, 0, {
|
||||
type: 'theprop',
|
||||
text: 'in the middle '->repeat(4),
|
||||
text_align: 'after',
|
||||
text_padding_left: 1,
|
||||
})
|
||||
enddef
|
||||
END
|
||||
call writefile(lines, 'XTextAfterNowrap', 'D')
|
||||
let buf = RunVimInTerminal('-S XTextAfterNowrap', #{rows: 8, cols: 60})
|
||||
@@ -3303,6 +3319,10 @@ func Test_text_after_nowrap()
|
||||
call term_sendkeys(buf, "$")
|
||||
call VerifyScreenDump(buf, 'Test_text_after_nowrap_4', {})
|
||||
|
||||
call term_sendkeys(buf, "0")
|
||||
call term_sendkeys(buf, ":call ChangeText()\<CR>")
|
||||
call VerifyScreenDump(buf, 'Test_text_after_nowrap_5', {})
|
||||
|
||||
call StopVimInTerminal(buf)
|
||||
endfunc
|
||||
|
||||
|
@@ -699,6 +699,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
725,
|
||||
/**/
|
||||
724,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user