feat: add TypVal wrapper and update headers

This commit is contained in:
LordMZTE 2023-05-24 18:03:28 +02:00
parent 0f07217feb
commit 0a55798f24
Signed by: LordMZTE
GPG Key ID: B64802DC33A64FF6
3 changed files with 3260 additions and 2261 deletions

View File

@ -36,6 +36,18 @@
#include "_nvim/src/nvim/drawline.h"
#include "_nvim/src/nvim/drawscreen.h"
#include "_nvim/src/nvim/edit.h"
#include "_nvim/src/nvim/eval/buffer.h"
#include "_nvim/src/nvim/eval/decode.h"
#include "_nvim/src/nvim/eval/encode.h"
#include "_nvim/src/nvim/eval/executor.h"
#include "_nvim/src/nvim/eval/funcs.h"
#include "_nvim/src/nvim/eval/gc.h"
#include "_nvim/src/nvim/eval/typval.h"
#include "_nvim/src/nvim/eval/typval_defs.h"
#include "_nvim/src/nvim/eval/typval_encode.h"
#include "_nvim/src/nvim/eval/userfunc.h"
#include "_nvim/src/nvim/eval/vars.h"
#include "_nvim/src/nvim/eval/window.h"
#include "_nvim/src/nvim/event/defs.h"
#include "_nvim/src/nvim/event/libuv_process.h"
#include "_nvim/src/nvim/event/loop.h"
@ -92,7 +104,6 @@
#include "_nvim/src/nvim/macros.h"
#include "_nvim/src/nvim/main.h"
#include "_nvim/src/nvim/map.h"
#include "_nvim/src/nvim/map_defs.h"
#include "_nvim/src/nvim/mapping.h"
#include "_nvim/src/nvim/mark.h"
#include "_nvim/src/nvim/mark_defs.h"

5466
nvim_c.zig

File diff suppressed because it is too large Load Diff

View File

@ -31,6 +31,48 @@ pub const Error = struct {
}
};
/// Wrapper around nvim's typval_T
pub const TypVal = union(enum) {
number: c.varnumber_T,
bool: bool,
special: c_uint,
float: f64,
string: [*:0]u8,
// TODO: implement some more advanced types
/// Convert to the neovim type
pub fn toNvim(self: TypVal) c.typval_T {
return switch (self) {
.number => |v| .{
.v_type = c.VAR_NUMBER,
.v_lock = c.VAR_UNLOCKED,
.vval = .{ .v_number = v },
},
.bool => |v| .{
.v_type = c.VAR_BOOL,
.v_lock = c.VAR_UNLOCKED,
.vval = .{ .v_bool = @boolToInt(v) },
},
.special => |v| .{
.v_type = c.VAR_SPECIAL,
.v_lock = c.VAR_UNLOCKED,
.vval = .{ .v_special = v },
},
.float => |v| .{
.v_type = c.VAR_FLOAT,
.v_lock = c.VAR_UNLOCKED,
.vval = .{ .v_float = v },
},
.string => |v| .{
.v_type = c.VAR_STRING,
.v_lock = c.VAR_UNLOCKED,
.vval = .{ .v_string = v },
},
};
}
};
pub fn nvimString(data: []u8) c.String {
return .{
.data = data.ptr,