emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 0420878: Make `C-c C-w' insert a signature even when overridden


From: Lars Ingebrigtsen
Subject: master 0420878: Make `C-c C-w' insert a signature even when overridden
Date: Thu, 21 Nov 2019 18:20:08 -0500 (EST)

branch: master
commit 04208780262faaee772c96567069ceb9184c864f
Author: Lars Ingebrigtsen <address@hidden>
Commit: Lars Ingebrigtsen <address@hidden>

    Make `C-c C-w' insert a signature even when overridden
    
    * lisp/gnus/message.el (message-insert-signature): When called
    interactively, look harder for a signature to insert (bug#38289).
---
 lisp/gnus/message.el | 99 +++++++++++++++++++++++++++++-----------------------
 1 file changed, 55 insertions(+), 44 deletions(-)

diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 83ec211..54ab86a 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -3538,50 +3538,61 @@ Message buffers and is not meant to be called directly."
 (defun message-insert-signature (&optional force)
   "Insert a signature.  See documentation for variable `message-signature'."
   (interactive (list 0))
-  (let* ((signature
-         (cond
-          ((and (null message-signature)
-                (eq force 0))
-           (save-excursion
-             (goto-char (point-max))
-             (not (re-search-backward message-signature-separator nil t))))
-          ((and (null message-signature)
-                force)
-           t)
-          ((functionp message-signature)
-           (funcall message-signature))
-          ((listp message-signature)
-           (eval message-signature))
-          (t message-signature)))
-        signature-file)
-    (setq signature
-         (cond ((stringp signature)
-                signature)
-               ((and (eq t signature) message-signature-file)
-                (setq signature-file
-                      (if (and message-signature-directory
-                               ;; don't actually use the signature directory
-                               ;; if message-signature-file contains a path.
-                               (not (file-name-directory
-                                     message-signature-file)))
-                          (expand-file-name message-signature-file
-                                            message-signature-directory)
-                        message-signature-file))
-                (file-exists-p signature-file))))
-    (when signature
-      (goto-char (point-max))
-      ;; Insert the signature.
-      (unless (bolp)
-       (newline))
-      (when message-signature-insert-empty-line
-       (newline))
-      (insert "-- ")
-      (newline)
-      (if (eq signature t)
-         (insert-file-contents signature-file)
-       (insert signature))
-      (goto-char (point-max))
-      (or (bolp) (newline)))))
+  (let ((message-signature message-signature)
+       (message-signature-file message-signature-file))
+    ;; If called interactively and there's no signature to insert,
+    ;; consult the global values to see whether there's anything they
+    ;; have to say for themselves.  This can happen when using
+    ;; `gnus-posting-styles', for instance.
+    (when (and (null message-signature)
+              (null message-signature-file)
+              (eq force 0))
+      (setq message-signature (default-value 'message-signature)
+           message-signature-file (default-value 'message-signature-file)))
+    (let* ((signature
+           (cond
+            ((and (null message-signature)
+                  (eq force 0))
+             (save-excursion
+               (goto-char (point-max))
+               (not (re-search-backward message-signature-separator nil t))))
+            ((and (null message-signature)
+                  force)
+             t)
+            ((functionp message-signature)
+             (funcall message-signature))
+            ((listp message-signature)
+             (eval message-signature))
+            (t message-signature)))
+          signature-file)
+      (setq signature
+           (cond ((stringp signature)
+                  signature)
+                 ((and (eq t signature) message-signature-file)
+                  (setq signature-file
+                        (if (and message-signature-directory
+                                 ;; don't actually use the signature directory
+                                 ;; if message-signature-file contains a path.
+                                 (not (file-name-directory
+                                       message-signature-file)))
+                            (expand-file-name message-signature-file
+                                              message-signature-directory)
+                          message-signature-file))
+                  (file-exists-p signature-file))))
+      (when signature
+       (goto-char (point-max))
+       ;; Insert the signature.
+       (unless (bolp)
+         (newline))
+       (when message-signature-insert-empty-line
+         (newline))
+       (insert "-- ")
+       (newline)
+       (if (eq signature t)
+           (insert-file-contents signature-file)
+         (insert signature))
+       (goto-char (point-max))
+       (or (bolp) (newline))))))
 
 (defun message-insert-importance-high ()
   "Insert header to mark message as important."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]