Skip to content

Commit c815d35

Browse files
committed
Extend clojure--check-wrong-major-mode to cover all derived modes
The wrong-mode check only knew about .clj, .cljs, and .cljc. Replace the hardcoded cond with a data-driven alist covering all extensions: .cljd, .jank, .joke, and .edn.
1 parent 8a2eda2 commit c815d35

1 file changed

Lines changed: 17 additions & 9 deletions

File tree

clojure-mode.el

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -699,6 +699,18 @@ replacement for `cljr-expand-let`."
699699
:safe #'booleanp
700700
:package-version '(clojure-mode "5.3.0"))
701701

702+
(defconst clojure--extension-mode-alist
703+
'(("\\.cljs\\'" . clojurescript-mode)
704+
("\\.cljc\\'" . clojurec-mode)
705+
("\\.cljd\\'" . clojuredart-mode)
706+
("\\.jank\\'" . jank-mode)
707+
("\\.joke\\'" . joker-mode)
708+
("\\.edn\\'" . edn-mode)
709+
;; .clj must be last since its regex also matches .cljs, .cljc, .cljd
710+
("\\.clj\\'" . clojure-mode))
711+
"Alist mapping file-name regexes to their expected Clojure major mode.
712+
More specific extensions must appear before less specific ones.")
713+
702714
(defun clojure--check-wrong-major-mode ()
703715
"Check if the current `major-mode' matches the file extension.
704716
@@ -707,15 +719,11 @@ non-nil."
707719
(when (and clojure-verify-major-mode
708720
(stringp (buffer-file-name)))
709721
(let* ((case-fold-search t)
710-
(problem (cond ((and (string-match "\\.clj\\'" (buffer-file-name))
711-
(not (eq major-mode 'clojure-mode)))
712-
'clojure-mode)
713-
((and (string-match "\\.cljs\\'" (buffer-file-name))
714-
(not (eq major-mode 'clojurescript-mode)))
715-
'clojurescript-mode)
716-
((and (string-match "\\.cljc\\'" (buffer-file-name))
717-
(not (eq major-mode 'clojurec-mode)))
718-
'clojurec-mode))))
722+
(file (buffer-file-name))
723+
(expected (assoc-default file clojure--extension-mode-alist
724+
#'string-match-p))
725+
(problem (when (and expected (not (eq major-mode expected)))
726+
expected)))
719727
(when problem
720728
(message "[WARNING] %s activated `%s' instead of `%s' in this buffer.
721729
This could cause problems.

0 commit comments

Comments
 (0)