Skip to content

Commit 5325c81

Browse files
committed
Make clojure-align cleanup commas
1 parent 256b800 commit 5325c81

File tree

4 files changed

+20
-3
lines changed

4 files changed

+20
-3
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
### Bugs fixed
66

77
* [#371](https://github.com/clojure-emacs/clojure-mode/issues/371): Don't font-lock `:foo/def` like a `def` form.
8+
* [#367](https://github.com/clojure-emacs/clojure-mode/issues/367): `clojure-align` no longer gets confused with commas. In fact, now it even removes extra commas.
89

910
### New features
1011

clojure-mode.el

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -891,7 +891,7 @@ return point."
891891
(unwind-protect
892892
(ignore-errors
893893
(clojure-forward-logical-sexp 1)
894-
(search-forward-regexp "\\( *\\)" bound)
894+
(search-forward-regexp "\\([,\s\t]*\\)" bound)
895895
(pcase (syntax-after (point))
896896
;; End-of-line, try again on next line.
897897
(`(12) (clojure--search-whitespace-after-next-sexp bound))
@@ -1458,7 +1458,7 @@ Returns a list pair, e.g. (\"defn\" \"abc\") or (\"deftest\" \"some-test\")."
14581458
Sexps that don't represent code are ^metadata or #reader.macros."
14591459
(comment-normalize-vars)
14601460
(comment-forward (point-max))
1461-
(looking-at-p "\\^\\|#[?[:alpha:]]\\|,"))
1461+
(looking-at-p "\\^\\|#[?[:alpha:]]"))
14621462

14631463
(defun clojure-forward-logical-sexp (&optional n)
14641464
"Move forward N logical sexps.
@@ -1472,9 +1472,9 @@ This will skip over sexps that don't represent objects, so that ^hints and
14721472
(while (> n 0)
14731473
(while (clojure--looking-at-non-logical-sexp)
14741474
(forward-sexp 1))
1475-
(skip-chars-forward ",")
14761475
;; The actual sexp
14771476
(forward-sexp 1)
1477+
(skip-chars-forward ",")
14781478
(setq n (1- n))))))
14791479

14801480
(defun clojure-backward-logical-sexp (&optional n)

test/clojure-mode-indentation-test.el

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -546,6 +546,12 @@ x
546546
:b {:a :a,
547547
:aa :a}}")
548548

549+
(ert-deftest clojure-align-remove-extra-commas ()
550+
(with-temp-buffer
551+
(clojure-mode)
552+
(insert "{:a 2, ,:c 4}")
553+
(call-interactively #'clojure-align)
554+
(should (string= (buffer-string) "{:a 2, :c 4}"))))
549555

550556
;;; Misc
551557

test/clojure-mode-sexp-test.el

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,16 @@
2222
(require 'clojure-mode)
2323
(require 'ert)
2424

25+
(ert-deftest test-sexp-with-commas ()
26+
(with-temp-buffer
27+
(insert "[], {}, :a, 2")
28+
(clojure-mode)
29+
(goto-char (point-min))
30+
(clojure-forward-logical-sexp 1)
31+
(should (looking-back " {}, :a, 2"))
32+
(clojure-forward-logical-sexp 1)
33+
(should (looking-at-p " :a, 2"))))
34+
2535
(ert-deftest test-sexp ()
2636
(with-temp-buffer
2737
(insert "^String #macro ^dynamic reverse")

0 commit comments

Comments
 (0)