From ff93725694b6c961fc77ce9f9a444425a5b049e0 Mon Sep 17 00:00:00 2001 From: Sanchayan Maity Date: Fri, 1 Oct 2021 20:26:39 +0530 Subject: [PATCH] nvim: treesitter: Update treesitter configuration --- nvim/.config/nvim/lua/treesitter.lua | 93 ++++++++++++++++++++-------- 1 file changed, 68 insertions(+), 25 deletions(-) diff --git a/nvim/.config/nvim/lua/treesitter.lua b/nvim/.config/nvim/lua/treesitter.lua index fe5618a..3bf4067 100644 --- a/nvim/.config/nvim/lua/treesitter.lua +++ b/nvim/.config/nvim/lua/treesitter.lua @@ -1,27 +1,75 @@ +-- Required to enable textobjects. See +-- https://github.com/nvim-treesitter/nvim-treesitter-textobjects/issues/100. +require'nvim-treesitter-textobjects' + +local ts_langs = { "bash", "c", "clojure", "cpp", "fennel", "fish", "haskell", "java", "javascript", "jsdoc", "json", "lua", "nix", "python", "query", "rust", "teal", "toml", "tsx", "typescript", "verilog", "vim" } + +require'nvim-treesitter.install'.compilers = { "gcc" } require'nvim-treesitter.configs'.setup { - ensure_installed = { "bash", "c", "clojure", "cpp", "fennel", "fish", "haskell", "java", "javascript", "jsdoc", "json", "lua", "nix", "python", "query", "rust", "toml" }, - highlight = { enable = true, }, + ensure_installed = ts_langs, + highlight = { enable = true, }, textobjects = { select = { - enable = true, + enable = true, + lookahead = true, keymaps = { - ["ab"] = "@block.outer" , - ["ib"] = "@block.inner" , - ["aC"] = "@call.outer" , - ["iC"] = "@call.inner" , - ["ao"] = "@class.outer" , - ["io"] = "@class.inner" , - ["at"] = "@comment.outer" , - ["ac"] = "@conditional.outer", - ["ic"] = "@conditional.inner", - ["af"] = "@function.outer" , - ["if"] = "@function.inner" , - ["al"] = "@loop.outer" , - ["il"] = "@loop.inner" , - ["ap"] = "@parameter.outer" , - ["ip"] = "@parameter.inner" , - ["is"] = "@scopename.inner" , - ["as"] = "@statement.outer" , + ["ab"] = "@block.outer" , + ["ib"] = "@block.inner" , + -- We use M,m for call/conditional as C/c would conflict with textobj-word-column + ["aM"] = "@call.outer" , + ["iM"] = "@call.inner" , + ["ao"] = "@class.outer" , + ["io"] = "@class.inner" , + ["at"] = "@comment.outer" , + ["am"] = "@conditional.outer", + ["im"] = "@conditional.inner", + ["af"] = "@function.outer" , + ["if"] = "@function.inner" , + ["al"] = "@loop.outer" , + ["il"] = "@loop.inner" , + ["ap"] = "@parameter.outer" , + ["ip"] = "@parameter.inner" , + ["is"] = "@scopename.inner" , + ["as"] = "@statement.outer" , + }, + }, + swap = { + enable = true, + swap_next = { + ["sb"] = "@block.outer" , + ["sl"] = "@call.outer" , + ["sc"] = "@class.outer" , + ["sf"] = "@function.outer" , + ["sp"] = "@parameter.inner", + ["ss"] = "@statement.outer", + }, + swap_previous = { + ["sB"] = "@block.outer" , + ["sL"] = "@call.outer" , + ["sC"] = "@class.outer" , + ["sF"] = "@function.outer" , + ["sP"] = "@parameter.inner", + ["sS"] = "@statement.outer", + }, + }, + move = { + enable = true, + set_jumps = true, + goto_next_start = { + ["]m"] = "@function.outer", + ["]s"] = "@class.outer", + }, + goto_next_end = { + ["]M"] = "@function.outer", + ["]S"] = "@class.outer", + }, + goto_previous_start = { + ["[m"] = "@function.outer", + ["[s"] = "@class.outer", + }, + goto_previous_end = { + ["[M"] = "@function.outer", + ["[S"] = "@class.outer", }, }, }, @@ -30,11 +78,6 @@ require'nvim-treesitter.configs'.setup { use_virtual_text = true, lint_events = { "BufWrite", "CursorHold" }, }, -} - -require'nvim-treesitter.install'.compilers = { "gcc" } - -require "nvim-treesitter.configs".setup { playground = { enable = true, disable = {},