feat(language/typescript): switch to new typescript-ts-mode

As typescript-mode has effectively been deprecated, let's switch to the
new typescript-ts-mode in Emacs 29.x.
This commit is contained in:
2023-02-08 22:13:11 +00:00
parent 346b22a06b
commit cead803781
4 changed files with 49 additions and 42 deletions

View File

@@ -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

View File

@@ -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