aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/quickfix.c
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-08-20 06:12:02 +0800
committerGitHub <noreply@github.com>2022-08-20 06:12:02 +0800
commite8618df7f826d2ca4d524f12fc712d7c52ea158c (patch)
tree4b1e84ade34a61efbaae47a356eee62bd02145a9 /src/nvim/quickfix.c
parentebd57209018ed310836a8196ed4710e64a6d8ee5 (diff)
downloadrneovim-e8618df7f826d2ca4d524f12fc712d7c52ea158c.tar.gz
rneovim-e8618df7f826d2ca4d524f12fc712d7c52ea158c.tar.bz2
rneovim-e8618df7f826d2ca4d524f12fc712d7c52ea158c.zip
vim-patch:8.2.3619: cannot use a lambda for 'operatorfunc' (#19846)
Problem: Cannot use a lambda for 'operatorfunc'. Solution: Support using a lambda or partial. (Yegappan Lakshmanan, closes vim/vim#8775) https://github.com/vim/vim/commit/777175b0df8c5ec3cd30d19a2e887e661ac209c8 Omit duplicate docs. It's removed in patch 8.2.3623. Nvim doesn't seem to need callback_set() as it was omitted when patch 8.1.1437 was first ported.
Diffstat (limited to 'src/nvim/quickfix.c')
-rw-r--r--src/nvim/quickfix.c35
1 files changed, 4 insertions, 31 deletions
diff --git a/src/nvim/quickfix.c b/src/nvim/quickfix.c
index 1c416a872b..d04c2bc470 100644
--- a/src/nvim/quickfix.c
+++ b/src/nvim/quickfix.c
@@ -3829,38 +3829,11 @@ static buf_T *qf_find_buf(qf_info_T *qi)
return NULL;
}
-// Process the 'quickfixtextfunc' option value.
-bool qf_process_qftf_option(void)
+/// Process the 'quickfixtextfunc' option value.
+/// @return OK or FAIL
+int qf_process_qftf_option(void)
{
- if (p_qftf == NULL || *p_qftf == NUL) {
- callback_free(&qftf_cb);
- return true;
- }
-
- typval_T *tv;
- if (*p_qftf == '{') {
- // Lambda expression
- tv = eval_expr((char *)p_qftf);
- if (tv == NULL) {
- return false;
- }
- } else {
- // treat everything else as a function name string
- tv = xcalloc(1, sizeof(*tv));
- tv->v_type = VAR_STRING;
- tv->vval.v_string = (char *)vim_strsave(p_qftf);
- }
-
- Callback cb;
- if (!callback_from_typval(&cb, tv)) {
- tv_free(tv);
- return false;
- }
-
- callback_free(&qftf_cb);
- qftf_cb = cb;
- tv_free(tv);
- return true;
+ return option_set_callback_func(p_qftf, &qftf_cb);
}
/// Update the w:quickfix_title variable in the quickfix/location list window in