Add treesitter based navigation
Also add rustic
This commit is contained in:
parent
2baadca418
commit
4ef985d7e6
45
init.el
45
init.el
|
@ -79,6 +79,18 @@
|
||||||
;; Rainbow-Mode (show hex strings in color)
|
;; Rainbow-Mode (show hex strings in color)
|
||||||
(use-package rainbow-mode)
|
(use-package rainbow-mode)
|
||||||
|
|
||||||
|
;; Treesitter
|
||||||
|
(use-package tree-sitter
|
||||||
|
:config
|
||||||
|
(use-package tree-sitter-langs
|
||||||
|
:config
|
||||||
|
(tree-sitter-require 'rust)
|
||||||
|
(tree-sitter-require 'java))
|
||||||
|
(global-tree-sitter-mode +1))
|
||||||
|
|
||||||
|
;; Rust support
|
||||||
|
(use-package rustic)
|
||||||
|
|
||||||
;; Evil (Vim Emulation)
|
;; Evil (Vim Emulation)
|
||||||
(use-package evil
|
(use-package evil
|
||||||
:init
|
:init
|
||||||
|
@ -88,3 +100,36 @@
|
||||||
:config
|
:config
|
||||||
(evil-set-initial-state 'prog-mode 'normal)
|
(evil-set-initial-state 'prog-mode 'normal)
|
||||||
(evil-mode +1))
|
(evil-mode +1))
|
||||||
|
|
||||||
|
;; Treesitter based navigation
|
||||||
|
(use-package evil-textobj-tree-sitter
|
||||||
|
:config
|
||||||
|
(let ((define-scope (lambda (key outer inner)
|
||||||
|
(define-key evil-outer-text-objects-map key outer)
|
||||||
|
(define-key evil-inner-text-objects-map key inner)))
|
||||||
|
(define-jumps (lambda (key name)
|
||||||
|
(let ((key key) (name name))
|
||||||
|
(define-key evil-normal-state-map (kbd (concat "]" key))
|
||||||
|
`(lambda () (interactive)
|
||||||
|
(evil-textobj-tree-sitter-goto-textobj (concat ',name ".outer"))))
|
||||||
|
(define-key evil-normal-state-map (kbd (concat "[" key))
|
||||||
|
`(lambda () (interactive)
|
||||||
|
(evil-textobj-tree-sitter-goto-textobj (concat ',name ".outer") t)))
|
||||||
|
(define-key evil-normal-state-map (kbd (concat "]" (upcase key)))
|
||||||
|
`(lambda () (interactive)
|
||||||
|
(evil-textobj-tree-sitter-goto-textobj (concat ',name ".outer") nil t)))
|
||||||
|
(define-key evil-normal-state-map (kbd (concat "[" (upcase key)))
|
||||||
|
`(lambda () (interactive)
|
||||||
|
(evil-textobj-tree-sitter-goto-textobj (concat ',name ".outer") t t)))))
|
||||||
|
))
|
||||||
|
;; Define new scope symbols for use with i and a
|
||||||
|
(funcall define-scope "c"
|
||||||
|
(evil-textobj-tree-sitter-get-textobj "class.outer")
|
||||||
|
(evil-textobj-tree-sitter-get-textobj "class.inner"))
|
||||||
|
(funcall define-scope "f"
|
||||||
|
(evil-textobj-tree-sitter-get-textobj "function.outer")
|
||||||
|
(evil-textobj-tree-sitter-get-textobj "function.inner"))
|
||||||
|
|
||||||
|
;; Define jumps with ] and [
|
||||||
|
(funcall define-jumps "c" "class")
|
||||||
|
(funcall define-jumps "f" "function")))
|
||||||
|
|
Loading…
Reference in a new issue