diff options
| author | kiyan42 <yazdani.kiyan@protonmail.com> | 2020-05-08 11:22:59 +0200 |
|---|---|---|
| committer | kiyan42 <yazdani.kiyan@protonmail.com> | 2020-05-12 16:16:48 +0200 |
| commit | 45dcebb15f1a954eba2bcb3ae4c1a03f710a1f2a (patch) | |
| tree | 50cbca8e9615d69a8ff9aca6b33a35abb32f9363 /lua/nvim-treesitter.lua | |
| parent | Merge pull request #47 from theHamsta/fix-typo-contributing.md (diff) | |
| download | nvim-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.lua | 44 |
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 |
