summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-12-05 15:47:09 +0100
committerChristian Brabandt <cb@256bit.org>2023-12-05 15:49:47 +0100
commit588f20decebebedba3ad733f4f443a597e9747c3 (patch)
treeaa29da0cf6e21746dc25a6854d657441a6f3fb18 /src
parent2103a56eab5a935f3c14c6e0b1610ff16fc8678f (diff)
patch 9.0.2151: 'breakindent' is not drawn after diff filler linesv9.0.2151
Problem: 'breakindent' is not drawn after diff filler lines. Solution: Correct check for whether 'breakindent' should be drawn. closes: #13624 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
Diffstat (limited to 'src')
-rw-r--r--src/drawline.c5
-rw-r--r--src/testdir/dumps/Test_diff_breakindent_after_filler.dump8
-rw-r--r--src/testdir/test_diffmode.vim44
-rw-r--r--src/version.c2
4 files changed, 45 insertions, 14 deletions
diff --git a/src/drawline.c b/src/drawline.c
index 6909e0f1fd..9f385f033a 100644
--- a/src/drawline.c
+++ b/src/drawline.c
@@ -498,10 +498,11 @@ handle_breakindent(win_T *wp, winlinevars_T *wlv)
{
wlv->draw_state = WL_BRI;
// if wlv->need_showbreak is set, breakindent also applies
- if (wp->w_p_bri && (wlv->row != wlv->startrow || wlv->need_showbreak)
+ if (wp->w_p_bri && (wlv->row > wlv->startrow
# ifdef FEAT_DIFF
- && wlv->filler_lines == 0
+ + wlv->filler_lines
# endif
+ || wlv->need_showbreak)
# ifdef FEAT_PROP_POPUP
&& !wlv->dont_use_showbreak
# endif
diff --git a/src/testdir/dumps/Test_diff_breakindent_after_filler.dump b/src/testdir/dumps/Test_diff_breakindent_after_filler.dump
new file mode 100644
index 0000000000..d9c48733e9
--- /dev/null
+++ b/src/testdir/dumps/Test_diff_breakindent_after_filler.dump
@@ -0,0 +1,8 @@
+| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @18||+1&&| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @18
+| +0#0000e05#a8a8a8255@1|b+0#0000000#5fd7ff255| @18||+1&#ffffff0| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@19
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|c@17||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|c@17
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|c@17||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|c@17
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|c@13| @3||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|c@12>c| @3
+|~+0#4040ff13&| @20||+1#0000000&|~+0#4040ff13&| @20
+|~| @20||+1#0000000&|~+0#4040ff13&| @20
+| +0#0000000&@26|2|,|5|2|-|5|6| @6|A|l@1|
diff --git a/src/testdir/test_diffmode.vim b/src/testdir/test_diffmode.vim
index e05d916013..930fd7b837 100644
--- a/src/testdir/test_diffmode.vim
+++ b/src/testdir/test_diffmode.vim
@@ -1097,18 +1097,19 @@ endfunc
func Test_diff_with_cursorline_breakindent()
CheckScreendump
- call writefile([
- \ 'hi CursorLine ctermbg=red ctermfg=white',
- \ 'set noequalalways wrap diffopt=followwrap cursorline breakindent',
- \ '50vnew',
- \ 'call setline(1, [" "," "," "," "])',
- \ 'exe "norm 20Afoo\<Esc>j20Afoo\<Esc>j20Afoo\<Esc>j20Abar\<Esc>"',
- \ 'vnew',
- \ 'call setline(1, [" "," "," "," "])',
- \ 'exe "norm 20Abee\<Esc>j20Afoo\<Esc>j20Afoo\<Esc>j20Abaz\<Esc>"',
- \ 'windo diffthis',
- \ '2wincmd w',
- \ ], 'Xtest_diff_cursorline_breakindent', 'D')
+ let lines =<< trim END
+ hi CursorLine ctermbg=red ctermfg=white
+ set noequalalways wrap diffopt=followwrap cursorline breakindent
+ 50vnew
+ call setline(1, [' ', ' ', ' ', ' '])
+ exe "norm! 20Afoo\<Esc>j20Afoo\<Esc>j20Afoo\<Esc>j20Abar\<Esc>"
+ vnew
+ call setline(1, [' ', ' ', ' ', ' '])
+ exe "norm! 20Abee\<Esc>j20Afoo\<Esc>j20Afoo\<Esc>j20Abaz\<Esc>"
+ windo diffthis
+ 2wincmd w
+ END
+ call writefile(lines, 'Xtest_diff_cursorline_breakindent', 'D')
let buf = RunVimInTerminal('-S Xtest_diff_cursorline_breakindent', {})
call term_sendkeys(buf, "gg0")
@@ -1124,6 +1125,25 @@ func Test_diff_with_cursorline_breakindent()
call StopVimInTerminal(buf)
endfunc
+func Test_diff_breakindent_after_filler()
+ CheckScreendump
+
+ let lines =<< trim END
+ set laststatus=0 diffopt+=followwrap breakindent
+ call setline(1, ['a', ' ' .. repeat('c', 50)])
+ vnew
+ call setline(1, ['a', 'b', ' ' .. repeat('c', 50)])
+ windo diffthis
+ norm! G$
+ END
+ call writefile(lines, 'Xtest_diff_breakindent_after_filler', 'D')
+ let buf = RunVimInTerminal('-S Xtest_diff_breakindent_after_filler', #{rows: 8, cols: 45})
+ call VerifyScreenDump(buf, 'Test_diff_breakindent_after_filler', {})
+
+ " clean up
+ call StopVimInTerminal(buf)
+endfunc
+
func Test_diff_with_syntax()
CheckScreendump
diff --git a/src/version.c b/src/version.c
index 16d13b9fe0..20245cd5a1 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2151,
+/**/
2150,
/**/
2149,