about summary refs log tree commit diff
path: root/fnl/nvrc/packs/treesitter.fnl
diff options
context:
space:
mode:
authorsefidel <contact@sefidel.net>2022-02-26 23:33:46 +0900
committersefidel <contact@sefidel.net>2022-02-26 23:33:46 +0900
commite1d93225e090c68b0a7d4f37f31eab16e06e2a02 (patch)
treed18aa953615e3923207ca5d599d8a5559f0f744a /fnl/nvrc/packs/treesitter.fnl
parent50221c9e9c73be4d28e3bc3ce85c69938ec410c1 (diff)
downloadnvimrc-e1d93225e090c68b0a7d4f37f31eab16e06e2a02.tar.gz
nvimrc-e1d93225e090c68b0a7d4f37f31eab16e06e2a02.zip
feat(pack): add treesitter-{refactor,textobjects}
Diffstat (limited to 'fnl/nvrc/packs/treesitter.fnl')
-rw-r--r--fnl/nvrc/packs/treesitter.fnl53
1 files changed, 48 insertions, 5 deletions
diff --git a/fnl/nvrc/packs/treesitter.fnl b/fnl/nvrc/packs/treesitter.fnl
index 2d12e1a..5ffd1fa 100644
--- a/fnl/nvrc/packs/treesitter.fnl
+++ b/fnl/nvrc/packs/treesitter.fnl
@@ -3,15 +3,58 @@
 (local colors (require :nvrc.colors))
 
 (setup {:ensure_installed [:fennel :lua :nix]
-        :highlight {:enable true
-                    :use_languagetree true}
+        :highlight {:enable true :use_languagetree true}
         :rainbow {:enable true
                   :extended_mode true
                   :max_file_lines 2000
-                  :disable ["c" "cpp"]
-                  :colors [
-                           (. colors :skyblue)
+                  :disable [:c :cpp]
+                  :colors [(. colors :skyblue)
                            (. colors :blue)
                            (. colors :violet)
                            (. colors :magenta)]}
+        :incremental_selection {:enable true
+                                :keymaps {:init_selection :gnn
+                                          :node_incremental :grn
+                                          :scope_incremental :grc
+                                          :node_decremental :grm}}
+        :refactor {:highlight_definitions {:enable true}
+                   :highlight_current_scope {:enable false}
+                   :smart_rename {:enable true :keymaps {:smart_rename :grr}}
+                   :navigation {:enable true
+                                :keymaps {:goto_definition :gnd
+                                          :list_definitions :gnD
+                                          :goto_next_usage :<M-2>
+                                          :goto_previous_usage :<M-1>}}}
+        :textobjects {:select {:enable true
+                               :lookahead true
+                               :keymaps {: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"}}
+                      :swap {:enable true
+                             :swap_next {:<M-l> "@parameter.inner"
+                                         :<M-j> "@function.outer"}
+                             :swap_previous {:<M-h> "@parameter.inner"
+                                             :<M-k> "@function.outer"}}
+                      :move {:enable true
+                             :set_jumps true
+                             :goto_next_start {"]m" "@function.outer"
+                                               "][" "@class.outer"}
+                             :goto_next_end {"]M" "@function.outer"
+                                             "]]" "@class.outer"}
+                             :goto_previous_start {"[m" "@function.outer"
+                                                   "[[" "@class.outer"}
+                             :goto_previous_end {"[M" "@function.outer"
+                                                 "[]" "@class.outer"}}}
         :indent {:enable true}})