From 5b2e7b2b7c6b3ac3556d4caeba0116af13f9dcb3 Mon Sep 17 00:00:00 2001
From: Gustaf Rydholm <gustaf.rydholm@gmail.com>
Date: Sun, 17 Sep 2023 23:00:07 +0200
Subject: Add text-objects

---
 fnl/plugins/editor/treesitter.fnl | 71 ++++++++++++++++++++++++---------------
 1 file changed, 43 insertions(+), 28 deletions(-)

(limited to 'fnl/plugins')

diff --git a/fnl/plugins/editor/treesitter.fnl b/fnl/plugins/editor/treesitter.fnl
index bb22287..1c85ea4 100644
--- a/fnl/plugins/editor/treesitter.fnl
+++ b/fnl/plugins/editor/treesitter.fnl
@@ -1,40 +1,55 @@
 ;; Treesitter is a tool for building syntax trees for source files.
 ;; In the neovim context it helps with better coloring.
 
-(local opts {:ensure_installed [:c
-                                :dockerfile
-                                :erlang
-                                :fennel
-                                :go
-                                :haskell
-                                :hcl
-                                :html
-                                :latex
-                                :lua
-                                :make
-                                :markdown
-                                :ocaml
-                                :org
-                                :python
-                                :rust
-                                :sql
-                                :toml
-                                :vim
-                                :yaml]
-             :sync_install false
-             :ignore_install [""]
-             :autopairs {:enable true}
-             :highlight {:enable true
-                         :additional_vim_regex_highlighting [:org]}
-             :context_commentstring {:enable true :enable_autocmd false}
-             :indent {:enable true :disable [:yaml :python :css]}
-             :playground {:enable true}})
+(local opts
+       {:ensure_installed [:c
+                           :dockerfile
+                           :erlang
+                           :fennel
+                           :go
+                           :haskell
+                           :hcl
+                           :html
+                           :latex
+                           :lua
+                           :make
+                           :markdown
+                           :ocaml
+                           :org
+                           :python
+                           :rust
+                           :sql
+                           :toml
+                           :vim
+                           :yaml]
+        :sync_install false
+        :ignore_install [""]
+        :autopairs {:enable true}
+        :highlight {:enable true :additional_vim_regex_highlighting [:org]}
+        :context_commentstring {:enable true :enable_autocmd false}
+        :indent {:enable true :disable [:yaml :python :css]}
+        :playground {:enable true}
+        :textobjects {:select {:enable true
+                               :lookahead true
+                               :keymaps {:af "@function.outer"
+                                         :if "@function.inner"
+                                         :ac "@class.outer"
+                                         :ic {:query "@class.inner"
+                                              :desc "Select inner part of a class region"}
+                                         :as {:query "@scope"
+                                              :query_group :locals
+                                              :desc "Select language scope"}}
+                               :selection_modes {"@parameter.outer" :v
+                                                 "@function.outer" :V
+                                                 "@class.outer" :<c-v>}
+                               :include_surrounding_whitespace true}}})
 
 (fn setup []
   (let [treesitter (require :nvim-treesitter.configs)]
     (treesitter.setup opts)))
 
 {1 :nvim-treesitter/nvim-treesitter
+ :dependencies [{1 :nvim-treesitter/nvim-treesitter-textobjects}]
  :build ":TSUpdate"
  :event :VeryLazy
  :config (fn []
-- 
cgit v1.2.3-70-g09d2