aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/api/private
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/api/private')
-rw-r--r--src/nvim/api/private/defs.h2
-rw-r--r--src/nvim/api/private/helpers.c5
-rw-r--r--src/nvim/api/private/helpers.h4
3 files changed, 11 insertions, 0 deletions
diff --git a/src/nvim/api/private/defs.h b/src/nvim/api/private/defs.h
index 978c55691b..f0d48bf145 100644
--- a/src/nvim/api/private/defs.h
+++ b/src/nvim/api/private/defs.h
@@ -104,6 +104,7 @@ typedef enum {
kObjectTypeString,
kObjectTypeArray,
kObjectTypeDictionary,
+ kObjectTypeLuaRef,
// EXT types, cannot be split or reordered, see #EXT_OBJECT_TYPE_SHIFT
kObjectTypeBuffer,
kObjectTypeWindow,
@@ -119,6 +120,7 @@ struct object {
String string;
Array array;
Dictionary dictionary;
+ LuaRef luaref;
} data;
};
diff --git a/src/nvim/api/private/helpers.c b/src/nvim/api/private/helpers.c
index 521ec11906..6b05d1ac0a 100644
--- a/src/nvim/api/private/helpers.c
+++ b/src/nvim/api/private/helpers.c
@@ -11,6 +11,7 @@
#include "nvim/api/private/defs.h"
#include "nvim/api/private/handle.h"
#include "nvim/msgpack_rpc/helpers.h"
+#include "nvim/lua/executor.h"
#include "nvim/ascii.h"
#include "nvim/assert.h"
#include "nvim/vim.h"
@@ -1147,6 +1148,10 @@ void api_free_object(Object value)
api_free_dictionary(value.data.dictionary);
break;
+ case kObjectTypeLuaRef:
+ executor_free_luaref(value.data.luaref);
+ break;
+
default:
abort();
}
diff --git a/src/nvim/api/private/helpers.h b/src/nvim/api/private/helpers.h
index cc74824402..0ea7667428 100644
--- a/src/nvim/api/private/helpers.h
+++ b/src/nvim/api/private/helpers.h
@@ -48,6 +48,10 @@
.type = kObjectTypeDictionary, \
.data.dictionary = d })
+#define LUAREF_OBJ(r) ((Object) { \
+ .type = kObjectTypeLuaRef, \
+ .data.luaref = r })
+
#define NIL ((Object) {.type = kObjectTypeNil})
#define PUT(dict, k, v) \