From ee3b619f7f4d401782cf841467d008c50b181f44 Mon Sep 17 00:00:00 2001 From: p4v4n Date: Fri, 1 Mar 2024 09:34:09 +0530 Subject: [PATCH 1/2] Check for tree-sitter before activating clojure-ts-mode --- clojure-ts-mode.el | 45 ++++++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/clojure-ts-mode.el b/clojure-ts-mode.el index 753e97b..716c09a 100644 --- a/clojure-ts-mode.el +++ b/clojure-ts-mode.el @@ -993,27 +993,30 @@ See `clojure-ts--font-lock-settings' for usage of MARKDOWN-AVAILABLE." (add-to-list 'auto-mode-alist '("\\.cljd\\'" . clojure-ts-clojuredart-mode)) (add-to-list 'auto-mode-alist '("\\.jank\\'" . clojure-ts-jank-mode))) -;; Redirect clojure-mode to clojure-ts-mode if clojure-mode is present -(if (require 'clojure-mode nil 'noerror) - (progn - (add-to-list 'major-mode-remap-alist '(clojure-mode . clojure-ts-mode)) - (add-to-list 'major-mode-remap-alist '(clojurescript-mode . clojure-ts-clojurescript-mode)) - (add-to-list 'major-mode-remap-alist '(clojurec-mode . clojure-ts-clojurec-mode)) - (clojure-ts--register-novel-modes)) - ;; Clojure-mode is not present, setup auto-modes ourselves - ;; Regular clojure/edn files - ;; I believe dtm is for datomic queries and datoms, which are just edn. - (add-to-list 'auto-mode-alist - '("\\.\\(clj\\|dtm\\|edn\\)\\'" . clojure-ts-mode)) - (add-to-list 'auto-mode-alist '("\\.cljs\\'" . clojure-ts-clojurescript-mode)) - (add-to-list 'auto-mode-alist '("\\.cljc\\'" . clojure-ts-clojurec-mode)) - ;; boot build scripts are Clojure source files - (add-to-list 'auto-mode-alist '("\\(?:build\\|profile\\)\\.boot\\'" . clojure-ts-mode)) - ;; babashka scripts are Clojure source files - (add-to-list 'interpreter-mode-alist '("bb" . clojure-ts-mode)) - ;; nbb scripts are ClojureScript source files - (add-to-list 'interpreter-mode-alist '("nbb" . clojure-ts-clojurescript-mode)) - (clojure-ts--register-novel-modes)) +(if (treesit-available-p) + ;; Redirect clojure-mode to clojure-ts-mode if clojure-mode is present + (if (require 'clojure-mode nil 'noerror) + (progn + (add-to-list 'major-mode-remap-alist '(clojure-mode . clojure-ts-mode)) + (add-to-list 'major-mode-remap-alist '(clojurescript-mode . clojure-ts-clojurescript-mode)) + (add-to-list 'major-mode-remap-alist '(clojurec-mode . clojure-ts-clojurec-mode)) + (clojure-ts--register-novel-modes)) + ;; When Clojure-mode is not present, setup auto-modes ourselves + (progn + ;; Regular clojure/edn files + ;; I believe dtm is for datomic queries and datoms, which are just edn. + (add-to-list 'auto-mode-alist + '("\\.\\(clj\\|dtm\\|edn\\)\\'" . clojure-ts-mode)) + (add-to-list 'auto-mode-alist '("\\.cljs\\'" . clojure-ts-clojurescript-mode)) + (add-to-list 'auto-mode-alist '("\\.cljc\\'" . clojure-ts-clojurec-mode)) + ;; boot build scripts are Clojure source files + (add-to-list 'auto-mode-alist '("\\(?:build\\|profile\\)\\.boot\\'" . clojure-ts-mode)) + ;; babashka scripts are Clojure source files + (add-to-list 'interpreter-mode-alist '("bb" . clojure-ts-mode)) + ;; nbb scripts are ClojureScript source files + (add-to-list 'interpreter-mode-alist '("nbb" . clojure-ts-clojurescript-mode)) + (clojure-ts--register-novel-modes))) + (message "Clojure TS Mode is not activated as tree-sitter support is missing.")) (defvar clojure-ts--find-ns-query (treesit-query-compile From 3c0f8be0daf2701e70a2712cd7d5548988121a0a Mon Sep 17 00:00:00 2001 From: Danny Freeman Date: Mon, 17 Jun 2024 22:58:41 -0400 Subject: [PATCH 2/2] Update warning when tree-sitter is not supported --- clojure-ts-mode.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clojure-ts-mode.el b/clojure-ts-mode.el index 716c09a..d4b6acb 100644 --- a/clojure-ts-mode.el +++ b/clojure-ts-mode.el @@ -1016,7 +1016,7 @@ See `clojure-ts--font-lock-settings' for usage of MARKDOWN-AVAILABLE." ;; nbb scripts are ClojureScript source files (add-to-list 'interpreter-mode-alist '("nbb" . clojure-ts-clojurescript-mode)) (clojure-ts--register-novel-modes))) - (message "Clojure TS Mode is not activated as tree-sitter support is missing.")) + (message "Clojure TS Mode will not be activated as tree-sitter support is missing.")) (defvar clojure-ts--find-ns-query (treesit-query-compile