mirror of
https://github.com/neovim/neovim.git
synced 2025-09-27 13:38:34 +00:00
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
6eda269600
This commit is contained in:
@@ -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) {
|
||||
|
@@ -2368,13 +2368,13 @@ static void copy_global_to_buflocal_cb(Callback *globcb, Callback *bufcb)
|
||||
/// Invoked when the 'completefunc' option is set. The option value can be a
|
||||
/// name of a function (string), or function(<name>) or funcref(<name>) or a
|
||||
/// lambda expression.
|
||||
const char *did_set_completefunc(optset_T *args FUNC_ATTR_UNUSED)
|
||||
const char *did_set_completefunc(optset_T *args)
|
||||
{
|
||||
if (option_set_callback_func(curbuf->b_p_cfu, &cfu_cb) == FAIL) {
|
||||
buf_T *buf = (buf_T *)args->os_buf;
|
||||
if (option_set_callback_func(buf->b_p_cfu, &cfu_cb) == FAIL) {
|
||||
return e_invarg;
|
||||
}
|
||||
|
||||
set_buflocal_cfu_callback(curbuf);
|
||||
set_buflocal_cfu_callback(buf);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -2412,14 +2412,19 @@ void set_buflocal_ofu_callback(buf_T *buf)
|
||||
/// lambda expression.
|
||||
const char *did_set_thesaurusfunc(optset_T *args FUNC_ATTR_UNUSED)
|
||||
{
|
||||
buf_T *buf = (buf_T *)args->os_buf;
|
||||
int retval;
|
||||
|
||||
if (*curbuf->b_p_tsrfu != NUL) {
|
||||
if (args->os_flags & OPT_LOCAL) {
|
||||
// buffer-local option set
|
||||
retval = option_set_callback_func(curbuf->b_p_tsrfu, &curbuf->b_tsrfu_cb);
|
||||
retval = option_set_callback_func(buf->b_p_tsrfu, &buf->b_tsrfu_cb);
|
||||
} else {
|
||||
// global option set
|
||||
retval = option_set_callback_func(p_tsrfu, &tsrfu_cb);
|
||||
// when using :set, free the local callback
|
||||
if (!(args->os_flags & OPT_GLOBAL)) {
|
||||
callback_free(&buf->b_tsrfu_cb);
|
||||
}
|
||||
}
|
||||
|
||||
return retval == FAIL ? e_invarg : NULL;
|
||||
|
Reference in New Issue
Block a user