vim-patch:8.2.2518: 'listchars' should be window-local

Problem:    'listchars' should be window-local.
Solution:   Make 'listchars' global-local. (Yegappan Lakshmanan, Marco Hinz,
            closes vim/vim#5206, closes vim/vim#7850)
eed9d46293

Nvim already has this feature, but it implements :set listchars the same
as :setglobal listchars, which is incorrect. Vim's implementation of
:set listchars is correct: using :set listchars clears local value.
This commit is contained in:
zeertzjq
2021-11-17 07:07:15 +08:00
parent eba317d7a9
commit 8c24e1462c
4 changed files with 137 additions and 7 deletions

View File

@@ -2650,14 +2650,19 @@ ambw_end:
}
s = skip_to_option_part(s);
}
} else if (varp == &p_lcs) { // 'listchars'
} else if (varp == &p_lcs) { // global 'listchars'
errmsg = set_chars_option(curwin, varp, false);
if (!errmsg) {
if (errmsg == NULL) {
// The current window is set to use the global 'listchars' value.
// So clear the window-local value.
if (!(opt_flags & OPT_GLOBAL)) {
clear_string_option(&curwin->w_p_lcs);
}
FOR_ALL_TAB_WINDOWS(tp, wp) {
set_chars_option(wp, &wp->w_p_lcs, true);
}
redraw_all_later(NOT_VALID);
}
redraw_all_later(NOT_VALID);
} else if (varp == &curwin->w_p_lcs) { // local 'listchars'
errmsg = set_chars_option(curwin, varp, true);
} else if (varp == &p_fcs) { // 'fillchars'