diff options
author | zeertzjq <zeertzjq@outlook.com> | 2024-11-03 16:54:25 +0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2024-11-03 17:04:34 +0800 |
commit | fe565ca382bb6cc4cd9f1c01de42d62c48922bf6 (patch) | |
tree | fc6c3550d92cbce3da5e2b5552fb46c93663e2a7 /src/nvim/ex_docmd.c | |
parent | 981fa11c91d3655828b4f70ccf7d079d917d5b6b (diff) | |
download | rneovim-fe565ca382bb6cc4cd9f1c01de42d62c48922bf6.tar.gz rneovim-fe565ca382bb6cc4cd9f1c01de42d62c48922bf6.tar.bz2 rneovim-fe565ca382bb6cc4cd9f1c01de42d62c48922bf6.zip |
vim-patch:9.1.0835: :setglobal doesn't work properly for 'ffu' and 'tsrfu'
Problem: :setglobal doesn't work properly for 'ffu' and 'tsrfu' when
the local value is set (after v9.1.0831)
Solution: Check os_flags instead of buffer option variable (zeertzjq).
closes: vim/vim#15980
https://github.com/vim/vim/commit/6eda269600b5ca952f28e808c662f67e581933d7
Diffstat (limited to 'src/nvim/ex_docmd.c')
-rw-r--r-- | src/nvim/ex_docmd.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c index 1c215cd3e1..92695aa4de 100644 --- a/src/nvim/ex_docmd.c +++ b/src/nvim/ex_docmd.c @@ -5173,7 +5173,7 @@ static Callback *get_findfunc_callback(void) return *curbuf->b_p_ffu != NUL ? &curbuf->b_ffu_cb : &ffu_cb; } -/// Call 'findfunc' to obtain the list of file names. +/// Call 'findfunc' to obtain a list of file names. static list_T *call_findfunc(char *pat, BoolVarValue cmdcomplete) { const sctx_T saved_sctx = current_sctx; @@ -5294,12 +5294,16 @@ const char *did_set_findfunc(optset_T *args) buf_T *buf = (buf_T *)args->os_buf; int retval; - if (*buf->b_p_ffu != NUL) { + if (args->os_flags & OPT_LOCAL) { // buffer-local option set retval = option_set_callback_func(buf->b_p_ffu, &buf->b_ffu_cb); } else { // global option set retval = option_set_callback_func(p_ffu, &ffu_cb); + // when using :set, free the local callback + if (!(args->os_flags & OPT_GLOBAL)) { + callback_free(&buf->b_ffu_cb); + } } if (retval == FAIL) { |