chore(treesit): tweak setup of built-in treesit modes

This commit is contained in:
2023-05-09 01:11:29 +01:00
parent 5d65b32d1a
commit 146d2311a9
6 changed files with 51 additions and 38 deletions

View File

@@ -136,6 +136,7 @@
(require 'siren-string-inflection)
(require 'siren-toggle-comments)
(require 'siren-tree-sitter)
(require 'siren-treesit)
(require 'siren-yasnippet)
;; Version control

View File

@@ -7,7 +7,6 @@
;;; Code:
(require 'siren-lsp)
(require 'siren-treesit)
(if (fboundp 'dockerfile-ts-mode)
;; Use built-in treesit support if available.
@@ -21,17 +20,24 @@
:init
(require 'siren-treesit)
(siren-treesit-prepare
'dockerfile-ts-mode
'(dockerfile "https://github.com/camdencheek/tree-sitter-dockerfile"))
:config
(siren-flycheck-setup-hadolint))
(siren-flycheck-setup-hadolint)
;; Remove auto-mode-alist entry added by dockerfile-ts-mode, as it's too
;; greedy and matches on files such as "siren-dockerfile.el" which is a
;; problem when trying to edit this file for example.
(setq auto-mode-alist
(delete '("\\(?:Dockerfile\\(?:\\..*\\)?\\|\\.[Dd]ockerfile\\)\\'"
. dockerfile-ts-mode)
auto-mode-alist)))
;; Otherwise, fallback to regular dockerfile-mode.
(use-package dockerfile-mode
:hook (dockerfile-mode . siren-dockerfile-mode-setup)
:config (siren-flycheck-setup-hadolint)))
:hook
(dockerfile-mode . siren-dockerfile-mode-setup)
:config
(siren-flycheck-setup-hadolint)))
(defun siren-dockerfile-mode-setup ()
"Shared setup for both `dockerfile-mode' and `dockerfile-ts-mode'."

View File

@@ -22,10 +22,7 @@
(toml-ts-mode . siren-toml-mode-setup)
:init
(require 'siren-treesit)
(siren-treesit-prepare
'toml-ts-mode
'(toml "https://github.com/tree-sitter/tree-sitter-toml"))))
(require 'siren-treesit)))
(defun siren-toml-mode-setup ()
(run-hooks 'prog-mode-hook)

View File

@@ -6,38 +6,38 @@
;;; Code:
(require 'siren-flycheck)
(require 'siren-lsp)
(require 'siren-treesit)
;; Requires Emacs 29.x or later for built-in treesit support.
(when (fboundp 'treesit-ready-p)
(require 'siren-flycheck)
(require 'siren-lsp)
(require 'siren-treesit)
(let ((repo "https://github.com/tree-sitter/tree-sitter-typescript")
(ref "v0.20.2"))
(siren-treesit-prepare
'typescript-ts-mode
`(typescript . (,repo ,ref "typescript/src")))
(siren-treesit-prepare
'tsx-ts-mode
`(tsx . (,repo ,ref "tsx/src"))))
(use-package typescript-ts-mode
:straight (:type built-in)
:mode "\\.ts\\'"
:hook
(typescript-ts-mode . siren-typescript-mode-setup)
(use-package typescript-ts-mode
:straight (:type built-in)
:mode "\\.ts\\'"
:hook
(typescript-ts-mode . siren-typescript-mode-setup))
:config
(when (not (treesit-ready-p 'typescript))
(treesit-install-language-grammar 'typescript)))
(use-package tsx-ts-mode
:straight (:type built-in)
:mode "\\.tsx\\'")
(use-package tsx-ts-mode
:straight (:type built-in)
:mode "\\.tsx\\'"
:config
(when (not (treesit-ready-p 'tsx))
(treesit-install-language-grammar 'tsx)))
(defun siren-typescript-mode-setup ()
"Default setup function for `typescript-mode' and `typescript-ts-mode'."
(let ((width 2))
(setq-local typescript-indent-level width
indent-level width
tab-width width))
(defun siren-typescript-mode-setup ()
"Default setup function for `typescript-ts-mode' and `tsx-ts-mode'."
(let ((width 2))
(setq-local typescript-indent-level width
indent-level width
tab-width width))
(lsp-deferred)
(flycheck-mode t))
(lsp-deferred)
(flycheck-mode t)))
(provide 'siren-typescript)
;;; siren-typescript.el ends here

View File

@@ -16,5 +16,13 @@
(when (not (treesit-ready-p ',lang))
(treesit-install-language-grammar ',lang))))))
(use-package treesit-auto
:demand t
:if (fboundp 'treesit-ready-p)
:custom
(treesit-auto-install nil)
:config
(global-treesit-auto-mode))
(provide 'siren-treesit)
;;; siren-treesit.el ends here

View File

@@ -228,6 +228,7 @@
("treemacs" . "127485317a19254ca20ba1910d10edf7dbaa2d97")
("treemacs-nerd-icons" . "c6f4a74ea4f414528fc43a6fe95f7f17687faeb4")
("treepy.el" . "7c4a0d21322506a4d4b2301b4274ec955b429b47")
("treesit-auto" . "bac3b9d1d61a4d759f87c80de7be3b808d19cbf6")
("use-package" . "77945e002f11440eae72d8730d3de218163d551e")
("uuidgen-el" . "7b728c1d92e196c3acf87a004949335cfc18eab3")
("vertico" . "7e2375b6f09579b5845dbf35ad168a8c6fc70e66")