diff --git a/src/nvim/diff.c b/src/nvim/diff.c index 02c7049e83..5a52d37577 100644 --- a/src/nvim/diff.c +++ b/src/nvim/diff.c @@ -874,7 +874,7 @@ static int diff_write(buf_T *buf, diffin_T *din, linenr_T start, linenr_T end) cmdmod.cmod_flags = save_cmod_flags; free_string_option(buf->b_p_ff); buf->b_p_ff = save_ff; - buf->b_ml.ml_flags = save_ml_flags; + buf->b_ml.ml_flags = (buf->b_ml.ml_flags & ~ML_EMPTY) | (save_ml_flags & ML_EMPTY); return r; } diff --git a/test/old/testdir/test_diffmode.vim b/test/old/testdir/test_diffmode.vim index ca3714cfc4..e7d8da98a9 100644 --- a/test/old/testdir/test_diffmode.vim +++ b/test/old/testdir/test_diffmode.vim @@ -3286,4 +3286,29 @@ func Test_diffget_diffput_diffanchors() set diffanchors& endfunc +func Test_diff_add_prop_in_autocmd() + CheckScreendump + + let lines =<< trim END + func MyDiff() abort + let f1 = readfile(v:fname_in) + let f2 = readfile(v:fname_new) + let f0 = diff(f1, f2) + call writefile(split(f0, "\n"), v:fname_out) + endfunc + + call prop_type_add('myprop', #{highlight: 'Search', override: 1}) + autocmd OptionSet diff call prop_add(1, 1, #{type: 'myprop', length: 100}) + set diffexpr=MyDiff() + END + call writefile(lines, 'Xtest_diff_add_prop_in_autocmd', 'D') + call writefile(['foo', 'bar', 'baz'], 'Xdiffsplit_file', 'D') + + let buf = RunVimInTerminal('-S Xtest_diff_add_prop_in_autocmd', {}) + call term_sendkeys(buf, ":diffsplit Xdiffsplit_file\") + call VerifyScreenDump(buf, 'Test_diff_add_prop_in_autocmd_01', {}) + + call StopVimInTerminal(buf) +endfunc + " vim: shiftwidth=2 sts=2 expandtab