feat(tree-sitter): goto functionality
This commit is contained in:
parent
75897af036
commit
89f82428e6
2 changed files with 36 additions and 1 deletions
10
modules/tools/tree-sitter/autoload.el
Normal file
10
modules/tools/tree-sitter/autoload.el
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
;;; tools/tree-sitter/autoload.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun +tree-sitter-goto-textobj (group &optional previous end query)
|
||||||
|
"Thin wrapper that returns the symbol of a named function, used in keybindings."
|
||||||
|
(let ((sym (intern (format "+goto%s%s-%s" (if previous "-previous" "") (if end "-end" "") group))))
|
||||||
|
(fset sym (lambda ()
|
||||||
|
(interactive)
|
||||||
|
(evil-textobj-tree-sitter-goto-textobj group previous end query)))
|
||||||
|
sym))
|
|
@ -11,12 +11,19 @@
|
||||||
|
|
||||||
(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-next-map (make-sparse-keymap))
|
||||||
|
|
||||||
(defvar +tree-sitter-keys-mode-map
|
(defvar +tree-sitter-keys-mode-map
|
||||||
(let ((keymap (make-sparse-keymap)))
|
(let ((keymap (make-sparse-keymap)))
|
||||||
|
;; ts text objects
|
||||||
(evil-define-key '(visual operator) '+tree-sitter-keys-mode
|
(evil-define-key '(visual operator) '+tree-sitter-keys-mode
|
||||||
"i" +tree-sitter-inner-text-objects-map
|
"i" +tree-sitter-inner-text-objects-map
|
||||||
"a" +tree-sitter-outer-text-objects-map)
|
"a" +tree-sitter-outer-text-objects-map)
|
||||||
|
;; ts goto nodes
|
||||||
|
(evil-define-key 'normal '+tree-sitter-keys-mode
|
||||||
|
"[g" +tree-sitter-goto-previous-map
|
||||||
|
"]g" +tree-sitter-goto-next-map)
|
||||||
keymap)
|
keymap)
|
||||||
"Basic keymap for tree sitter text objects")
|
"Basic keymap for tree sitter text objects")
|
||||||
|
|
||||||
|
@ -43,7 +50,25 @@
|
||||||
"C" (evil-textobj-tree-sitter-get-textobj "class.outer")
|
"C" (evil-textobj-tree-sitter-get-textobj "class.outer")
|
||||||
"c" (evil-textobj-tree-sitter-get-textobj "comment.outer")
|
"c" (evil-textobj-tree-sitter-get-textobj "comment.outer")
|
||||||
"i" (evil-textobj-tree-sitter-get-textobj "conditional.outer")
|
"i" (evil-textobj-tree-sitter-get-textobj "conditional.outer")
|
||||||
"l" (evil-textobj-tree-sitter-get-textobj "loop.outer")))
|
"l" (evil-textobj-tree-sitter-get-textobj "loop.outer"))
|
||||||
|
|
||||||
|
(:map +tree-sitter-goto-previous-map
|
||||||
|
"a" (+tree-sitter-goto-textobj "parameter.outer" t)
|
||||||
|
"f" (+tree-sitter-goto-textobj "function.outer" t)
|
||||||
|
"F" (+tree-sitter-goto-textobj "call.outer" t)
|
||||||
|
"C" (+tree-sitter-goto-textobj "class.outer" t)
|
||||||
|
"c" (+tree-sitter-goto-textobj "comment.outer" t)
|
||||||
|
"i" (+tree-sitter-goto-textobj "conditional.outer" t)
|
||||||
|
"l" (+tree-sitter-goto-textobj "loop.outer" t))
|
||||||
|
(:map +tree-sitter-goto-next-map
|
||||||
|
"a" (+tree-sitter-goto-textobj "parameter.outer")
|
||||||
|
"f" (+tree-sitter-goto-textobj "function.outer")
|
||||||
|
"F" (+tree-sitter-goto-textobj "call.outer")
|
||||||
|
"C" (+tree-sitter-goto-textobj "class.outer")
|
||||||
|
"c" (+tree-sitter-goto-textobj "comment.outer")
|
||||||
|
"i" (+tree-sitter-goto-textobj "conditional.outer")
|
||||||
|
"l" (+tree-sitter-goto-textobj "loop.outer")))
|
||||||
|
|
||||||
|
|
||||||
(after! which-key
|
(after! which-key
|
||||||
(setq which-key-allow-multiple-replacements t)
|
(setq which-key-allow-multiple-replacements t)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue