To: vim_dev@googlegroups.com Subject: Patch 9.0.0725 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 9.0.0725 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) Files: src/drawline.c, src/testdir/test_textprop.vim, src/testdir/dumps/Test_text_after_nowrap_5.dump *** ../vim-9.0.0724/src/drawline.c 2022-10-11 16:47:02.038010027 +0100 --- src/drawline.c 2022-10-11 20:57:32.878924131 +0100 *************** *** 583,590 **** 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) space += wp->w_width; if (flags & (TP_FLAG_ALIGN_BELOW | TP_FLAG_ALIGN_ABOVE)) space -= padding; --- 583,591 ---- int strsize = 0; int n_used; ! // 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,664 **** ? (col_with_padding <= col_off || !wp->w_p_wrap) : (n_used < *n_extra))) { ! if (right && (wrap || room < PROP_TEXT_MIN_CELLS)) { // right-align on next line instead of wrapping if possible before = wp->w_width - col_off - strsize + room; --- 659,666 ---- ? (col_with_padding <= col_off || !wp->w_p_wrap) : (n_used < *n_extra))) { ! 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; *** ../vim-9.0.0724/src/testdir/test_textprop.vim 2022-10-11 16:47:02.038010027 +0100 --- src/testdir/test_textprop.vim 2022-10-11 20:56:59.782940591 +0100 *************** *** 3289,3294 **** --- 3289,3310 ---- 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,3308 **** --- 3319,3328 ---- call term_sendkeys(buf, "$") call VerifyScreenDump(buf, 'Test_text_after_nowrap_4', {}) + call term_sendkeys(buf, "0") + call term_sendkeys(buf, ":call ChangeText()\") + call VerifyScreenDump(buf, 'Test_text_after_nowrap_5', {}) + call StopVimInTerminal(buf) endfunc *** ../vim-9.0.0724/src/testdir/dumps/Test_text_after_nowrap_5.dump 2022-10-11 20:59:24.086872779 +0100 --- src/testdir/dumps/Test_text_after_nowrap_5.dump 2022-10-11 20:57:52.238914761 +0100 *************** *** 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| *** ../vim-9.0.0724/src/version.c 2022-10-11 20:04:05.880795466 +0100 --- src/version.c 2022-10-11 20:38:46.812263440 +0100 *************** *** 701,702 **** --- 701,704 ---- { /* Add new patch number below this line */ + /**/ + 725, /**/ -- Q: How many hardware engineers does it take to change a lightbulb? A: None. We'll fix it in software. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// \\\ \\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///