From 400d8d4116fe4e6bbb2f34b22a0c2389539d4182 Mon Sep 17 00:00:00 2001 From: Jeetaditya Chatterjee Date: Tue, 19 Oct 2021 01:32:57 +0100 Subject: [PATCH] feat(tree-sitter): bind textobjects to maps Instead of binding all of the tree sitter text objects to every map we only bind them to modes in the major-mode-language-alist --- modules/tools/tree-sitter/config.el | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/modules/tools/tree-sitter/config.el b/modules/tools/tree-sitter/config.el index 0af5b01fa..fc19c6167 100644 --- a/modules/tools/tree-sitter/config.el +++ b/modules/tools/tree-sitter/config.el @@ -1,9 +1,17 @@ ;;; tools/tree-sitter/config.el -*- lexical-binding: t; -*- + + (use-package! tree-sitter - :hook (prog-mode . turn-on-tree-sitter-mode) + ;; :hook (prog-mode . turn-on-tree-sitter-mode) + :defer t ;; loading is handled by individual modes :hook (tree-sitter-after-on . tree-sitter-hl-mode) :config + (defvar +tree-sitter-enabled-mode-maps (seq-map (lambda (mode) + (intern (concat + (symbol-name (car mode)) "-map"))) + tree-sitter-major-mode-language-alist) + "List of mode hooks for tree sitter enabled modes.") ;; This makes every node a link to a section of code (setq tree-sitter-debug-jump-buttons t ;; and this highlights the entire sub tree in your code @@ -21,6 +29,7 @@ :config ;; FIXME: only bind when using a supported major mode (map! + :map +tree-sitter-enabled-mode-maps :textobj "f" nil nil :textobj "f" (evil-textobj-tree-sitter-get-textobj "function.inner") (evil-textobj-tree-sitter-get-textobj "function.outer") ;; redef