]> git.eshelyaron.com Git - emacs.git/commitdiff
Fontify the signature separator in Message mode
authorLars Ingebrigtsen <larsi@gnus.org>
Wed, 14 Jul 2021 16:08:33 +0000 (18:08 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Wed, 14 Jul 2021 16:08:33 +0000 (18:08 +0200)
* lisp/gnus/message.el (message-signature-separator): New face
(bug#17757).
(message-font-lock-keywords): Add it to the signature, and ensure
that the trailing space isn't removed when hitting RET.
(message--match-signature): New helper function.

lisp/gnus/message.el

index a9be2d6b34737e829aef5cefc499e82a9c35a348..2c0663915f81c2daaecb3fd0e1a63b4a917ad48a 100644 (file)
@@ -1658,6 +1658,10 @@ starting with `not' and followed by regexps."
   "Face used for displaying MML."
   :group 'message-faces)
 
+(defface message-signature-separator '((t :bold t))
+  "Face used for displaying the signature separator."
+  :group 'message-faces)
+
 (defun message-match-to-eoh (_limit)
   (let ((start (point)))
     (rfc822-goto-eoh)
@@ -1751,9 +1755,22 @@ number of levels specified in the faces `message-cited-text-*'."
                 (0 ',cited-text-face))
               keywords))
        (setq level (1+ level)))
-     keywords))
+     keywords)
+   ;; Match signature.  This `field' stuff ensures that hitting `RET'
+   ;; after the signature separator doesn't remove the trailing space.
+   (list
+    '(message--match-signature (0 '( face message-signature-separator
+                                     rear-nonsticky t
+                                     field signature)))))
   "Additional expressions to highlight in Message mode.")
 
+(defun message--match-signature (limit)
+  (save-excursion
+    (and (re-search-forward message-signature-separator limit t)
+         ;; It's the last one in the buffer.
+         (not (save-excursion
+                (re-search-forward message-signature-separator nil t))))))
+
 (defvar message-face-alist
   '((bold . message-bold-region)
     (underline . underline-region)