From 5c1895f2740c095f1ff54ec7dd26c8ef8f4b3ed5 Mon Sep 17 00:00:00 2001 From: Dieter Komendera Date: Thu, 8 Feb 2024 20:31:51 +0100 Subject: [PATCH 1/2] Accept all sexp-nodes as defuns --- 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 5e50ffa..375b5c3 100644 --- a/clojure-ts-mode.el +++ b/clojure-ts-mode.el @@ -917,7 +917,7 @@ See `clojure-ts--font-lock-settings' for usage of MARKDOWN-AVAILABLE." (setq-local treesit-defun-prefer-top-level t) (setq-local treesit-defun-tactic 'top-level) (setq-local treesit-defun-type-regexp - (cons (rx (or "list_lit" "vec_lit" "map_lit")) + (cons (regexp-opt clojure-ts--sexp-nodes) (lambda (node) (or (not clojure-ts-toplevel-inside-comment-form) (not (clojure-ts--definition-node-p "comment" node)))))) From c437b6c2e7a8c6f11f50c36f32d4eedb8988266a Mon Sep 17 00:00:00 2001 From: Dieter Komendera Date: Sun, 11 Feb 2024 16:38:40 +0100 Subject: [PATCH 2/2] Add changelog entry and a note for reasoning about `treesit-defun-type-regexp` --- CHANGELOG.md | 1 + clojure-ts-mode.el | 11 +++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 238bb73..7e654cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## main (unreleased) - Add custom option `clojure-ts-toplevel-inside-comment-form` as an equivalent to `clojure-toplevel-inside-comment-form` in clojure-mode (#30) +- Change behavior of `beginning-of-defun` and `end-of-defun` to consider all Clojure sexps as defuns (#32) ## 0.2.0 diff --git a/clojure-ts-mode.el b/clojure-ts-mode.el index 375b5c3..f740dda 100644 --- a/clojure-ts-mode.el +++ b/clojure-ts-mode.el @@ -917,10 +917,13 @@ See `clojure-ts--font-lock-settings' for usage of MARKDOWN-AVAILABLE." (setq-local treesit-defun-prefer-top-level t) (setq-local treesit-defun-tactic 'top-level) (setq-local treesit-defun-type-regexp - (cons (regexp-opt clojure-ts--sexp-nodes) - (lambda (node) - (or (not clojure-ts-toplevel-inside-comment-form) - (not (clojure-ts--definition-node-p "comment" node)))))) + (cons + ;; consider all clojure sexps as valid top level forms... + (regexp-opt clojure-ts--sexp-nodes) + ;; ...except `comment' forms if `clojure-ts-toplevel-inside-comment-form' is set + (lambda (node) + (or (not clojure-ts-toplevel-inside-comment-form) + (not (clojure-ts--definition-node-p "comment" node)))))) (setq-local treesit-simple-indent-rules (clojure-ts--configured-indent-rules)) (setq-local treesit-defun-name-function