feat(api): remove Lua autocommand callbacks when they return true (#17784)

This copies the semantics of nvim_buf_attach callbacks, and is a
convenient way to create oneshot autocommands gated by some condition.
This commit is contained in:
Gregory Anders
2022-03-19 18:57:58 -06:00
committed by GitHub
parent 77eb6f9dc7
commit be35d3c5ad
3 changed files with 45 additions and 6 deletions

View File

@@ -7730,6 +7730,7 @@ bool callback_call(Callback *const callback, const int argcount_in, typval_T *co
partial_T *partial;
char_u *name;
Array args = ARRAY_DICT_INIT;
Object rv;
switch (callback->type) {
case kCallbackFuncref:
name = callback->data.funcref;
@@ -7742,10 +7743,13 @@ bool callback_call(Callback *const callback, const int argcount_in, typval_T *co
break;
case kCallbackLua:
nlua_call_ref(callback->data.luaref, NULL, args, false, NULL);
return false;
break;
rv = nlua_call_ref(callback->data.luaref, NULL, args, true, NULL);
switch (rv.type) {
case kObjectTypeBoolean:
return rv.data.boolean;
default:
return false;
}
case kCallbackNone:
return false;