@@ -546,6 +546,21 @@ See `clojure-ts--standard-definition-node-name' for the implementation used.")
546
546
; (set-keymap-parent map clojure-mode-map)
547
547
map))
548
548
549
+ (defvar clojurescript-ts-mode-map
550
+ (let ((map (make-sparse-keymap )))
551
+ (set-keymap-parent map clojure-ts-mode-map)
552
+ map))
553
+
554
+ (defvar clojurec-ts-mode-map
555
+ (let ((map (make-sparse-keymap )))
556
+ (set-keymap-parent map clojure-ts-mode-map)
557
+ map))
558
+
559
+ (defvar clojure-dart-ts-mode-map
560
+ (let ((map (make-sparse-keymap )))
561
+ (set-keymap-parent map clojure-ts-mode-map)
562
+ map))
563
+
549
564
; ;;###autolaod
550
565
(add-to-list
551
566
'treesit-language-source-alist
@@ -585,21 +600,50 @@ Requires Emacs 29 and libtree-sitter-clojure.so available somewhere in
585
600
(treesit-inspect-mode))
586
601
(treesit-major-mode-setup)))
587
602
603
+
604
+ ;;;### autoload
605
+ (define-derived-mode clojurescript-ts-mode clojure-ts-mode " ClojureScript[TS]"
606
+ " Major mode for editing ClojureScript code.
607
+
608
+ \\ {clojurescript-ts-mode-map}" )
609
+
610
+ ;;;### autoload
611
+ (define-derived-mode clojurec-ts-mode clojure-ts-mode " ClojureC[TS]"
612
+ " Major mode for editing ClojureC code.
613
+
614
+ \\ {clojurec-ts-mode-map}" )
615
+
616
+ ;;;### autoload
617
+ (define-derived-mode clojure-dart-ts-mode clojure-ts-mode " ClojureDart[TS]"
618
+ " Major mode for editing Clojure Dart code.
619
+
620
+ \\ {clojure-dart-ts-mode-map}" )
621
+
622
+ (defun clojure-ts--register-novel-modes ()
623
+ " Set up Clojure modes not present in progenitor clojure-mode.el."
624
+ (add-to-list 'auto-mode-alist '(" \\ .cljd\\ '" . clojure-dart-ts-mode)))
625
+
588
626
; ; Redirect clojure-mode to clojure-ts-mode if clojure-mode is present
589
627
(if (require 'clojure-mode nil 'noerror )
590
628
(progn
591
629
(add-to-list 'major-mode-remap-alist '(clojure-mode . clojure-ts-mode))
592
- (add-to-list 'major-mode-remap-alist '(clojurescript-mode . clojure-ts-mode))
593
- (add-to-list 'major-mode-remap-alist '(clojurec-mode . clojure-ts-mode)))
594
- ; ; clojure-mode is not present
630
+ (add-to-list 'major-mode-remap-alist '(clojurescript-mode . clojurescript-ts-mode))
631
+ (add-to-list 'major-mode-remap-alist '(clojurec-mode . clojurec-ts-mode))
632
+ (clojure-ts--register-novel-modes))
633
+ ; ; Clojure-mode is not present, setup auto-modes ourselves
634
+ ; ; Regular clojure/edn files
635
+ ; ; I believe dtm is for datomic queries and datoms, which are just edn.
595
636
(add-to-list 'auto-mode-alist
596
- '(" \\ .\\ (clj\\ |cljd\\ |cljc\\ |cljs\\ |dtm\\ |edn\\ )\\ '" . clojure-ts-mode))
637
+ '(" \\ .\\ (clj\\ |dtm\\ |edn\\ )\\ '" . clojure-ts-mode))
638
+ (add-to-list 'auto-mode-alist '(" \\ .cljs\\ '" . clojurescript-ts-mode))
639
+ (add-to-list 'auto-mode-alist '(" \\ .cljc\\ '" . clojurec-ts-mode))
597
640
; ; boot build scripts are Clojure source files
598
641
(add-to-list 'auto-mode-alist '(" \\ (?:build\\ |profile\\ )\\ .boot\\ '" . clojure-ts-mode))
599
642
; ; babashka scripts are Clojure source files
600
643
(add-to-list 'interpreter-mode-alist '(" bb" . clojure-ts-mode))
601
644
; ; nbb scripts are ClojureScript source files
602
- (add-to-list 'interpreter-mode-alist '(" nbb" . clojure-ts-mode)))
645
+ (add-to-list 'interpreter-mode-alist '(" nbb" . clojurescript-ts-mode))
646
+ (clojure-ts--register-novel-modes))
603
647
604
648
(provide 'clojure-ts-mode )
605
649
0 commit comments