fix(tree-sitter): no longer eager load tree sitter

This commit is contained in:
Jeetaditya Chatterjee 2022-05-22 21:25:28 +01:00
parent 984564ea6c
commit 84d47016d0
No known key found for this signature in database
GPG key ID: 09D54CECD2132B91
2 changed files with 21 additions and 14 deletions

View file

@ -5,6 +5,13 @@
(interactive) (interactive)
(turn-on-tree-sitter-mode)) (turn-on-tree-sitter-mode))
;; HACK: Remove and refactor when `use-package' eager macro expansion is solved or `use-package!' is removed
;;;###autoload
(defun +tree-sitter-get-textobj (group &optional query)
"A wrapper around `evil-textobj-tree-sitter-get-textobj' to
prevent eager expansion."
(eval `(evil-textobj-tree-sitter-get-textobj ,group ,query)))
;;;###autoload ;;;###autoload
(defun +tree-sitter-goto-textobj (group &optional previous end query) (defun +tree-sitter-goto-textobj (group &optional previous end query)
"Thin wrapper that returns the symbol of a named function, used in keybindings." "Thin wrapper that returns the symbol of a named function, used in keybindings."

View file

@ -3,6 +3,7 @@
(use-package! tree-sitter (use-package! tree-sitter
:hook (tree-sitter-after-on . tree-sitter-hl-mode) :hook (tree-sitter-after-on . tree-sitter-hl-mode)
:config :config
(require 'tree-sitter-langs)
;; This makes every node a link to a section of code ;; This makes every node a link to a section of code
(setq tree-sitter-debug-jump-buttons t (setq tree-sitter-debug-jump-buttons t
;; and this highlights the entire sub tree in your code ;; and this highlights the entire sub tree in your code
@ -12,7 +13,6 @@
:when (featurep! :editor evil +everywhere) :when (featurep! :editor evil +everywhere)
:after tree-sitter :after tree-sitter
:config :config
(defvar +tree-sitter-inner-text-objects-map (make-sparse-keymap)) (defvar +tree-sitter-inner-text-objects-map (make-sparse-keymap))
(defvar +tree-sitter-outer-text-objects-map (make-sparse-keymap)) (defvar +tree-sitter-outer-text-objects-map (make-sparse-keymap))
(defvar +tree-sitter-goto-previous-map (make-sparse-keymap)) (defvar +tree-sitter-goto-previous-map (make-sparse-keymap))
@ -26,20 +26,20 @@
"]g" +tree-sitter-goto-next-map) "]g" +tree-sitter-goto-next-map)
(map! (:map +tree-sitter-inner-text-objects-map (map! (:map +tree-sitter-inner-text-objects-map
"A" (evil-textobj-tree-sitter-get-textobj ("parameter.inner" "call.inner")) "A" (+tree-sitter-get-textobj '("parameter.inner" "call.inner"))
"f" (evil-textobj-tree-sitter-get-textobj "function.inner") "f" (+tree-sitter-get-textobj "function.inner")
"F" (evil-textobj-tree-sitter-get-textobj "call.inner") "F" (+tree-sitter-get-textobj "call.inner")
"C" (evil-textobj-tree-sitter-get-textobj "class.inner") "C" (+tree-sitter-get-textobj "class.inner")
"v" (evil-textobj-tree-sitter-get-textobj "conditional.inner") "v" (+tree-sitter-get-textobj "conditional.inner")
"l" (evil-textobj-tree-sitter-get-textobj "loop.inner")) "l" (+tree-sitter-get-textobj "loop.inner"))
(:map +tree-sitter-outer-text-objects-map (:map +tree-sitter-outer-text-objects-map
"A" (evil-textobj-tree-sitter-get-textobj ("parameter.outer" "call.outer")) "A" (+tree-sitter-get-textobj '("parameter.outer" "call.outer"))
"f" (evil-textobj-tree-sitter-get-textobj "function.outer") "f" (+tree-sitter-get-textobj "function.outer")
"F" (evil-textobj-tree-sitter-get-textobj "call.outer") "F" (+tree-sitter-get-textobj "call.outer")
"C" (evil-textobj-tree-sitter-get-textobj "class.outer") "C" (+tree-sitter-get-textobj "class.outer")
"c" (evil-textobj-tree-sitter-get-textobj "comment.outer") "c" (+tree-sitter-get-textobj "comment.outer")
"v" (evil-textobj-tree-sitter-get-textobj "conditional.outer") "v" (+tree-sitter-get-textobj "conditional.outer")
"l" (evil-textobj-tree-sitter-get-textobj "loop.outer")) "l" (+tree-sitter-get-textobj "loop.outer"))
(:map +tree-sitter-goto-previous-map (:map +tree-sitter-goto-previous-map
"a" (+tree-sitter-goto-textobj "parameter.outer" t) "a" (+tree-sitter-goto-textobj "parameter.outer" t)