Author: Kyle Fuller <kyle@fuller.li> 2025-07-12 17:16:39 +0100 +0100
Committer: Kyle Fuller <kyle@fuller.li> 2025-07-12 17:16:39 +0100 +0100
Commit: f2b7b1e5fa404b4b801284ff053cc1087ea76ffd
Parent: 9ffe81f22ce350bebbdd9707717b0996f866191b
feat(vim): enable treesitter
diff --git a/.config/home-manager/home.nix b/.config/home-manager/home.nix
index bf819b89148644c5f987a21e48aa3659e73aad0b..e80c16e63b6d40f539e6cd880af7ef66d3f9fdc7 100644
--- a/.config/home-manager/home.nix
+++ b/.config/home-manager/home.nix
@@ -152,6 +152,21 @@ cmp-buffer
cmp-nvim-lsp
vim-vsnip
cmp-vsnip
+
+ # treesitter
+ nvim-treesitter
+ nvim-treesitter-textobjects
+ nvim-treesitter-parsers.bash
+ nvim-treesitter-parsers.dockerfile
+ nvim-treesitter-parsers.go
+ nvim-treesitter-parsers.java
+ nvim-treesitter-parsers.lua
+ nvim-treesitter-parsers.make
+ nvim-treesitter-parsers.markdown
+ nvim-treesitter-parsers.markdown_inline
+ nvim-treesitter-parsers.python
+ nvim-treesitter-parsers.terraform
+ nvim-treesitter-parsers.toml
];
};
programs.direnv.enable = true;
diff --git a/.config/nvim/lua/kyle/init.lua b/.config/nvim/lua/kyle/init.lua
index 294fa6b97008840cd7586d109299a46c03927fe8..b465de0fa0a799215781c43b35dce3ff53d7df1f 100644
--- a/.config/nvim/lua/kyle/init.lua
+++ b/.config/nvim/lua/kyle/init.lua
@@ -1,3 +1,4 @@
require('kyle.lspconfig')
require('kyle.mapping')
require('kyle.options')
+require('kyle.treesitter')
diff --git a/.config/nvim/lua/kyle/treesitter.lua b/.config/nvim/lua/kyle/treesitter.lua
new file mode 100644
index 0000000000000000000000000000000000000000..b4b313df13166924e7508995121286b35d85a61b
--- /dev/null
+++ b/.config/nvim/lua/kyle/treesitter.lua
@@ -0,0 +1,55 @@
+require'nvim-treesitter.configs'.setup {
+ highlight = {
+ enable = true
+ },
+ textobjects = {
+ select = {
+ enable = true,
+ lookahead = true,
+ keymaps = {
+ ["ac"] = "@class.outer",
+ ["ic"] = "@class.inner",
+ ["af"] = "@function.outer",
+ ["if"] = "@function.inner",
+ ["ap"] = "@parameter.outer",
+ ["ip"] = "@parameter.inner",
+ },
+ selection_modes = {
+ ['@class.outer'] = '<c-v>', -- blockwise
+ ['@function.outer'] = 'V', -- linewise
+ ['@parameter.outer'] = 'v', -- charwise
+ },
+ },
+ swap = {
+ enable = true,
+ swap_next = {
+ ["<leader>a"] = "@parameter.inner",
+ },
+ swap_previous = {
+ ["<leader>A"] = "@parameter.inner",
+ },
+ },
+ move = {
+ enable = true,
+ set_jumps = true,
+ goto_next_start = {
+ ["]]"] = "@class.outer",
+ ["]m"] = "@function.outer",
+ ["]p"] = "@parameter.outer",
+ },
+ goto_next_end = {
+ ["]["] = "@class.outer",
+ ["]M"] = "@function.outer",
+ },
+ goto_previous_start = {
+ ["[["] = "@class.outer",
+ ["[m"] = "@function.outer",
+ ["[p"] = "@parameter.outer",
+ },
+ goto_previous_end = {
+ ["[]"] = "@class.outer",
+ ["[M"] = "@function.outer",
+ },
+ },
+ },
+}