Skip to content

Commit 604e2e0

Browse files
yuhan0bbatsov
authored andcommitted
Refactor clojure-no-space-after-tag
Consolidate into single predicate, make collection-tag-regexp obsolete
1 parent 58dbad4 commit 604e2e0

File tree

2 files changed

+9
-38
lines changed

2 files changed

+9
-38
lines changed

clojure-mode.el

Lines changed: 9 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -452,14 +452,17 @@ The command will prompt you to select one of the available sections."
452452
(interactive)
453453
(browse-url clojure-style-guide-url))
454454

455-
(defun clojure-space-for-delimiter-p (endp _delim)
455+
(defun clojure-space-for-delimiter-p (endp delim)
456456
"Prevent paredit from inserting useless spaces.
457457
See `paredit-space-for-delimiter-predicates' for the meaning of
458458
ENDP and DELIM."
459459
(and (not endp)
460-
;; don't insert after ' or # that is part of auto-gensym or reader conditional syntax
461-
(not (looking-back "\\_<\\(?:'+\\|#\\??\\)" (point-at-bol)))))
462-
460+
;; don't insert after opening quotes, auto-gensym syntax, or reader tags
461+
(not (looking-back
462+
(if (member delim clojure-omit-space-between-tag-and-delimiters)
463+
"\\_<\\(?:'+\\|#.*\\)"
464+
"\\_<\\(?:'+\\|#\\)")
465+
(point-at-bol)))))
463466

464467
(defconst clojure--collection-tag-regexp "#\\(::[a-zA-Z0-9._-]*\\|:?\\([a-zA-Z0-9._-]+/\\)?[a-zA-Z0-9._-]+\\)"
465468
"Collection reader macro tag regexp.
@@ -468,29 +471,8 @@ collection literal (e.g. '[]' or '{}'), as reader macro tags.
468471
This includes #fully.qualified/my-ns[:kw val] and #::my-ns{:kw
469472
val} as of Clojure 1.9.")
470473

471-
(defun clojure-no-space-after-tag (endp delimiter)
472-
"Prevent inserting a space after a reader-literal tag.
473-
474-
When a reader-literal tag is followed be an opening delimiter
475-
listed in `clojure-omit-space-between-tag-and-delimiters', this
476-
function returns t.
477-
478-
This allows you to write things like #db/id[:db.part/user]
479-
and #::my-ns{:some \"map\"} without inserting a space between
480-
the tag and the opening bracket.
481-
482-
See `paredit-space-for-delimiter-predicates' for the meaning of
483-
ENDP and DELIMITER."
484-
(if endp
485-
t
486-
(or (not (member delimiter clojure-omit-space-between-tag-and-delimiters))
487-
(save-excursion
488-
(let ((orig-point (point)))
489-
(not (and (re-search-backward
490-
clojure--collection-tag-regexp
491-
(line-beginning-position)
492-
t)
493-
(= orig-point (match-end 0)))))))))
474+
(make-obsolete-variable 'clojure--collection-tag-regexp nil "5.12.0")
475+
(make-obsolete #'clojure-no-space-after-tag #'clojure-space-for-delimiter-p "5.12.0")
494476

495477
(declare-function paredit-open-curly "ext:paredit" t t)
496478
(declare-function paredit-close-curly "ext:paredit" t t)
@@ -517,8 +499,6 @@ replacement for `cljr-expand-let`."
517499
(make-local-variable 'paredit-space-for-delimiter-predicates)
518500
(add-to-list 'paredit-space-for-delimiter-predicates
519501
#'clojure-space-for-delimiter-p)
520-
(add-to-list 'paredit-space-for-delimiter-predicates
521-
#'clojure-no-space-after-tag)
522502
(advice-add 'paredit-convolute-sexp :after #'clojure--replace-let-bindings-and-indent)))
523503

524504
(defun clojure-mode-variables ()

test/clojure-mode-syntax-test.el

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -75,15 +75,6 @@
7575
(backward-prefix-chars)
7676
(expect (bobp))))))
7777

78-
(describe "clojure-no-space-after-tag"
79-
(it "should allow allow collection tags"
80-
(dolist (tag '("#::ns" "#:ns" "#ns" "#:f.q/ns" "#f.q/ns" "#::"))
81-
(with-clojure-buffer tag
82-
(expect (clojure-no-space-after-tag nil ?{) :to-be nil)))
83-
(dolist (tag '("#$:" "#/f" "#:/f" "#::f.q/ns" "::ns" "::" "#f:ns"))
84-
(with-clojure-buffer tag
85-
(expect (clojure-no-space-after-tag nil ?{))))))
86-
8778
(describe "fill-paragraph"
8879

8980
(it "should work within comments"

0 commit comments

Comments
 (0)