diff --git a/core/siren-core-modules.el b/core/siren-core-modules.el index 72439bb..ebd4525 100644 --- a/core/siren-core-modules.el +++ b/core/siren-core-modules.el @@ -219,12 +219,15 @@ (require 'siren-terraform) (require 'siren-thrift) (require 'siren-toml) -(require 'siren-typescript) (require 'siren-vue) (require 'siren-web-mode) (require 'siren-x509) (require 'siren-xml) (require 'siren-yaml) +;; Languages that require Emacs' 29.x built-in treesit functionality. +(when (fboundp 'treesit-ready-p) + (require 'siren-typescript)) + (provide 'siren-core-modules) ;;; siren-core-modules.el ends here diff --git a/modules/languages/siren-typescript.el b/modules/languages/siren-typescript.el index e0a3d80..c49d7db 100644 --- a/modules/languages/siren-typescript.el +++ b/modules/languages/siren-typescript.el @@ -8,52 +8,38 @@ (require 'siren-flycheck) (require 'siren-lsp) -(require 'siren-web-mode) +(require 'siren-treesit) -(use-package typescript-mode - :defer t +(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-mode . siren-typescript-mode-setup) + (typescript-mode . siren-typescript-mode-setup)) - :general - (:keymaps 'typescript-mode-map - "C-j" 'newline-and-indent) - - :preface - (defun siren-typescript-mode-setup () - (let ((width 2)) - (setq-local typescript-indent-level width - indent-level width - tab-width width)) - - (lsp-deferred) - (flycheck-mode t))) - -(use-package tide +(use-package tsx-ts-mode + :straight (:type built-in) + :mode "\\.tsx\\'" :hook - (typescript-mode . siren-tide-mode-setup) - (web-mode . siren-tide-web-mode-setup) + (typescript-mode . siren-typescript-mode-setup)) - :preface - (defun siren-tide-web-mode-setup () - (when (string-equal "tsx" (file-name-extension buffer-file-name)) - (siren-tide-mode-setup))) +(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-tide-mode-setup () - (interactive) - (tide-setup) - - (setq-local flycheck-check-syntax-automatically '(save mode-enabled) - company-tooltip-align-annotations t) - - (eldoc-mode t) - (tide-hl-identifier-mode t)) - - :init - (add-to-list 'auto-mode-alist '("\\.tsx\\'" . web-mode)) - (with-eval-after-load 'flycheck - (flycheck-add-mode 'typescript-tslint 'web-mode))) + (lsp-deferred) + (flycheck-mode t)) (provide 'siren-typescript) ;;; siren-typescript.el ends here diff --git a/modules/text-editing/siren-treesit.el b/modules/text-editing/siren-treesit.el new file mode 100644 index 0000000..05f8b44 --- /dev/null +++ b/modules/text-editing/siren-treesit.el @@ -0,0 +1,20 @@ +;;; siren-treesit.el --- jimeh's Emacs Siren: treesit + +;;; Commentary: + +;; Configuration for treesit + +;;; Code: + +(require 'treesit) + +(defun siren-treesit-prepare (mode source) + "Setup treesit for MODE with SOURCE." + (add-to-list 'treesit-language-source-alist source) + (let ((lang (car source))) + (advice-add mode :before `(lambda (&rest _) + (when (not (treesit-ready-p ',lang)) + (treesit-install-language-grammar ',lang)))))) + +(provide 'siren-treesit) +;;; siren-treesit.el ends here diff --git a/straight/versions/default.el b/straight/versions/default.el index 16889b3..e9fa031 100644 --- a/straight/versions/default.el +++ b/straight/versions/default.el @@ -215,12 +215,10 @@ ("terraform-doc" . "16179e57ce290190c222b27961900657a1981330") ("terraform-mode" . "39d2fd5bfc86c6bf1c7bc38e6f0016d714f2d79d") ("themes" . "b5ff201f4bea4286e9ed015a2043cf2394182232") - ("tide" . "29475d9eee26f4101322209e9b6b199df5386094") ("transient" . "239be53b01e003c5206087d850d9672a42dc4b32") ("tree-sitter-langs" . "1076cf2366be8ef1bd6fd7239f92f16cc0890fce") ("treemacs" . "9986d6cd3d2822db7ae0e6d8a275db7057f3e828") ("treepy.el" . "7c4a0d21322506a4d4b2301b4274ec955b429b47") - ("typescript.el" . "4fcb4594819caf472ae42ea068a1c7795cf07f46") ("use-package" . "bcf0984cf55b70fe6896c6a15f61df92b24f8ffd") ("uuidgen-el" . "7b728c1d92e196c3acf87a004949335cfc18eab3") ("vertico" . "a595b05ecc87ce0cd6663f01727159e6640b2d2e")