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)"

Reply via email to