Add treesitter based navigation
Also add rustic
This commit is contained in:
		
							parent
							
								
									2baadca418
								
							
						
					
					
						commit
						4ef985d7e6
					
				
					 1 changed files with 45 additions and 0 deletions
				
			
		
							
								
								
									
										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…
	
	Add table
		Add a link
		
	
		Reference in a new issue