diff options
| author | JackJ30 <jackqjamison@proton.me> | 2024-11-18 21:15:31 -0500 |
|---|---|---|
| committer | JackJ30 <jackqjamison@proton.me> | 2024-11-18 21:15:31 -0500 |
| commit | dab65bce6e5c17098c1384147c53c0c20eff830b (patch) | |
| tree | 44f7da87715ceaf42439a1d92a86047be56f5649 /.config/emacs | |
| parent | f550e3a9492916aff5ed16bac36990417bb77d73 (diff) | |
treesitter and tsx modes
Diffstat (limited to '.config/emacs')
| -rw-r--r-- | .config/emacs/init.el | 70 |
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 |
