/
ts.lua
56 lines (50 loc) · 1.56 KB
/
ts.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
local parsers = require('nvim-treesitter.parsers')
local wanted_parsers = {
'bash'; 'css'; 'go'; 'html'; 'javascript'; 'json'; 'ocaml'; 'rust'; 'tsx'; 'typescript'; 'cpp';
'c'; 'yaml'; 'markdown'; 'lua'; 'python';
};
local set_folding = function()
local helpers = require('lib.nvim_helpers')
local file_types = {}
for i, lang in ipairs(wanted_parsers) do
file_types[i] = parsers.lang_to_ft(lang)
end
local foldexpr = 'nvim_treesitter#foldexpr()'
for _, ft in pairs(file_types) do
if ft == vim.bo.filetype then
vim.wo.foldmethod = 'expr'
vim.wo.foldexpr = foldexpr
end
end
helpers.augroup('folding_config', {
{
events = {'FileType'};
targets = vim.tbl_flatten(file_types);
command = [[setlocal foldmethod=expr foldexpr=]] .. foldexpr;
};
})
end
do
local configs = require('nvim-treesitter.configs')
configs.setup({
highlight = {enable = false};
incremental_selection = {
enable = true;
keymaps = {
init_selection = 'gnn';
node_incremental = '<tab>';
scope_incremental = 'grc';
node_decremental = '<s-tab>';
};
};
refactor = {
smart_rename = {enable = true; keymaps = {smart_rename = 'grr'}};
navigation = {enable = true; keymaps = {goto_definition = 'gnd'; list_defitinions = 'gnD'}};
};
ensure_installed = wanted_parsers;
})
set_folding()
configs.commands.TSEnableAll.run('incremental_selection')
configs.commands.TSEnableAll.run('refactor.smart_rename')
configs.commands.TSEnableAll.run('refactor.navigation')
end