fix(diff): avoid restoring invalid 'foldcolumn' value (#21650)

Use "0" for 'foldcolumn' when w_p_fdc_save is empty, like how
"manual" is used for 'foldmethod' when w_p_fdm_save is empty.
This commit is contained in:
zeertzjq 2023-01-05 07:12:02 +08:00 committed by GitHub
parent 89232b8b48
commit ae64772a88
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 1 deletions

View File

@ -1502,7 +1502,7 @@ void ex_diffoff(exarg_T *eap)
free_string_option(wp->w_p_fdm); free_string_option(wp->w_p_fdm);
wp->w_p_fdm = xstrdup(*wp->w_p_fdm_save ? wp->w_p_fdm_save : "manual"); wp->w_p_fdm = xstrdup(*wp->w_p_fdm_save ? wp->w_p_fdm_save : "manual");
free_string_option(wp->w_p_fdc); free_string_option(wp->w_p_fdc);
wp->w_p_fdc = xstrdup(wp->w_p_fdc_save); wp->w_p_fdc = xstrdup(*wp->w_p_fdc_save ? wp->w_p_fdc_save : "0");
if (wp->w_p_fdl == 0) { if (wp->w_p_fdl == 0) {
wp->w_p_fdl = wp->w_p_fdl_save; wp->w_p_fdl = wp->w_p_fdl_save;

View File

@ -8,6 +8,8 @@ local insert = helpers.insert
local write_file = helpers.write_file local write_file = helpers.write_file
local dedent = helpers.dedent local dedent = helpers.dedent
local exec = helpers.exec local exec = helpers.exec
local eq = helpers.eq
local meths = helpers.meths
describe('Diff mode screen', function() describe('Diff mode screen', function()
local fname = 'Xtest-functional-diff-screen-1' local fname = 'Xtest-functional-diff-screen-1'
@ -1491,6 +1493,26 @@ it('Align the filler lines when changing text in diff mode', function()
]]} ]]}
end) end)
it("diff mode doesn't restore invalid 'foldcolumn' value #21647", function()
clear()
local screen = Screen.new(60, 6)
screen:set_default_attr_ids({
[0] = {foreground = Screen.colors.Blue, bold = true};
})
screen:attach()
eq('0', meths.get_option_value('foldcolumn', {}))
command('diffsplit | bd')
screen:expect([[
^ |
{0:~ }|
{0:~ }|
{0:~ }|
{0:~ }|
|
]])
eq('0', meths.get_option_value('foldcolumn', {}))
end)
-- oldtest: Test_diff_binary() -- oldtest: Test_diff_binary()
it('diff mode works properly if file contains NUL bytes vim-patch:8.2.3925', function() it('diff mode works properly if file contains NUL bytes vim-patch:8.2.3925', function()
clear() clear()