Mercurial > vim
changeset 30781:82fd47d71971 v9.0.0725
patch 9.0.0725: virtual text "after" wraps to next line when 'wrap' is off
Commit: https://github.com/vim/vim/commit/7e017461e21ac534f8a0d59c1165d11358c69d87
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Oct 11 21:02:09 2022 +0100
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)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 11 Oct 2022 22:15:03 +0200 |
parents | 807248283844 |
children | fe19e25c311a |
files | src/drawline.c src/testdir/dumps/Test_text_after_nowrap_5.dump src/testdir/test_textprop.vim src/version.c |
diffstat | 4 files changed, 35 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/drawline.c +++ b/src/drawline.c @@ -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;
new file mode 100644 --- /dev/null +++ b/src/testdir/dumps/Test_text_after_nowrap_5.dump @@ -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|
--- a/src/testdir/test_textprop.vim +++ b/src/testdir/test_textprop.vim @@ -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