summaryrefslogtreecommitdiff
path: root/.config/emacs
diff options
context:
space:
mode:
authorJackJ30 <jackqjamison@proton.me>2024-11-18 21:15:31 -0500
committerJackJ30 <jackqjamison@proton.me>2024-11-18 21:15:31 -0500
commitdab65bce6e5c17098c1384147c53c0c20eff830b (patch)
tree44f7da87715ceaf42439a1d92a86047be56f5649 /.config/emacs
parentf550e3a9492916aff5ed16bac36990417bb77d73 (diff)
treesitter and tsx modes
Diffstat (limited to '.config/emacs')
-rw-r--r--.config/emacs/init.el70
1 files changed, 66 insertions, 4 deletions
diff --git a/.config/emacs/init.el b/.config/emacs/init.el
index 38b0b7b..ff131f2 100644
--- a/.config/emacs/init.el
+++ b/.config/emacs/init.el
@@ -296,12 +296,71 @@
;; - projectile
;; - tree sitter
-(use-package tree-sitter
- :diminish tree-sitter-mode
- :config
- (global-tree-sitter-mode 1))
+(use-package treesit
+ :elpaca nil
+ :mode (("\\.tsx\\'" . tsx-ts-mode)
+ ("\\.js\\'" . typescript-ts-mode)
+ ("\\.mjs\\'" . typescript-ts-mode)
+ ("\\.mts\\'" . typescript-ts-mode)
+ ("\\.cjs\\'" . typescript-ts-mode)
+ ("\\.ts\\'" . typescript-ts-mode)
+ ("\\.jsx\\'" . tsx-ts-mode)
+ ("\\.json\\'" . json-ts-mode)
+ ("\\.Dockerfile\\'" . dockerfile-ts-mode)
+ ("\\.prisma\\'" . prisma-ts-mode)
+ ;; More modes defined here...
+ )
+ :preface
+ (defun os/setup-install-grammars ()
+ "Install Tree-sitter grammars if they are absent."
+ (interactive)
+ (dolist (grammar
+ '((css . ("https://github.com/tree-sitter/tree-sitter-css" "v0.20.0"))
+ (bash "https://github.com/tree-sitter/tree-sitter-bash")
+ (html . ("https://github.com/tree-sitter/tree-sitter-html" "v0.20.1"))
+ (javascript . ("https://github.com/tree-sitter/tree-sitter-javascript" "v0.21.2" "src"))
+ (json . ("https://github.com/tree-sitter/tree-sitter-json" "v0.20.2"))
+ (python . ("https://github.com/tree-sitter/tree-sitter-python" "v0.20.4"))
+ (go "https://github.com/tree-sitter/tree-sitter-go" "v0.20.0")
+ (markdown "https://github.com/ikatyang/tree-sitter-markdown")
+ (make "https://github.com/alemuller/tree-sitter-make")
+ (elisp "https://github.com/Wilfred/tree-sitter-elisp")
+ (cmake "https://github.com/uyha/tree-sitter-cmake")
+ (c "https://github.com/tree-sitter/tree-sitter-c")
+ (cpp "https://github.com/tree-sitter/tree-sitter-cpp")
+ (toml "https://github.com/tree-sitter/tree-sitter-toml")
+ (tsx . ("https://github.com/tree-sitter/tree-sitter-typescript" "v0.20.3" "tsx/src"))
+ (typescript . ("https://github.com/tree-sitter/tree-sitter-typescript" "v0.20.3" "typescript/src"))
+ (yaml . ("https://github.com/ikatyang/tree-sitter-yaml" "v0.5.0"))
+ (prisma "https://github.com/victorhqc/tree-sitter-prisma")))
+ (add-to-list 'treesit-language-source-alist grammar)
+ ;; Only install `grammar' if we don't already have it
+ ;; installed. However, if you want to *update* a grammar then
+ ;; this obviously prevents that from happening.
+ (unless (treesit-language-available-p (car grammar))
+ (treesit-install-language-grammar (car grammar)))))
+
+ ;; Optional, but recommended. Tree-sitter enabled major modes are
+ ;; distinct from their ordinary counterparts.
+ ;;
+ ;; You can remap major modes with `major-mode-remap-alist'. Note
+ ;; that this does *not* extend to hooks! Make sure you migrate them
+ ;; also
+ (dolist (mapping
+ '((css-mode . css-ts-mode)
+ (typescript-mode . typescript-ts-mode)
+ (js-mode . typescript-ts-mode)
+ (js2-mode . typescript-ts-mode)
+ (json-mode . json-ts-mode)
+ (js-json-mode . json-ts-mode)))
+ (add-to-list 'major-mode-remap-alist mapping))
+ :config
+ (os/setup-install-grammars))
+
(use-package tree-sitter-langs)
+;; - combobulate
+
;; - snippet
(use-package yasnippet
:config
@@ -324,6 +383,9 @@
(c++-mode . lsp-deferred)
(python-mode . lsp-deferred)
(csharp-mode . lsp)
+ ((tsx-ts-mode
+ typescript-ts-mode
+ js-ts-mode) . lsp-deferred)
)
:custom
(lsp-completion-provider :none) ; corfu