]> git.notmuchmail.org Git - notmuch/blobdiff - emacs/notmuch-draft.el
emacs: Use 'and' instead of 'when' when the return value matters
[notmuch] / emacs / notmuch-draft.el
index fb7f4f55ed572d5d37d4e1e17f666493f6a25422..759e6c9e47a00d539c31219c6f3f0e007920cd20 100644 (file)
@@ -2,6 +2,7 @@
 ;;
 ;; Copyright © Mark Walters
 ;; Copyright © David Bremner
 ;;
 ;; Copyright © Mark Walters
 ;; Copyright © David Bremner
+;; Copyright © Leo Gaspard
 ;;
 ;; This file is part of Notmuch.
 ;;
 ;;
 ;; This file is part of Notmuch.
 ;;
@@ -20,6 +21,7 @@
 ;;
 ;; Authors: Mark Walters <markwalters1009@gmail.com>
 ;;         David Bremner <david@tethera.net>
 ;;
 ;; Authors: Mark Walters <markwalters1009@gmail.com>
 ;;         David Bremner <david@tethera.net>
+;;         Leo Gaspard <leo@gaspard.io>
 
 ;;; Code:
 
 
 ;;; Code:
 
@@ -74,7 +76,7 @@ postponing and resuming a message."
 
 (defcustom notmuch-draft-save-plaintext 'ask
   "Should notmuch save/postpone in plaintext messages that seem
 
 (defcustom notmuch-draft-save-plaintext 'ask
   "Should notmuch save/postpone in plaintext messages that seem
-  like they are intended to be sent encrypted
+like they are intended to be sent encrypted
 (i.e with an mml encryption tag in it)."
   :type '(radio
          (const :tag "Never" nil)
 (i.e with an mml encryption tag in it)."
   :type '(radio
          (const :tag "Never" nil)
@@ -85,10 +87,10 @@ postponing and resuming a message."
 
 (defvar notmuch-draft-encryption-tag-regex
   "<#\\(part encrypt\\|secure.*mode=.*encrypt>\\)"
 
 (defvar notmuch-draft-encryption-tag-regex
   "<#\\(part encrypt\\|secure.*mode=.*encrypt>\\)"
-  "Regular expression matching mml tags indicating encryption of part or message")
+  "Regular expression matching mml tags indicating encryption of part or message.")
 
 (defvar notmuch-draft-id nil
 
 (defvar notmuch-draft-id nil
-  "Message-id of the most recent saved draft of this message")
+  "Message-id of the most recent saved draft of this message.")
 (make-variable-buffer-local 'notmuch-draft-id)
 
 (defun notmuch-draft--mark-deleted ()
 (make-variable-buffer-local 'notmuch-draft-id)
 
 (defun notmuch-draft--mark-deleted ()
@@ -150,16 +152,18 @@ Used when a new version is saved, or the message is sent."
   "Checks if we should save a message that should be encrypted.
 
 `notmuch-draft-save-plaintext' controls the behaviour."
   "Checks if we should save a message that should be encrypted.
 
 `notmuch-draft-save-plaintext' controls the behaviour."
-  (case notmuch-draft-save-plaintext
-       ((ask)
-        (unless (yes-or-no-p "(Customize `notmuch-draft-save-plaintext' to avoid this warning)
+  (cl-case notmuch-draft-save-plaintext
+    ((ask)
+     (unless (yes-or-no-p
+             "(Customize `notmuch-draft-save-plaintext' to avoid this warning)
 This message contains mml tags that suggest it is intended to be encrypted.
 Really save and index an unencrypted copy? ")
 This message contains mml tags that suggest it is intended to be encrypted.
 Really save and index an unencrypted copy? ")
-          (error "Save aborted")))
-       ((nil)
-        (error "Refusing to save draft with encryption tags (see `notmuch-draft-save-plaintext')"))
-       ((t)
-        (ignore))))
+       (error "Save aborted")))
+    ((nil)
+     (error "Refusing to save draft with encryption tags (see `%s')"
+           'notmuch-draft-save-plaintext))
+    ((t)
+     (ignore))))
 
 (defun notmuch-draft--make-message-id ()
   ;; message-make-message-id gives the id inside a "<" ">" pair,
 
 (defun notmuch-draft--make-message-id ()
   ;; message-make-message-id gives the id inside a "<" ">" pair,
@@ -190,14 +194,16 @@ applied to newly inserted messages)."
        (message-remove-header "Message-ID")
        (message-add-header (concat "Message-ID: <" id ">")))
       (t
        (message-remove-header "Message-ID")
        (message-add-header (concat "Message-ID: <" id ">")))
       (t
-       (message "You have customized emacs so Message-ID is not a deletable header, so not changing it")
+       (message "You have customized emacs so Message-ID is not a %s"
+               "deletable header, so not changing it")
        (setq id nil)))
      (cond
       ((member 'Date message-deletable-headers)
        (message-remove-header "Date")
        (message-add-header (concat "Date: " (message-make-date))))
       (t
        (setq id nil)))
      (cond
       ((member 'Date message-deletable-headers)
        (message-remove-header "Date")
        (message-add-header (concat "Date: " (message-make-date))))
       (t
-       (message "You have customized emacs so Date is not a deletable header, so not changing it")))
+       (message "You have customized emacs so Date is not a deletable %s"
+               "header, so not changing it")))
      (message-add-header "X-Notmuch-Emacs-Draft: True")
      (notmuch-draft-quote-some-mml)
      (notmuch-maildir-setup-message-for-saving)
      (message-add-header "X-Notmuch-Emacs-Draft: True")
      (notmuch-draft-quote-some-mml)
      (notmuch-maildir-setup-message-for-saving)
@@ -225,7 +231,7 @@ applied to newly inserted messages)."
                              "--exclude=false" id))
         (draft (equal tags (notmuch-update-tags tags notmuch-draft-tags))))
     (when (or draft
                              "--exclude=false" id))
         (draft (equal tags (notmuch-update-tags tags notmuch-draft-tags))))
     (when (or draft
-             (yes-or-no-p "Message does not appear to be a draft: really resume? "))
+             (yes-or-no-p "Message does not appear to be a draft: edit as new? "))
       (switch-to-buffer (get-buffer-create (concat "*notmuch-draft-" id "*")))
       (setq buffer-read-only nil)
       (erase-buffer)
       (switch-to-buffer (get-buffer-create (concat "*notmuch-draft-" id "*")))
       (setq buffer-read-only nil)
       (erase-buffer)
@@ -244,6 +250,7 @@ applied to newly inserted messages)."
          (message-remove-header "Message-ID"))
        (when (member 'Date message-deletable-headers)
          (message-remove-header "Date"))
          (message-remove-header "Message-ID"))
        (when (member 'Date message-deletable-headers)
          (message-remove-header "Date"))
+       (unless draft (notmuch-fcc-header-setup))
        ;; The X-Notmuch-Emacs-Draft header is a more reliable
        ;; indication of whether the message really is a draft.
        (setq draft (> (message-remove-header "X-Notmuch-Emacs-Draft") 0)))
        ;; The X-Notmuch-Emacs-Draft header is a more reliable
        ;; indication of whether the message really is a draft.
        (setq draft (> (message-remove-header "X-Notmuch-Emacs-Draft") 0)))
@@ -256,7 +263,7 @@ applied to newly inserted messages)."
       ;; If the resumed message was a draft then set the draft
       ;; message-id so that we can delete the current saved draft if the
       ;; message is resaved or sent.
       ;; If the resumed message was a draft then set the draft
       ;; message-id so that we can delete the current saved draft if the
       ;; message is resaved or sent.
-      (setq notmuch-draft-id (when draft id)))))
+      (setq notmuch-draft-id (and draft id)))))
 
 
 (add-hook 'message-send-hook 'notmuch-draft--mark-deleted)
 
 
 (add-hook 'message-send-hook 'notmuch-draft--mark-deleted)