dotfiles/dot_config/nvim/after/plugin/treesitter.lua

111 lines
3.4 KiB
Lua
Raw Normal View History

2023-02-11 14:11:00 +01:00
local ok, treesitter = pcall(require, 'nvim-treesitter.configs')
if not ok then
return
end
treesitter.setup {
2023-02-26 10:40:31 +01:00
incremental_selection = {
enable = true,
keymaps = {
-- mappings for incremental selection (visual mappings)
init_selection = "gnn", -- maps in normal mode to init the node/scope selection
node_incremental = "grn", -- increment to the upper named parent
scope_incremental = "grc", -- increment to the upper scope (as defined in locals.scm)
node_decremental = "grm" -- decrement to the previous node
}
},
2023-02-24 07:31:04 +01:00
textobjects = {
2023-02-26 10:40:31 +01:00
-- syntax-aware textobjects
enable = true,
lsp_interop = {
enable = true,
peek_definition_code = {
["DF"] = "@function.outer",
}
},
keymaps = {
["iL"] = {
-- you can define your own textobjects directly here
go = "(function_definition) @function",
},
-- or you use the queries from supported languages with textobjects.scm
["af"] = "@function.outer",
["if"] = "@function.inner",
["aC"] = "@class.outer",
["iC"] = "@class.inner",
["ac"] = "@conditional.outer",
["ic"] = "@conditional.inner",
["ae"] = "@block.outer",
["ie"] = "@block.inner",
["al"] = "@loop.outer",
["il"] = "@loop.inner",
["is"] = "@statement.inner",
["as"] = "@statement.outer",
["ad"] = "@comment.outer",
["am"] = "@call.outer",
["im"] = "@call.inner"
},
move = {
enable = true,
set_jumps = true, -- whether to set jumps in the jumplist
goto_next_start = {
["]]"] = "@function.outer"
},
goto_next_end = {
["]["] = "@function.outer"
},
goto_previous_start = {
["[["] = "@function.outer"
},
goto_previous_end = {
["[]"] = "@function.outer"
}
},
2023-02-24 07:31:04 +01:00
select = {
enable = true,
lookahead = true,
keymaps = {
2023-02-26 10:40:31 +01:00
-- You can use the capture groups defined in textobjects.scm
["af"] = "@function.outer",
["if"] = "@function.inner",
["ac"] = "@class.outer",
["ic"] = "@class.inner",
-- Or you can define your own textobjects like this
["iF"] = {
python = "(function_definition) @function",
cpp = "(function_definition) @function",
c = "(function_definition) @function",
java = "(method_declaration) @function",
go = "(method_declaration) @function"
}
2023-02-24 07:31:04 +01:00
}
},
2023-02-26 10:40:31 +01:00
swap = {
enable = true,
swap_next = {
["<leader>a"] = "@parameter.inner"
},
swap_previous = {
["<leader>A"] = "@parameter.inner"
}
}
2023-02-24 07:31:04 +01:00
},
ensure_installed = {
'javascript',
'typescript',
'css',
'json',
'c',
'lua',
'go'
},
2023-02-11 14:11:00 +01:00
sync_install = false,
auto_install = true,
highlight = {
enable = true,
additional_vim_regex_highlighting = false,
},
}