aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorThomas Vigouroux <tomvig38@gmail.com>2020-04-19 14:20:23 +0200
committerThomas Vigouroux <tomvig38@gmail.com>2020-04-19 17:28:59 +0200
commitb2b6e51a7c6a32b48148a88cf2171b9f663a2b9d (patch)
treec2e49a850ccf521f5874f7b7787d8e1d08f18837 /lua
parentfix: add plugin file (diff)
downloadnvim-treesitter-b2b6e51a7c6a32b48148a88cf2171b9f663a2b9d.tar
nvim-treesitter-b2b6e51a7c6a32b48148a88cf2171b9f663a2b9d.tar.gz
nvim-treesitter-b2b6e51a7c6a32b48148a88cf2171b9f663a2b9d.tar.bz2
nvim-treesitter-b2b6e51a7c6a32b48148a88cf2171b9f663a2b9d.tar.lz
nvim-treesitter-b2b6e51a7c6a32b48148a88cf2171b9f663a2b9d.tar.xz
nvim-treesitter-b2b6e51a7c6a32b48148a88cf2171b9f663a2b9d.tar.zst
nvim-treesitter-b2b6e51a7c6a32b48148a88cf2171b9f663a2b9d.zip
feat: add locals to setup procedure
Diffstat (limited to 'lua')
-rw-r--r--lua/nvim-treesitter.lua7
-rw-r--r--lua/nvim-treesitter/locals.lua17
2 files changed, 19 insertions, 5 deletions
diff --git a/lua/nvim-treesitter.lua b/lua/nvim-treesitter.lua
index abb3b6d91..ef6c31506 100644
--- a/lua/nvim-treesitter.lua
+++ b/lua/nvim-treesitter.lua
@@ -1,6 +1,7 @@
local api = vim.api
local parsers = require'nvim-treesitter.parsers'
local install = require'nvim-treesitter.install'
+local locals = require'nvim-treesitter.locals'
local M = {}
@@ -8,6 +9,12 @@ local M = {}
-- this is the main interface through the plugin
function M.setup(lang)
if parsers.has_parser(lang) then
+ if locals.is_supported(lang) then
+ print("Locals setup for", lang)
+ api.nvim_command(string.format([[
+ autocmd NvimTreesitter FileType %s lua vim.api.nvim_buf_attach(0, true, {on_lines=require'nvim-treesitter.locals'.on_lines})
+ ]], lang))
+ end
end
end
diff --git a/lua/nvim-treesitter/locals.lua b/lua/nvim-treesitter/locals.lua
index cd8a3e306..cd0c268db 100644
--- a/lua/nvim-treesitter/locals.lua
+++ b/lua/nvim-treesitter/locals.lua
@@ -10,9 +10,12 @@ local M = {
locals={}
}
+function M.is_supported(lang)
+ return queries.get_query(lang, "locals") ~= nil
+end
+
function M.collect_locals(bufnr)
local ft = api.nvim_buf_get_option(bufnr, "ft")
- local query = queries.get_query(ft, "locals")
if ft then
local query = queries.get_query(ft, 'locals')
@@ -33,12 +36,16 @@ function M.collect_locals(bufnr)
end
end
-function M.on_lines(_, buf, _, firstline, lastline, new_lastline, _)
+function M.on_lines(_, buf, _, firstline, lastline, new_lastline)
M.locals[buf] = M.collect_locals(buf)
end
+function M.get_locals(bufnr)
+ return M.locals[bufnr or api.nvim_get_current_buf()] or {}
+end
+
function M.get_definitions(bufnr)
- local locals = M.locals[bufnr]
+ local locals = M.get_locals(bufnr)
local defs = {}
@@ -52,7 +59,7 @@ function M.get_definitions(bufnr)
end
function M.get_scopes(bufnr)
- local locals = M.locals[bufnr]
+ local locals = M.get_locals(bufnr)
local scopes = {}
@@ -66,7 +73,7 @@ function M.get_scopes(bufnr)
end
function M.get_references(bufnr)
- local locals = M.locals[bufnr or api.nvim_get_current_buf()]
+ local locals = M.get_locals(bufnr)
local refs = {}