Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 56fbdbc

Browse files
committedOct 16, 2024·
Merge remote-tracking branch 'origin/main' into tld-with-metadata
2 parents db53936 + dc74c45 commit 56fbdbc

10 files changed

+48
-32
lines changed
 

Diff for: ‎CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
## main (unreleased)
44

55
- [#38]: Add support for `in-ns` forms in `clojure-ts-find-ns`.
6+
- [#46]: Fix missing `comment-add` variable in `clojure-ts-mode-variables` mentioned in [#26]
7+
- Add imenu support for `deftest` definitions.
8+
- [#53]: Let `clojure-ts-mode` derive from `clojure-mode` for Emacs 30+.
69

710
## 0.2.2 (2024-02-16)
811

Diff for: ‎README.md

+2-4
Original file line numberDiff line numberDiff line change
@@ -214,9 +214,7 @@ After installing the package do the following.
214214

215215
### Does `clojure-ts-mode` work with CIDER?
216216

217-
~~Not yet out of the box, but that [should change soon](https://github.com/clojure-emacs/cider/pull/3461). Feel free to help out with the remaining work, so we can expedite the process.~~
218-
219-
Support for `clojure-ts-mode` has landed on the `master` branch of CIDER (and will be part of CIDER 1.14 when it's released). Make sure to grab the latest CIDER from MELPA/GitHub.
217+
Yes! Preliminary support for `clojure-ts-mode` was released in [CIDER 1.14](https://github.com/clojure-emacs/cider/releases/tag/v1.14.0). Make sure to grab the latest CIDER from MELPA/GitHub. Note that `clojure-mode` is still needed for some APIs that haven't yet been ported to `clojure-ts-mode`.
220218

221219
For now, when you take care of the keybindings for the CIDER commands you use and ensure `cider-mode` is enabled for `clojure-ts-mode` buffers in your config, most functionality should already work:
222220

@@ -228,7 +226,7 @@ Check out [this article](https://metaredux.com/posts/2024/02/19/cider-preliminar
228226

229227
### Does `clojure-ts-mode` work with `inf-clojure`?
230228

231-
[Ditto.](https://github.com/clojure-emacs/inf-clojure/pull/215)
229+
Currently, there is an [open PR](https://github.com/clojure-emacs/inf-clojure/pull/215) adding support for inf-clojure.
232230

233231
## License
234232

Diff for: ‎clojure-ts-mode.el

+36-26
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@
5454

5555
;;; Code:
5656
(require 'treesit)
57-
(require 'lisp-mnt)
5857

5958
(declare-function treesit-parser-create "treesit.c")
6059
(declare-function treesit-node-eq "treesit.c")
@@ -71,8 +70,7 @@
7170
:link '(emacs-commentary-link :tag "Commentary" "clojure-mode"))
7271

7372
(defconst clojure-ts-mode-version
74-
(eval-when-compile
75-
(lm-version (or load-file-name buffer-file-name)))
73+
"0.2.2"
7674
"The current version of `clojure-ts-mode'.")
7775

7876
(defcustom clojure-ts-comment-macro-font-lock-body nil
@@ -580,7 +578,7 @@ Can be called directly, but intended for use as `treesit-defun-name-function'."
580578
(treesit-node-text name)))))))
581579

582580
(defvar clojure-ts--function-type-regexp
583-
(rx string-start (or (seq "defn" (opt "-")) "defmethod") string-end)
581+
(rx string-start (or (seq "defn" (opt "-")) "defmethod" "deftest") string-end)
584582
"Regular expression for matching definition nodes that resemble functions.")
585583

586584
(defun clojure-ts--function-node-p (node)
@@ -891,7 +889,10 @@ forms like deftype, defrecord, reify, proxy, etc."
891889
(defun clojure-ts-mode-display-version ()
892890
"Display the current `clojure-mode-version' in the minibuffer."
893891
(interactive)
894-
(message "clojure-ts-mode (version %s)" clojure-ts-mode-version))
892+
(let ((pkg-version (package-get-version)))
893+
(if pkg-version
894+
(message "clojure-ts-mode %s (package: %s)" clojure-ts-mode-version pkg-version)
895+
(message "clojure-ts-mode %s" clojure-ts-mode-version))))
895896

896897
(defconst clojure-ts-grammar-recipes
897898
'((clojure "https://github.com/sogaiu/tree-sitter-clojure.git"
@@ -918,6 +919,7 @@ forms like deftype, defrecord, reify, proxy, etc."
918919
(defun clojure-ts-mode-variables (&optional markdown-available)
919920
"Initialize buffer-local variables for `clojure-ts-mode'.
920921
See `clojure-ts--font-lock-settings' for usage of MARKDOWN-AVAILABLE."
922+
(setq-local comment-add 1)
921923
(setq-local comment-start ";")
922924
(setq-local treesit-font-lock-settings
923925
(clojure-ts--font-lock-settings markdown-available))
@@ -971,6 +973,11 @@ See `clojure-ts--font-lock-settings' for usage of MARKDOWN-AVAILABLE."
971973
(when (fboundp 'transpose-sexps-default-function)
972974
(setq-local transpose-sexps-function #'transpose-sexps-default-function)))))
973975

976+
;; For Emacs 30+, so that `clojure-ts-mode' is treated as deriving from
977+
;; `clojure-mode'
978+
(when (fboundp 'derived-mode-add-parents)
979+
(derived-mode-add-parents 'clojure-ts-mode '(clojure-mode)))
980+
974981
;;;###autoload
975982
(define-derived-mode clojure-ts-clojurescript-mode clojure-ts-mode "ClojureScript[TS]"
976983
"Major mode for editing ClojureScript code.
@@ -1000,27 +1007,30 @@ See `clojure-ts--font-lock-settings' for usage of MARKDOWN-AVAILABLE."
10001007
(add-to-list 'auto-mode-alist '("\\.cljd\\'" . clojure-ts-clojuredart-mode))
10011008
(add-to-list 'auto-mode-alist '("\\.jank\\'" . clojure-ts-jank-mode)))
10021009

1003-
;; Redirect clojure-mode to clojure-ts-mode if clojure-mode is present
1004-
(if (require 'clojure-mode nil 'noerror)
1005-
(progn
1006-
(add-to-list 'major-mode-remap-alist '(clojure-mode . clojure-ts-mode))
1007-
(add-to-list 'major-mode-remap-alist '(clojurescript-mode . clojure-ts-clojurescript-mode))
1008-
(add-to-list 'major-mode-remap-alist '(clojurec-mode . clojure-ts-clojurec-mode))
1009-
(clojure-ts--register-novel-modes))
1010-
;; Clojure-mode is not present, setup auto-modes ourselves
1011-
;; Regular clojure/edn files
1012-
;; I believe dtm is for datomic queries and datoms, which are just edn.
1013-
(add-to-list 'auto-mode-alist
1014-
'("\\.\\(clj\\|dtm\\|edn\\)\\'" . clojure-ts-mode))
1015-
(add-to-list 'auto-mode-alist '("\\.cljs\\'" . clojure-ts-clojurescript-mode))
1016-
(add-to-list 'auto-mode-alist '("\\.cljc\\'" . clojure-ts-clojurec-mode))
1017-
;; boot build scripts are Clojure source files
1018-
(add-to-list 'auto-mode-alist '("\\(?:build\\|profile\\)\\.boot\\'" . clojure-ts-mode))
1019-
;; babashka scripts are Clojure source files
1020-
(add-to-list 'interpreter-mode-alist '("bb" . clojure-ts-mode))
1021-
;; nbb scripts are ClojureScript source files
1022-
(add-to-list 'interpreter-mode-alist '("nbb" . clojure-ts-clojurescript-mode))
1023-
(clojure-ts--register-novel-modes))
1010+
(if (treesit-available-p)
1011+
;; Redirect clojure-mode to clojure-ts-mode if clojure-mode is present
1012+
(if (require 'clojure-mode nil 'noerror)
1013+
(progn
1014+
(add-to-list 'major-mode-remap-alist '(clojure-mode . clojure-ts-mode))
1015+
(add-to-list 'major-mode-remap-alist '(clojurescript-mode . clojure-ts-clojurescript-mode))
1016+
(add-to-list 'major-mode-remap-alist '(clojurec-mode . clojure-ts-clojurec-mode))
1017+
(clojure-ts--register-novel-modes))
1018+
;; When Clojure-mode is not present, setup auto-modes ourselves
1019+
(progn
1020+
;; Regular clojure/edn files
1021+
;; I believe dtm is for datomic queries and datoms, which are just edn.
1022+
(add-to-list 'auto-mode-alist
1023+
'("\\.\\(clj\\|dtm\\|edn\\)\\'" . clojure-ts-mode))
1024+
(add-to-list 'auto-mode-alist '("\\.cljs\\'" . clojure-ts-clojurescript-mode))
1025+
(add-to-list 'auto-mode-alist '("\\.cljc\\'" . clojure-ts-clojurec-mode))
1026+
;; boot build scripts are Clojure source files
1027+
(add-to-list 'auto-mode-alist '("\\(?:build\\|profile\\)\\.boot\\'" . clojure-ts-mode))
1028+
;; babashka scripts are Clojure source files
1029+
(add-to-list 'interpreter-mode-alist '("bb" . clojure-ts-mode))
1030+
;; nbb scripts are ClojureScript source files
1031+
(add-to-list 'interpreter-mode-alist '("nbb" . clojure-ts-clojurescript-mode))
1032+
(clojure-ts--register-novel-modes)))
1033+
(message "Clojure TS Mode will not be activated as tree-sitter support is missing."))
10241034

10251035
(defvar clojure-ts--find-ns-query
10261036
(treesit-query-compile

Diff for: ‎test/clojure-ts-mode-util-test.el

-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323

2424
(require 'clojure-ts-mode)
2525
(require 'buttercup)
26-
(require 'test-helper "test/utils/test-helper")
2726

2827
(describe "clojure-ts-mode-version"
2928
(it "should not be nil"

Diff for: ‎test/samples/bug43.clj

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
^{:a 1}
2+
(def b 2)
3+
4+
^{:a 1}
5+
(defn a
6+
"hello" ;; <-
7+
[] "world")
File renamed without changes.
File renamed without changes.
File renamed without changes.

Diff for: ‎test/test.clj renamed to ‎test/samples/test.clj

File renamed without changes.

Diff for: ‎test/utils/test-helper.el renamed to ‎test/test-helper.el

-1
Original file line numberDiff line numberDiff line change
@@ -46,5 +46,4 @@ and point left there."
4646
(delete-char -1)
4747
,@body)))
4848

49-
(provide 'test-helper)
5049
;;; test-helper.el ends here

0 commit comments

Comments
 (0)
Please sign in to comment.