aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-treesitter.lua
diff options
context:
space:
mode:
authorkiyan42 <yazdani.kiyan@protonmail.com>2020-05-08 11:22:59 +0200
committerkiyan42 <yazdani.kiyan@protonmail.com>2020-05-12 16:16:48 +0200
commit45dcebb15f1a954eba2bcb3ae4c1a03f710a1f2a (patch)
tree50cbca8e9615d69a8ff9aca6b33a35abb32f9363 /lua/nvim-treesitter.lua
parentMerge pull request #47 from theHamsta/fix-typo-contributing.md (diff)
downloadnvim-treesitter-45dcebb15f1a954eba2bcb3ae4c1a03f710a1f2a.tar
nvim-treesitter-45dcebb15f1a954eba2bcb3ae4c1a03f710a1f2a.tar.gz
nvim-treesitter-45dcebb15f1a954eba2bcb3ae4c1a03f710a1f2a.tar.bz2
nvim-treesitter-45dcebb15f1a954eba2bcb3ae4c1a03f710a1f2a.tar.lz
nvim-treesitter-45dcebb15f1a954eba2bcb3ae4c1a03f710a1f2a.tar.xz
nvim-treesitter-45dcebb15f1a954eba2bcb3ae4c1a03f710a1f2a.tar.zst
nvim-treesitter-45dcebb15f1a954eba2bcb3ae4c1a03f710a1f2a.zip
refacto/feat: better handling of parser updates
features: - node_movement is moving between scopes. - add selection initialization from normal mode - add a decremental selection improvements: - attach to buffer to run tree parsing on change - run state update on CursorMoved - the buffer state is: ``` { cursor_pos = { row=row, col=col }, current_node = node_under_cursor, selection = { range = nil, -- activates when starting a selection nodes = {} -- filling up when starting an incremental selection }, parser = parser, -- parser for current buffer } ``` - refacto all the modules reliant on parsing the tree, update the current nodes, get the current nodes... fixes: - fix has_parser to look for .so libraries - fix should select the whole file when selection root in selection
Diffstat (limited to 'lua/nvim-treesitter.lua')
-rw-r--r--lua/nvim-treesitter.lua44
1 files changed, 22 insertions, 22 deletions
diff --git a/lua/nvim-treesitter.lua b/lua/nvim-treesitter.lua
index 90b5468a3..5c0dfac75 100644
--- a/lua/nvim-treesitter.lua
+++ b/lua/nvim-treesitter.lua
@@ -1,15 +1,14 @@
local api = vim.api
+
local install = require'nvim-treesitter.install'
-local locals = require'nvim-treesitter.locals'
local utils = require'nvim-treesitter.utils'
local info = require'nvim-treesitter.info'
local configs = require'nvim-treesitter.configs'
+local state = require'nvim-treesitter.state'
local M = {}
--- This function sets up everythin needed for a given language
--- this is the main interface through the plugin
-function M.setup(lang)
+function M.setup()
utils.setup_commands('install', install.commands)
utils.setup_commands('info', info.commands)
utils.setup_commands('configs', configs.commands)
@@ -18,33 +17,34 @@ function M.setup(lang)
for _, mod in pairs(configs.available_modules()) do
if configs.is_enabled(mod, ft) then
local cmd = string.format("lua require'nvim-treesitter.%s'.attach()", mod)
- api.nvim_command(string.format("autocmd FileType %s %s", ft, cmd))
+ api.nvim_command(string.format("autocmd NvimTreesitter FileType %s %s", ft, cmd))
end
end
+ local cmd = string.format("lua require'nvim-treesitter.state'.attach_to_buffer(%s)", ft)
+ api.nvim_command(string.format('autocmd NvimTreesitter FileType %s %s', ft, cmd))
end
+
+ state.run_update()
end
function M.statusline(indicator_size)
- local indicator_size = indicator_size or 1000
- local expr = require"nvim-treesitter.utils".expression_at_point()
- local current_node =
- require'nvim-treesitter.node_movement'.current_node[api.nvim_get_current_buf()]
-
- local indicator = ""
- while expr and (#indicator + #(expr:type()) + 5) < indicator_size do
-
- local prefix = ""
- if expr:parent() then
- prefix = "->"
- end
+ local indicator_size = indicator_size or 100
+ local bufnr = api.nvim_get_current_buf()
+ local buf_state = state.get_buf_state(bufnr)
+ if not buf_state then return "" end
+ local current_node = buf_state.current_node
+ if not current_node then return "" end
- if expr == current_node then
- indicator = string.format("%s[%s]%s", prefix, expr:type(), indicator)
- else
- indicator = prefix .. expr:type() .. indicator
- end
+ local expr = current_node:parent()
+ local prefix = ""
+ if expr then
+ prefix = "->"
+ end
+ local indicator = current_node:type()
+ while expr and (#indicator + #(expr:type()) + 5) < indicator_size do
+ indicator = expr:type() .. prefix .. indicator
expr = expr:parent()
end