branch: elpa/clojure-ts-mode
commit 3dabaf535d6a4d9cf6bd9fc94590350a2dd700ba
Author: dannyfreeman <danny@dfreeman.email>
Commit: dannyfreeman <danny@dfreeman.email>

    Hijack clojure-mode's auto/interpreter-mode registrations
    
    If clojure-mode is available prefer to redirect it's major modes to
    clojure-ts-mode. If not, register clojure-ts-mode manually.
    
    TODO: Make this an autoload, but somehow don't call require for clojure-mode
---
 clojure-ts-mode.el | 31 ++++++++++++++++---------------
 1 file changed, 16 insertions(+), 15 deletions(-)

diff --git a/clojure-ts-mode.el b/clojure-ts-mode.el
index 4b4e328218..1376aa3003 100644
--- a/clojure-ts-mode.el
+++ b/clojure-ts-mode.el
@@ -368,26 +368,27 @@ Requires Emacs 29 and libtree-sitter-clojure.so available 
somewhere in
                   (deref quote metadata definition variable type doc regex 
tagged-literals)))
     ;(setq-local treesit-simple-indent-rules clojure-ts-mode--indent-rules)
     (treesit-major-mode-setup)
+    (treesit-inspect-mode)
     ;(clojure-mode-variables)
     ;(add-hook 'paredit-mode-hook #'clojure-paredit-setup)
     ;(add-hook 'electric-indent-function 
#'clojure-mode--electric-indent-function)
     ))
 
-;; We won't autoload this right now, users can opt in by requiring this 
library or adding
-;; clojure-ts-mode to (auto|interpreter)-mode-alist
-(progn
-  (add-hook 'clojure-ts-mode-hook 'treesit-inspect-mode)
-  (add-to-list 'auto-mode-alist
-               '("\\.\\(clj\\|cljd\\|dtm\\|edn\\)\\'" . clojure-ts-mode))
-  ;; TODO: Create clojurec-ts-mode and clojurescript-ts-mode
-  (add-to-list 'auto-mode-alist '("\\.cljc\\'" . clojure-ts-mode))
-  (add-to-list 'auto-mode-alist '("\\.cljs\\'" . clojure-ts-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-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-mode))
+      (add-to-list 'major-mode-remap-alist '(clojurec-mode . clojure-ts-mode)))
+  (progn
+    (add-to-list 'auto-mode-alist
+                 '("\\.\\(clj\\|cljd\\|cljc\\|cljs\\|dtm\\|edn\\)\\'" . 
clojure-ts-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-mode))))
 
 (provide 'clojure-ts-mode)
 

Reply via email to