aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/treesitter.lua
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2019-09-28 14:04:05 +0200
committerBjörn Linse <bjorn.linse@gmail.com>2019-09-28 17:46:25 +0200
commitc844f986d4c8f34bbe60591270178504b7045a7a (patch)
tree0fc2733e70677f1154b01b3902f655f5c6f2d66b /runtime/lua/vim/treesitter.lua
parentd5a69eb07648a515d03aa5c9e268aef852015ea9 (diff)
downloadrneovim-c844f986d4c8f34bbe60591270178504b7045a7a.tar.gz
rneovim-c844f986d4c8f34bbe60591270178504b7045a7a.tar.bz2
rneovim-c844f986d4c8f34bbe60591270178504b7045a7a.zip
tree-sitter: use "module" pattern in lua source
Diffstat (limited to 'runtime/lua/vim/treesitter.lua')
-rw-r--r--runtime/lua/vim/treesitter.lua30
1 files changed, 15 insertions, 15 deletions
diff --git a/runtime/lua/vim/treesitter.lua b/runtime/lua/vim/treesitter.lua
index 69b1ac8716..e0202927bb 100644
--- a/runtime/lua/vim/treesitter.lua
+++ b/runtime/lua/vim/treesitter.lua
@@ -1,13 +1,13 @@
local a = vim.api
-local Parser = {}
-Parser.__index = Parser
-
-- TODO(bfredl): currently we retain parsers for the lifetime of the buffer.
-- Consider use weak references to release parser if all plugins are done with
-- it.
local parsers = {}
+local Parser = {}
+Parser.__index = Parser
+
function Parser:parse()
if self.valid then
return self.tree
@@ -17,7 +17,7 @@ function Parser:parse()
return self.tree
end
-local function on_lines(self, bufnr, _, start_row, old_stop_row, stop_row, old_byte_size)
+function Parser:_on_lines(bufnr, _, start_row, old_stop_row, stop_row, old_byte_size)
local start_byte = a.nvim_buf_get_offset(bufnr,start_row)
local stop_byte = a.nvim_buf_get_offset(bufnr,stop_row)
local old_stop_byte = start_byte + old_byte_size
@@ -26,17 +26,22 @@ local function on_lines(self, bufnr, _, start_row, old_stop_row, stop_row, old_b
self.valid = false
end
-local function create_parser(bufnr, ft, id)
+local module = {
+ add_language=vim._ts_add_language,
+ inspect_language=vim._ts_inspect_language,
+}
+
+function module.create_parser(bufnr, ft, id)
if bufnr == 0 then
bufnr = a.nvim_get_current_buf()
end
local self = setmetatable({bufnr=bufnr, valid=false}, Parser)
self._parser = vim._create_ts_parser(ft)
self:parse()
- -- TODO: use weakref to self, so that the parser is free'd is no plugin is
+ -- TODO(bfredl): use weakref to self, so that the parser is free'd is no plugin is
-- using it.
local function lines_cb(_, ...)
- return on_lines(self, ...)
+ return self:_on_lines(...)
end
local detach_cb = nil
if id ~= nil then
@@ -50,7 +55,7 @@ local function create_parser(bufnr, ft, id)
return self
end
-local function get_parser(bufnr, ft)
+function module.get_parser(bufnr, ft)
if bufnr == nil or bufnr == 0 then
bufnr = a.nvim_get_current_buf()
end
@@ -60,14 +65,9 @@ local function get_parser(bufnr, ft)
local id = tostring(bufnr)..'_'..ft
if parsers[id] == nil then
- parsers[id] = create_parser(bufnr, ft, id)
+ parsers[id] = module.create_parser(bufnr, ft, id)
end
return parsers[id]
end
-return {
- get_parser=get_parser,
- create_parser=create_parser,
- add_language=vim._ts_add_language,
- inspect_language=vim._ts_inspect_language,
-}
+return module