diff --git a/init.el b/init.el index 6ca5f8a..30a4d60 100644 --- a/init.el +++ b/init.el @@ -106,6 +106,7 @@ If freezing sometimes, decrease it. If stuttering, increase it.") (require 'init-built-in) +(require 'init-treesit) (require 'init-modeline) (require 'init-git) (require 'init-awesome-pair) diff --git a/lisp/init-built-in.el b/lisp/init-built-in.el index 7497431..a0955d4 100644 --- a/lisp/init-built-in.el +++ b/lisp/init-built-in.el @@ -97,7 +97,7 @@ (with-eval-after-load 'dired (require 'dired-x) - + (setq dired-dwim-target t) ;; show file size human readable diff --git a/lisp/init-eglot.el b/lisp/init-eglot.el index 2562243..99d1aa6 100644 --- a/lisp/init-eglot.el +++ b/lisp/init-eglot.el @@ -16,7 +16,7 @@ ;; json mode is derived from `js-mode', but json file don't need `eglot' -(add-hook 'js-mode-hook +(add-hook 'js-base-mode-hook (lambda () (unless (derived-mode-p 'js-json-mode 'json-mode) (eglot-ensure)))) diff --git a/lisp/init-ibuffer.el b/lisp/init-ibuffer.el index b8c109f..7a6599c 100644 --- a/lisp/init-ibuffer.el +++ b/lisp/init-ibuffer.el @@ -16,7 +16,7 @@ (mode . js-mode) (mode . js-jsx-mode))) ("TSX" (or (mode . typescript-tsx-mode) - (basename . "^.*\\.tsx$"))) + (basename . "^.*\\.tsx$"))) ("Web" (mode . web-mode)) ("eglot" (name . "^\\*EGLOT.*events\\*$")) diff --git a/lisp/init-markdown.el b/lisp/init-markdown.el index 0c896b6..b3ff3b8 100644 --- a/lisp/init-markdown.el +++ b/lisp/init-markdown.el @@ -1,12 +1,12 @@ ;; -*- coding: utf-8; lexical-binding: t; -*- (autoload 'markdown-mode "markdown-mode" - "Major mode for editing Markdown files" t) + "Major mode for editing Markdown files" t) (add-to-list 'auto-mode-alist '("\\.\\(?:md\\|markdown\\|mkd\\|mdown\\|mkdn\\|mdwn\\)\\'" . markdown-mode)) (autoload 'gfm-mode "markdown-mode" - "Major mode for editing GitHub Flavored Markdown files" t) + "Major mode for editing GitHub Flavored Markdown files" t) (add-to-list 'auto-mode-alist '("README\\.md\\'" . gfm-mode)) diff --git a/lisp/init-prettier.el b/lisp/init-prettier.el index ecb54e0..1074602 100644 --- a/lisp/init-prettier.el +++ b/lisp/init-prettier.el @@ -22,7 +22,7 @@ '(js-json-mode . creature/prettier-json-parser))) (dolist (hook '(css-mode-hook - js-mode-hook + js-base-mode-hook typescript-mode-hook typescript-ts-base-mode-hook)) (add-hook hook #'prettier-mode)) diff --git a/lisp/init-treesit.el b/lisp/init-treesit.el new file mode 100644 index 0000000..50f68d1 --- /dev/null +++ b/lisp/init-treesit.el @@ -0,0 +1,14 @@ +;; -*- coding: utf-8; lexical-binding: t; -*- + +(defconst creature/treesit-available + (and (fboundp 'treesit-available-p) (treesit-available-p)) + "Built-in `treesit' available.") + +(when (and (fboundp 'treesit-available-p) (treesit-available-p)) + (unless (featurep 'treesit) (require 'treesit)) + (when (treesit-ready-p 'javascript) + (add-to-list 'major-mode-remap-alist '(js-mode . js-ts-mode)) + (add-to-list 'major-mode-remap-alist '(javascript-mode . js-ts-mode)))) + + +(provide 'init-treesit) diff --git a/lisp/init-typescript.el b/lisp/init-typescript.el index 72c3450..2697b16 100644 --- a/lisp/init-typescript.el +++ b/lisp/init-typescript.el @@ -1,6 +1,12 @@ ;; -*- coding: utf-8; lexical-binding: t; -*- -(unless (and (fboundp 'treesit-available-p) (treesit-available-p)) +(if (bound-and-true-p creature/treesit-available) + (progn + (if (treesit-ready-p 'typescript) + (add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-ts-mode))) + (if (treesit-ready-p 'tsx) + (add-to-list 'auto-mode-alist '("\\.tsx\\'" . tsx-ts-mode)))) + (add-subdirs-to-load-path (expand-file-name "optional-pkg" creature/config-dir)) (require 'typescript-mode) @@ -22,6 +28,4 @@ (add-to-list 'tree-sitter-major-mode-language-alist '(typescript-tsx-mode . tsx)))) - - (provide 'init-typescript)