aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/lua/vim/treesitter.lua3
-rw-r--r--src/nvim/lua/treesitter.c8
2 files changed, 8 insertions, 3 deletions
diff --git a/runtime/lua/vim/treesitter.lua b/runtime/lua/vim/treesitter.lua
index f356673839..edff94af0b 100644
--- a/runtime/lua/vim/treesitter.lua
+++ b/runtime/lua/vim/treesitter.lua
@@ -75,6 +75,9 @@ function M.create_parser(bufnr, lang, id)
if bufnr == 0 then
bufnr = a.nvim_get_current_buf()
end
+
+ vim.fn.bufload(bufnr)
+
local self = setmetatable({bufnr=bufnr, lang=lang, valid=false}, Parser)
self._parser = vim._create_ts_parser(lang)
self.change_cbs = {}
diff --git a/src/nvim/lua/treesitter.c b/src/nvim/lua/treesitter.c
index ddf54720a7..138031237e 100644
--- a/src/nvim/lua/treesitter.c
+++ b/src/nvim/lua/treesitter.c
@@ -307,11 +307,13 @@ static int parser_parse_buf(lua_State *L)
}
long bufnr = lua_tointeger(L, 2);
- void *payload = handle_get_buffer(bufnr);
- if (!payload) {
+ buf_T *buf = handle_get_buffer(bufnr);
+
+ if (!buf) {
return luaL_error(L, "invalid buffer handle: %d", bufnr);
}
- TSInput input = { payload, input_cb, TSInputEncodingUTF8 };
+
+ TSInput input = { (void *)buf, input_cb, TSInputEncodingUTF8 };
TSTree *new_tree = ts_parser_parse(p->parser, p->tree, input);
uint32_t n_ranges = 0;