diff options
-rw-r--r-- | src/charset.c | 5 | ||||
-rw-r--r-- | src/drawline.c | 6 | ||||
-rw-r--r-- | src/testdir/dumps/Test_prop_right_align_twice_3.dump | 8 | ||||
-rw-r--r-- | src/testdir/test_textprop.vim | 13 | ||||
-rw-r--r-- | src/version.c | 2 |
5 files changed, 25 insertions, 9 deletions
diff --git a/src/charset.c b/src/charset.c index 299de54779..b26ebb96c7 100644 --- a/src/charset.c +++ b/src/charset.c @@ -1187,7 +1187,8 @@ win_lbr_chartabsize( for (i = 0; i < cts->cts_text_prop_count; ++i) { - textprop_T *tp = cts->cts_text_props + i; + textprop_T *tp = cts->cts_text_props + i; + int col_off = win_col_off(wp); // Watch out for the text being deleted. "cts_text_props" is a // copy, the text prop may actually have been removed from the line. @@ -1209,7 +1210,7 @@ win_lbr_chartabsize( int n_extra = (int)STRLEN(p); cells = text_prop_position(wp, tp, - (vcol + size) % wp->w_width, + (vcol + size) % (wp->w_width - col_off) + col_off, &n_extra, &p, NULL, NULL); #ifdef FEAT_LINEBREAK no_sbr = TRUE; // don't use 'showbreak' now diff --git a/src/drawline.c b/src/drawline.c index 039a8c94d7..26886bd945 100644 --- a/src/drawline.c +++ b/src/drawline.c @@ -302,6 +302,7 @@ text_prop_position( int padding = tp->tp_col == MAXCOL && tp->tp_len > 1 ? tp->tp_len - 1 : 0; int col_with_padding = vcol + (below ? 0 : padding); + int col_off = 0; int room = wp->w_width - col_with_padding; int added = room; int n_used = *n_extra; @@ -324,7 +325,8 @@ text_prop_position( if (right && (wrap || room < PROP_TEXT_MIN_CELLS)) { // right-align on next line instead of wrapping if possible - added = wp->w_width - strsize + room; + col_off = win_col_off(wp) + win_col_off2(wp); + added = wp->w_width - col_off - strsize + room; if (added < 0) added = 0; else @@ -386,7 +388,7 @@ text_prop_position( *p_extra = l; *n_extra = n_used + added + padding; *n_attr = mb_charlen(*p_extra); - *n_attr_skip = added + padding; + *n_attr_skip = added + padding + col_off; } } } diff --git a/src/testdir/dumps/Test_prop_right_align_twice_3.dump b/src/testdir/dumps/Test_prop_right_align_twice_3.dump new file mode 100644 index 0000000000..2c4cbeee54 --- /dev/null +++ b/src/testdir/dumps/Test_prop_right_align_twice_3.dump @@ -0,0 +1,8 @@ +| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|o|m|e| |m|o|r|e| |t|e|x|t|s|o|m|e| |t|e|x|t| |s|o|m|e| |t|e|x|t| |s|o|m|e| |t|e|x|t| |s|o|m|e| |t|e|x|t| +0&#ffd7ff255|n|o|t|h|i|n|g| |h|e|r|e| +0&#ffffff0@6 +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@62|S+0#ffffff16#e000002|o|m|e| |e|r@1|o|r +| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@59|A+0#ffffff16#e000002|n|o|t|h|e|r| |e|r@1|o|r +| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e| |t|w>o| @64 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|2|,|8| @10|A|l@1| diff --git a/src/testdir/test_textprop.vim b/src/testdir/test_textprop.vim index 60bf48c12a..7a2fcf6111 100644 --- a/src/testdir/test_textprop.vim +++ b/src/testdir/test_textprop.vim @@ -2574,11 +2574,11 @@ func Test_props_with_text_right_align_twice() let lines =<< trim END call setline(1, ["some text some text some text some text", 'line two']) - call prop_type_add( 'MyErrorText', #{ highlight: 'ErrorMsg' } ) - call prop_type_add( 'MyPadding', #{ highlight: 'DiffChange' } ) - call prop_add( 1, 0, #{ type: 'MyPadding', text: ' nothing here', text_wrap: 'wrap'} ) - call prop_add( 1, 0, #{ type: 'MyErrorText', text: 'Some error', text_wrap: 'wrap', text_align: 'right' } ) - call prop_add( 1, 0, #{ type: 'MyErrorText', text: 'Another error', text_wrap: 'wrap', text_align: 'right' } ) + call prop_type_add('MyErrorText', #{ highlight: 'ErrorMsg'}) + call prop_type_add('MyPadding', #{ highlight: 'DiffChange'}) + call prop_add(1, 0, #{type: 'MyPadding', text: ' nothing here', text_wrap: 'wrap'}) + call prop_add(1, 0, #{type: 'MyErrorText', text: 'Some error', text_wrap: 'wrap', text_align: 'right'}) + call prop_add(1, 0, #{type: 'MyErrorText', text: 'Another error', text_wrap: 'wrap', text_align: 'right'}) normal G$ END call writefile(lines, 'XscriptPropsRightAlign') @@ -2588,6 +2588,9 @@ func Test_props_with_text_right_align_twice() call term_sendkeys(buf, "ggisome more text\<Esc>G$") call VerifyScreenDump(buf, 'Test_prop_right_align_twice_2', {}) + call term_sendkeys(buf, ":set signcolumn=yes\<CR>") + call VerifyScreenDump(buf, 'Test_prop_right_align_twice_3', {}) + call StopVimInTerminal(buf) call delete('XscriptPropsRightAlign') endfunc diff --git a/src/version.c b/src/version.c index ed4dbca69c..80a532e492 100644 --- a/src/version.c +++ b/src/version.c @@ -708,6 +708,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 297, +/**/ 296, /**/ 295, |