branch: elpa/clojure-mode
commit bacfbf5d7af222bc51eca28052f1d8a148a575d3
Author: Bozhidar Batsov <[email protected]>
Commit: Bozhidar Batsov <[email protected]>
[Fix #688] Add clojure-discard-face for #_ reader macro
Introduce a dedicated `clojure-discard-face` that is applied to forms
discarded via `#_`. This allows users to style discarded forms
differently from regular comments. The face inherits from
`font-lock-comment-face` by default, so the visual appearance is
unchanged unless customized.
When `clojure-comment-regexp` is set to also match `(comment ...)`
forms, those continue to use `font-lock-comment-face`.
---
CHANGELOG.md | 4 ++++
clojure-mode.el | 10 +++++++++-
test/clojure-mode-font-lock-test.el | 10 +++++-----
3 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7aefa82c00..50e7bb67d0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,10 @@
## master (unreleased)
+### New features
+
+* [#688](https://github.com/clojure-emacs/clojure-mode/issues/688): Add
`clojure-discard-face` for `#_` reader discard forms, allowing them to be
styled differently from comments. Inherits from `font-lock-comment-face` by
default.
+
### Changes
* Update font-locking of built-in dynamic vars for Clojure 1.12.
diff --git a/clojure-mode.el b/clojure-mode.el
index e468cc5446..215e76858f 100644
--- a/clojure-mode.el
+++ b/clojure-mode.el
@@ -91,6 +91,11 @@
"Face used to font-lock Clojure keywords (:something)."
:package-version '(clojure-mode . "3.0.0"))
+(defface clojure-discard-face
+ '((t (:inherit font-lock-comment-face)))
+ "Face used to font-lock forms discarded by Clojure's #_ reader macro."
+ :package-version '(clojure-mode . "5.22.0"))
+
(defface clojure-character-face
'((t (:inherit font-lock-string-face)))
"Face used to font-lock Clojure character literals."
@@ -1153,7 +1158,10 @@ any number of matches of
`clojure--sym-forbidden-rest-chars'."))
(1 nil))
;; #_ and (comment ...) macros.
- (clojure--search-comment-macro 1 font-lock-comment-face t)
+ (clojure--search-comment-macro
+ 1 (if (eq (char-after (match-beginning 0)) ?#)
+ 'clojure-discard-face font-lock-comment-face)
+ t)
;; Highlight `code` marks, just like `elisp'.
(,(rx "`" (group-n 1 (optional "#'")
(+ (or (syntax symbol) (syntax word)))) "`")
diff --git a/test/clojure-mode-font-lock-test.el
b/test/clojure-mode-font-lock-test.el
index f7e1203c11..b7eab44aa0 100644
--- a/test/clojure-mode-font-lock-test.el
+++ b/test/clojure-mode-font-lock-test.el
@@ -138,19 +138,19 @@ DESCRIPTION is the description of the spec."
(1 2 nil))
("#_#_"
- (3 2 font-lock-comment-face))
+ (3 2 clojure-discard-face))
("#_ #_"
(1 3 nil))
("#_ #_"
- (4 2 font-lock-comment-face))
+ (4 2 clojure-discard-face))
("#_ \n;; some crap\n (lala 0101\n lao\n\n 0 0i)"
(1 2 nil))
("#_ \n;; some crap\n (lala 0101\n lao\n\n 0 0i)"
- (5 41 font-lock-comment-face))
+ (5 41 clojure-discard-face))
("#_#_ \n;; some crap\n (lala 0101\n lao\n\n 0 0i)\n;; more crap\n (foobar
tnseriao)"
(1 4 nil))
@@ -159,10 +159,10 @@ DESCRIPTION is the description of the spec."
(1 5 nil))
("#_#_ \n;; some crap\n (lala 0101\n lao\n\n 0 0i)\n;; more crap\n (foobar
tnseriao)"
- (7 75 font-lock-comment-face))
+ (7 75 clojure-discard-face))
("#_ #_ \n;; some crap\n (lala 0101\n lao\n\n 0 0i)\n;; more crap\n
(foobar tnseriao)"
- (8 75 font-lock-comment-face)))
+ (8 75 clojure-discard-face)))
(when-fontifying-it "should handle namespace declarations"
("(ns .validns)"