--- emacs/coolj.el | 16 ++--- emacs/notmuch-address.el | 18 +++--- emacs/notmuch-compat.el | 86 ++++++++++++------------- emacs/notmuch-draft.el | 18 +++--- emacs/notmuch-hello.el | 24 +++---- emacs/notmuch-lib.el | 56 ++++++++--------- emacs/notmuch-maildir-fcc.el | 58 ++++++++--------- emacs/notmuch-mua.el | 34 +++++----- emacs/notmuch-query.el | 6 +- emacs/notmuch-show.el | 111 +++++++++++++++++---------------- emacs/notmuch-tag.el | 4 +- emacs/notmuch-tree.el | 102 +++++++++++++++--------------- emacs/notmuch-wash.el | 2 +- emacs/notmuch.el | 76 +++++++++++----------- test/emacs-address-cleaning.el | 2 +- 15 files changed, 307 insertions(+), 306 deletions(-)
diff --git a/emacs/coolj.el b/emacs/coolj.el index 5d311170..961db606 100644 --- a/emacs/coolj.el +++ b/emacs/coolj.el @@ -108,11 +108,11 @@ (defun coolj-set-breakpoint (prefix) line." (move-to-column fill-column) (if (and (re-search-forward "[^ ]" (line-end-position) 1) - (> (current-column) fill-column)) + (> (current-column) fill-column)) ;; This line is too long. Can we break it? (or (coolj-find-break-backward prefix) - (progn (move-to-column fill-column) - (coolj-find-break-forward))))) + (progn (move-to-column fill-column) + (coolj-find-break-forward))))) (defun coolj-find-break-backward (prefix) "Move point backward to the first available breakpoint and return t. @@ -135,12 +135,12 @@ (defun coolj-find-break-forward () If no break point is found, return nil." (and (search-forward " " (line-end-position) 1) (progn (skip-chars-forward " " (line-end-position)) - (null (eolp))) + (null (eolp))) (if (and fill-nobreak-predicate - (run-hook-with-args-until-success - 'fill-nobreak-predicate)) - (coolj-find-break-forward) - t))) + (run-hook-with-args-until-success + 'fill-nobreak-predicate)) + (coolj-find-break-forward) + t))) (provide 'coolj) diff --git a/emacs/notmuch-address.el b/emacs/notmuch-address.el index ca4da3f3..09dda247 100644 --- a/emacs/notmuch-address.el +++ b/emacs/notmuch-address.el @@ -153,14 +153,14 @@ (defcustom notmuch-address-use-company t (defun notmuch-address-setup () (let* ((setup-company (and notmuch-address-use-company - (require 'company nil t))) + (require 'company nil t))) (pair (cons notmuch-address-completion-headers-regexp - #'notmuch-address-expand-name))) - (when setup-company - (notmuch-company-setup)) - (unless (member pair message-completion-alist) - (setq message-completion-alist - (push pair message-completion-alist))))) + #'notmuch-address-expand-name))) + (when setup-company + (notmuch-company-setup)) + (unless (member pair message-completion-alist) + (setq message-completion-alist + (push pair message-completion-alist))))) (defun notmuch-address-toggle-internal-completion () "Toggle use of internal completion for current buffer. @@ -323,7 +323,7 @@ (defun notmuch-address-harvest (&optional addr-prefix synchronous callback) ,query))) (if synchronous (mapc #'notmuch-address-harvest-addr - (apply 'notmuch-call-notmuch-sexp args)) + (apply 'notmuch-call-notmuch-sexp args)) ;; Asynchronous (let* ((current-proc (if addr-prefix (car notmuch-address-harvest-procs) @@ -390,7 +390,7 @@ (defun notmuch-address--load-address-hash () (defun notmuch-address--save-address-hash () (when notmuch-address-save-filename (if (or (not (file-exists-p notmuch-address-save-filename)) - ;; The file exists, check it is a file we saved + ;; The file exists, check it is a file we saved (notmuch-address--get-address-hash)) (with-temp-file notmuch-address-save-filename (let ((save-plist diff --git a/emacs/notmuch-compat.el b/emacs/notmuch-compat.el index 2cedd39d..388ef70f 100644 --- a/emacs/notmuch-compat.el +++ b/emacs/notmuch-compat.el @@ -35,7 +35,7 @@ (if (fboundp 'setq-local) (if (fboundp 'read-char-choice) (defalias 'notmuch-read-char-choice 'read-char-choice) (defun notmuch-read-char-choice (prompt chars &optional inhibit-keyboard-quit) - "Read and return one of CHARS, prompting for PROMPT. + "Read and return one of CHARS, prompting for PROMPT. Any input that is not one of CHARS is ignored. If optional argument INHIBIT-KEYBOARD-QUIT is non-nil, ignore @@ -44,49 +44,49 @@ (if (fboundp 'read-char-choice) This is an exact copy of this function from emacs 24 for use on emacs 23, except with the one emacs 24 only function it calls inlined." - (unless (consp chars) - (error "Called `read-char-choice' without valid char choices")) - (let (char done show-help (helpbuf " *Char Help*")) - (let ((cursor-in-echo-area t) - (executing-kbd-macro executing-kbd-macro) - (esc-flag nil)) - (save-window-excursion ; in case we call help-form-show - (while (not done) - (unless (get-text-property 0 'face prompt) - (setq prompt (propertize prompt 'face 'minibuffer-prompt))) - (setq char (let ((inhibit-quit inhibit-keyboard-quit)) - (read-key prompt))) - (and show-help (buffer-live-p (get-buffer helpbuf)) - (kill-buffer helpbuf)) - (cond - ((not (numberp char))) - ;; If caller has set help-form, that's enough. - ;; They don't explicitly have to add help-char to chars. - ((and help-form - (eq char help-char) - (setq show-help t) - ;; This is an inlined copy of help-form-show as that - ;; was introduced in emacs 24 too. - (let ((msg (eval help-form))) - (if (stringp msg) - (with-output-to-temp-buffer " *Char Help*" - (princ msg)))))) - ((memq char chars) - (setq done t)) - ((and executing-kbd-macro (= char -1)) - ;; read-event returns -1 if we are in a kbd macro and - ;; there are no more events in the macro. Attempt to - ;; get an event interactively. - (setq executing-kbd-macro nil)) - ((not inhibit-keyboard-quit) + (unless (consp chars) + (error "Called `read-char-choice' without valid char choices")) + (let (char done show-help (helpbuf " *Char Help*")) + (let ((cursor-in-echo-area t) + (executing-kbd-macro executing-kbd-macro) + (esc-flag nil)) + (save-window-excursion ; in case we call help-form-show + (while (not done) + (unless (get-text-property 0 'face prompt) + (setq prompt (propertize prompt 'face 'minibuffer-prompt))) + (setq char (let ((inhibit-quit inhibit-keyboard-quit)) + (read-key prompt))) + (and show-help (buffer-live-p (get-buffer helpbuf)) + (kill-buffer helpbuf)) (cond - ((and (null esc-flag) (eq char ?\e)) - (setq esc-flag t)) - ((memq char '(?\C-g ?\e)) - (keyboard-quit)))))))) - ;; Display the question with the answer. But without cursor-in-echo-area. - (message "%s%s" prompt (char-to-string char)) - char))) + ((not (numberp char))) + ;; If caller has set help-form, that's enough. + ;; They don't explicitly have to add help-char to chars. + ((and help-form + (eq char help-char) + (setq show-help t) + ;; This is an inlined copy of help-form-show as that + ;; was introduced in emacs 24 too. + (let ((msg (eval help-form))) + (if (stringp msg) + (with-output-to-temp-buffer " *Char Help*" + (princ msg)))))) + ((memq char chars) + (setq done t)) + ((and executing-kbd-macro (= char -1)) + ;; read-event returns -1 if we are in a kbd macro and + ;; there are no more events in the macro. Attempt to + ;; get an event interactively. + (setq executing-kbd-macro nil)) + ((not inhibit-keyboard-quit) + (cond + ((and (null esc-flag) (eq char ?\e)) + (setq esc-flag t)) + ((memq char '(?\C-g ?\e)) + (keyboard-quit)))))))) + ;; Display the question with the answer. But without cursor-in-echo-area. + (message "%s%s" prompt (char-to-string char)) + char))) ;; End of compatibility functions diff --git a/emacs/notmuch-draft.el b/emacs/notmuch-draft.el index c3cb619f..ea995379 100644 --- a/emacs/notmuch-draft.el +++ b/emacs/notmuch-draft.el @@ -153,17 +153,17 @@ (defun notmuch-draft--query-encryption () `notmuch-draft-save-plaintext' controls the behaviour." (cl-case notmuch-draft-save-plaintext - ((ask) - (unless (yes-or-no-p - "(Customize `notmuch-draft-save-plaintext' to avoid this warning) + ((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? ") - (error "Save aborted"))) - ((nil) - (error "Refusing to save draft with encryption tags (see `%s')" - '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, diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el index e71e55f3..89e03c36 100644 --- a/emacs/notmuch-hello.el +++ b/emacs/notmuch-hello.el @@ -147,9 +147,9 @@ (defcustom notmuch-saved-searches Other accepted forms are a cons cell of the form (NAME . QUERY) or a list of the form (NAME QUERY COUNT-QUERY)." -;; The saved-search format is also used by the all-tags notmuch-hello -;; section. This section generates its own saved-search list in one of -;; the latter two forms. + ;; The saved-search format is also used by the all-tags notmuch-hello + ;; section. This section generates its own saved-search list in one of + ;; the latter two forms. :get 'notmuch-hello--saved-searches-to-plist :type '(repeat notmuch-saved-search-plist) :tag "List of Saved Searches" @@ -382,10 +382,10 @@ (defun notmuch-hello-nice-number (n) (setq n (/ n 1000))) (setq result (or result '(0))) (apply #'concat - (number-to-string (car result)) - (mapcar (lambda (elem) - (format "%s%03d" notmuch-hello-thousands-separator elem)) - (cdr result))))) + (number-to-string (car result)) + (mapcar (lambda (elem) + (format "%s%03d" notmuch-hello-thousands-separator elem)) + (cdr result))))) (defun notmuch-hello-trim (search) "Trim whitespace." @@ -540,7 +540,7 @@ (defun notmuch-hello-query-counts (query-list &rest options) (notmuch-hello-filtered-query count-query (or (plist-get options :filter-count) (plist-get options :filter)))) - "\n"))) + "\n"))) (unless (= (call-process-region (point-min) (point-max) notmuch-command t t nil "count" "--batch") 0) (notmuch-logged-error @@ -690,7 +690,7 @@ (defvar notmuch-hello-mode-map (fset 'notmuch-hello-mode-map notmuch-hello-mode-map) (define-derived-mode notmuch-hello-mode fundamental-mode "notmuch-hello" - "Major mode for convenient notmuch navigation. This is your entry portal into notmuch. + "Major mode for convenient notmuch navigation. This is your entry portal into notmuch. Saved searches are \"bookmarks\" for arbitrary queries. Hit RET or click on a saved search to view matching threads. Edit saved @@ -720,9 +720,9 @@ (define-derived-mode notmuch-hello-mode fundamental-mode "notmuch-hello" Complete list of currently available key bindings: \\{notmuch-hello-mode-map}" - (setq notmuch-buffer-refresh-function #'notmuch-hello-update) - ;;(setq buffer-read-only t) -) + (setq notmuch-buffer-refresh-function #'notmuch-hello-update) + ;;(setq buffer-read-only t) + ) (defun notmuch-hello-generate-tag-alist (&optional hide-tags) "Return an alist from tags to queries to display in the all-tags section." diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el index 615207ed..7994d5ad 100644 --- a/emacs/notmuch-lib.el +++ b/emacs/notmuch-lib.el @@ -211,7 +211,7 @@ (defun notmuch-assert-cli-sane () (unless (notmuch-cli-sane-p) (notmuch-logged-error "notmuch cli seems misconfigured or unconfigured." -"Perhaps you haven't run \"notmuch setup\" yet? Try running this + "Perhaps you haven't run \"notmuch setup\" yet? Try running this on the command line, and then retry your notmuch command"))) (defun notmuch-cli-version () @@ -321,7 +321,7 @@ (defun notmuch-describe-key (actual-key binding prefix ua-keys tail) (and (functionp binding) (notmuch-documentation-first-line binding)))) tail))) - tail) + tail) (defun notmuch-describe-remaps (remap-keymap ua-keys base-keymap prefix tail) ;; Remappings are represented as a binding whose first "event" is @@ -413,8 +413,8 @@ (defun notmuch-subkeymap-help () "Show help for a subkeymap." (interactive) (let* ((key (this-command-keys-vector)) - (prefix (make-vector (1- (length key)) nil)) - (i 0)) + (prefix (make-vector (1- (length key)) nil)) + (i 0)) (while (< i (length prefix)) (aset prefix i (aref key i)) (setq i (1+ i))) @@ -527,7 +527,7 @@ (defun notmuch-remove-if-not (predicate list) (let (out) (while list (when (funcall predicate (car list)) - (push (car list) out)) + (push (car list) out)) (setq list (cdr list))) (nreverse out))) @@ -835,24 +835,24 @@ (defun notmuch-check-exit-status (exit-status command &optional output err) command " ")) (extra (concat "command: " command-string "\n" - (if (integerp exit-status) - (format "exit status: %s\n" exit-status) - (format "exit signal: %s\n" exit-status)) - (when err - (concat "stderr:\n" err)) - (when output - (concat "stdout:\n" output))))) - (if err - ;; We have an error message straight from the CLI. - (notmuch-logged-error - (replace-regexp-in-string "[ \n\r\t\f]*\\'" "" err) extra) - ;; We only have combined output from the CLI; don't inundate - ;; the user with it. Mimic `process-lines'. - (notmuch-logged-error (format "%s exited with status %s" - (car command) exit-status) - extra)) - ;; `notmuch-logged-error' does not return. - )))) + (if (integerp exit-status) + (format "exit status: %s\n" exit-status) + (format "exit signal: %s\n" exit-status)) + (when err + (concat "stderr:\n" err)) + (when output + (concat "stdout:\n" output))))) + (if err + ;; We have an error message straight from the CLI. + (notmuch-logged-error + (replace-regexp-in-string "[ \n\r\t\f]*\\'" "" err) extra) + ;; We only have combined output from the CLI; don't inundate + ;; the user with it. Mimic `process-lines'. + (notmuch-logged-error (format "%s exited with status %s" + (car command) exit-status) + extra)) + ;; `notmuch-logged-error' does not return. + )))) (defun notmuch-call-notmuch--helper (destination args) "Helper for synchronous notmuch invocation commands. @@ -925,9 +925,9 @@ (defun notmuch-start-notmuch (name buffer sentinel &rest args) as that will interfere with the handling of stderr and the exit status." (let (err-file err-buffer proc err-proc - ;; Find notmuch using Emacs' `exec-path' - (command (or (executable-find notmuch-command) - (error "Command not found: %s" notmuch-command)))) + ;; Find notmuch using Emacs' `exec-path' + (command (or (executable-find notmuch-command) + (error "Command not found: %s" notmuch-command)))) (if (fboundp 'make-process) (progn (setq err-buffer (generate-new-buffer " *notmuch-stderr*")) @@ -1030,8 +1030,8 @@ (defun notmuch-interactive-region () (list (point) (point)))) (define-obsolete-function-alias - 'notmuch-search-interactive-region - 'notmuch-interactive-region + 'notmuch-search-interactive-region + 'notmuch-interactive-region "notmuch 0.29") (provide 'notmuch-lib) diff --git a/emacs/notmuch-maildir-fcc.el b/emacs/notmuch-maildir-fcc.el index 66f32fd4..7d001b2d 100644 --- a/emacs/notmuch-maildir-fcc.el +++ b/emacs/notmuch-maildir-fcc.el @@ -31,7 +31,7 @@ (require 'notmuch-lib) (defvar notmuch-maildir-fcc-count 0) (defcustom notmuch-fcc-dirs "sent" - "Determines the Fcc Header which says where to save outgoing mail. + "Determines the Fcc Header which says where to save outgoing mail. Three types of values are permitted: @@ -69,13 +69,13 @@ (defcustom notmuch-fcc-dirs "sent" In all cases you will be prompted to create the folder or directory if it does not exist yet when sending a mail." - :type '(choice - (const :tag "No FCC header" nil) - (string :tag "A single folder") - (repeat :tag "A folder based on the From header" - (cons regexp (string :tag "Folder")))) - :require 'notmuch-fcc-initialization - :group 'notmuch-send) + :type '(choice + (const :tag "No FCC header" nil) + (string :tag "A single folder") + (repeat :tag "A folder based on the From header" + (cons regexp (string :tag "Folder")))) + :require 'notmuch-fcc-initialization + :group 'notmuch-send) (defcustom notmuch-maildir-use-notmuch-insert 't "Should fcc use notmuch insert instead of simple fcc." @@ -267,16 +267,16 @@ (defun notmuch-maildir-fcc-host-fixer (hostname) t)) (defun notmuch-maildir-fcc-make-uniq-maildir-id () - (let* ((ftime (float-time)) - (microseconds (mod (* 1000000 ftime) 1000000)) - (hostname (notmuch-maildir-fcc-host-fixer (system-name)))) - (setq notmuch-maildir-fcc-count (+ notmuch-maildir-fcc-count 1)) - (format "%d.%d_%d_%d.%s" - ftime - (emacs-pid) - microseconds - notmuch-maildir-fcc-count - hostname))) + (let* ((ftime (float-time)) + (microseconds (mod (* 1000000 ftime) 1000000)) + (hostname (notmuch-maildir-fcc-host-fixer (system-name)))) + (setq notmuch-maildir-fcc-count (+ notmuch-maildir-fcc-count 1)) + (format "%d.%d_%d_%d.%s" + ftime + (emacs-pid) + microseconds + notmuch-maildir-fcc-count + hostname))) (defun notmuch-maildir-fcc-dir-is-maildir-p (dir) (and (file-exists-p (concat dir "/cur/")) @@ -328,17 +328,17 @@ (defun notmuch-maildir-fcc-file-fcc (fcc-header) ;; fix it in some way. (let* ((prompt (format "Fcc %s is not a maildir: \ \(r)etry, (c)reate folder, (i)gnore, or (e)dit the header? " fcc-header)) - (response (notmuch-read-char-choice prompt '(?r ?c ?i ?e)))) - (cl-case response - (?r (notmuch-maildir-fcc-file-fcc fcc-header)) - (?c (if (file-writable-p fcc-header) - (notmuch-maildir-fcc-create-maildir fcc-header) - (message "No permission to create %s." fcc-header) - (sit-for 2)) - (notmuch-maildir-fcc-file-fcc fcc-header)) - (?i 't) - (?e (notmuch-maildir-fcc-file-fcc - (read-from-minibuffer "Fcc header: " fcc-header))))))) + (response (notmuch-read-char-choice prompt '(?r ?c ?i ?e)))) + (cl-case response + (?r (notmuch-maildir-fcc-file-fcc fcc-header)) + (?c (if (file-writable-p fcc-header) + (notmuch-maildir-fcc-create-maildir fcc-header) + (message "No permission to create %s." fcc-header) + (sit-for 2)) + (notmuch-maildir-fcc-file-fcc fcc-header)) + (?i 't) + (?e (notmuch-maildir-fcc-file-fcc + (read-from-minibuffer "Fcc header: " fcc-header))))))) (defun notmuch-maildir-fcc-write-buffer-to-maildir (destdir &optional mark-seen) "Writes the current buffer to maildir destdir. If mark-seen is diff --git a/emacs/notmuch-mua.el b/emacs/notmuch-mua.el index 3bc06b4b..90b02e34 100644 --- a/emacs/notmuch-mua.el +++ b/emacs/notmuch-mua.el @@ -58,7 +58,7 @@ (defcustom notmuch-mua-compose-in 'current-window You may want to customize `message-kill-buffer-on-exit' accordingly." (when (< emacs-major-version 24) - " Due to a known bug in Emacs 23, you should not set + " Due to a known bug in Emacs 23, you should not set this to `new-window' if `message-kill-buffer-on-exit' is disabled: this would result in an incorrect behavior.")) :group 'notmuch-send @@ -106,13 +106,13 @@ (defcustom notmuch-mua-reply-insert-header-p-function This function specifies which parts of a mime message with multiple parts get a header." :type '(radio (const :tag "No part headers" - notmuch-show-reply-insert-header-p-never) + notmuch-show-reply-insert-header-p-never) (const :tag "All except multipart/* and hidden parts" - notmuch-show-reply-insert-header-p-trimmed) + notmuch-show-reply-insert-header-p-trimmed) (const :tag "Only for included text parts" - notmuch-show-reply-insert-header-p-minimal) + notmuch-show-reply-insert-header-p-minimal) (const :tag "Exactly as in show view" - notmuch-show-insert-header-p) + notmuch-show-insert-header-p) (function :tag "Other")) :group 'notmuch-reply) @@ -473,7 +473,7 @@ (defun notmuch-mua-new-forward-messages (messages &optional prompt-for-sender) (when (or prompt-for-sender notmuch-always-prompt-for-sender) (list (cons 'From (notmuch-mua-prompt-for-sender))))) forward-subject ;; Comes from the first message and is - ;; applied later. + ;; applied later. forward-references ;; List of accumulated message-references of forwarded messages forward-queries) ;; List of corresponding message-query ;; Generate the template for the outgoing message. @@ -529,17 +529,17 @@ (defun notmuch-mua-new-reply (query-string &optional prompt-for-sender reply-all If PROMPT-FOR-SENDER is non-nil, the user will be prompted for the From: address first. If REPLY-ALL is non-nil, the message will be addressed to all recipients of the source message." -;; In current emacs (24.3) select-active-regions is set to t by -;; default. The reply insertion code sets the region to the quoted -;; message to make it easy to delete (kill-region or C-w). These two -;; things combine to put the quoted message in the primary selection. -;; -;; This is not what the user wanted and is a privacy risk (accidental -;; pasting of the quoted message). We can avoid some of the problems -;; by let-binding select-active-regions to nil. This fixes if the -;; primary selection was previously in a non-emacs window but not if -;; it was in an emacs window. To avoid the problem in the latter case -;; we deactivate mark. + ;; In current emacs (24.3) select-active-regions is set to t by + ;; default. The reply insertion code sets the region to the quoted + ;; message to make it easy to delete (kill-region or C-w). These two + ;; things combine to put the quoted message in the primary selection. + ;; + ;; This is not what the user wanted and is a privacy risk (accidental + ;; pasting of the quoted message). We can avoid some of the problems + ;; by let-binding select-active-regions to nil. This fixes if the + ;; primary selection was previously in a non-emacs window but not if + ;; it was in an emacs window. To avoid the problem in the latter case + ;; we deactivate mark. (let ((sender (when prompt-for-sender (notmuch-mua-prompt-for-sender))) diff --git a/emacs/notmuch-query.el b/emacs/notmuch-query.el index 3a835a00..1db9d7ca 100644 --- a/emacs/notmuch-query.el +++ b/emacs/notmuch-query.el @@ -42,9 +42,9 @@ (defun notmuch-query-map-aux (mapper function seq) "Private function to do the actual mapping and flattening." (apply 'append (mapcar - (lambda (tree) - (funcall mapper function tree)) - seq))) + (lambda (tree) + (funcall mapper function tree)) + seq))) (defun notmuch-query-map-threads (fn threads) "Apply FN to every thread in THREADS. Flatten results to a list. diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index 6e23a980..f38866b0 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -272,7 +272,7 @@ (defmacro with-current-notmuch-show-message (&rest body) `(save-excursion (let ((id (notmuch-show-get-message-id))) (let ((buf (generate-new-buffer (concat "*notmuch-msg-" id "*")))) - (with-current-buffer buf + (with-current-buffer buf (let ((coding-system-for-read 'no-conversion)) (call-process notmuch-command nil t nil "show" "--format=raw" id)) ,@body) @@ -303,7 +303,7 @@ (defun notmuch-show-view-all-mime-parts () ("multipart/alternative" ignore identity) ("multipart/mixed" ignore identity) ("multipart/related" ignore identity) - ))) + ))) (mm-display-parts (mm-dissect-buffer))))) (defun notmuch-show-save-attachments () @@ -406,43 +406,44 @@ (defun notmuch-clean-address (address) cell of (AUTHOR_EMAIL AUTHOR_NAME). Return (ADDRESS nil) if parsing fails." (condition-case nil - (let (p-name p-address) - ;; It would be convenient to use `mail-header-parse-address', - ;; but that expects un-decoded mailbox parts, whereas our - ;; mailbox parts are already decoded (and hence may contain - ;; UTF-8). Given that notmuch should handle most of the awkward - ;; cases, some simple string deconstruction should be sufficient - ;; here. - (cond - ;; "User <u...@dom.ain>" style. - ((string-match "\\(.*\\) <\\(.*\\)>" address) - (setq p-name (match-string 1 address) - p-address (match-string 2 address))) - ;; "<u...@dom.ain>" style. - ((string-match "<\\(.*\\)>" address) - (setq p-address (match-string 1 address))) - ;; Everything else. - (t - (setq p-address address))) - (when p-name - ;; Remove elements of the mailbox part that are not relevant for - ;; display, even if they are required during transport: - ;; - ;; Backslashes. - (setq p-name (replace-regexp-in-string "\\\\" "" p-name)) - ;; Outer single and double quotes, which might be nested. - (cl-loop with start-of-loop - do (setq start-of-loop p-name) - when (string-match "^\"\\(.*\\)\"$" p-name) - do (setq p-name (match-string 1 p-name)) - when (string-match "^'\\(.*\\)'$" p-name) - do (setq p-name (match-string 1 p-name)) - until (string= start-of-loop p-name))) - ;; If the address is 'f...@bar.com <f...@bar.com>' then show just - ;; 'f...@bar.com'. - (when (string= p-name p-address) - (setq p-name nil)) - (cons p-address p-name)) + (let (p-name p-address) + ;; It would be convenient to use `mail-header-parse-address', + ;; but that expects un-decoded mailbox parts, whereas our + ;; mailbox parts are already decoded (and hence may contain + ;; UTF-8). Given that notmuch should handle most of the awkward + ;; cases, some simple string deconstruction should be sufficient + ;; here. + (cond + ;; "User <u...@dom.ain>" style. + ((string-match "\\(.*\\) <\\(.*\\)>" address) + (setq p-name (match-string 1 address) + p-address (match-string 2 address))) + + ;; "<u...@dom.ain>" style. + ((string-match "<\\(.*\\)>" address) + (setq p-address (match-string 1 address))) + ;; Everything else. + (t + (setq p-address address))) + (when p-name + ;; Remove elements of the mailbox part that are not relevant for + ;; display, even if they are required during transport: + ;; + ;; Backslashes. + (setq p-name (replace-regexp-in-string "\\\\" "" p-name)) + ;; Outer single and double quotes, which might be nested. + (cl-loop with start-of-loop + do (setq start-of-loop p-name) + when (string-match "^\"\\(.*\\)\"$" p-name) + do (setq p-name (match-string 1 p-name)) + when (string-match "^'\\(.*\\)'$" p-name) + do (setq p-name (match-string 1 p-name)) + until (string= start-of-loop p-name))) + ;; If the address is 'f...@bar.com <f...@bar.com>' then show just + ;; 'f...@bar.com'. + (when (string= p-name p-address) + (setq p-name nil)) + (cons p-address p-name)) (error (cons address nil)))) (defun notmuch-show-clean-address (address) @@ -601,9 +602,9 @@ (defun notmuch-show-setup-w3m () "Instruct w3m how to retrieve content from a \"related\" part of a message." (interactive) (if (boundp 'w3m-cid-retrieve-function-alist) - (unless (assq 'notmuch-show-mode w3m-cid-retrieve-function-alist) - (push (cons 'notmuch-show-mode #'notmuch-show--cid-w3m-retrieve) - w3m-cid-retrieve-function-alist))) + (unless (assq 'notmuch-show-mode w3m-cid-retrieve-function-alist) + (push (cons 'notmuch-show-mode #'notmuch-show--cid-w3m-retrieve) + w3m-cid-retrieve-function-alist))) (setq mm-html-inhibit-images nil)) (defvar w3m-current-buffer) ;; From `w3m.el'. @@ -633,8 +634,8 @@ (defun notmuch-show-insert-part-multipart/alternative (msg part content-type nth ;; should be chosen if there are more than one that match? (mapc (lambda (inner-part) (let* ((inner-type (plist-get inner-part :content-type)) - (hide (not (or notmuch-show-all-multipart/alternative-parts - (string= chosen-type inner-type))))) + (hide (not (or notmuch-show-all-multipart/alternative-parts + (string= chosen-type inner-type))))) (notmuch-show-insert-bodypart msg inner-part depth hide))) inner-parts) @@ -1002,7 +1003,7 @@ (defun notmuch-show-insert-bodypart (msg part depth &optional hide) ;; Store the computed mime-type for later use (e.g. by attachment handlers). (plist-put part :computed-type mime-type) (if show-part - (notmuch-show-insert-bodypart-internal msg part mime-type nth depth button) + (notmuch-show-insert-bodypart-internal msg part mime-type nth depth button) (when button (button-put button :notmuch-lazy-part (list msg part mime-type nth depth button)))) @@ -1515,9 +1516,9 @@ (define-derived-mode notmuch-show-mode fundamental-mode "notmuch-show" (setq buffer-read-only t truncate-lines t) (setq imenu-prev-index-position-function - #'notmuch-show-imenu-prev-index-position-function) + #'notmuch-show-imenu-prev-index-position-function) (setq imenu-extract-index-name-function - #'notmuch-show-imenu-extract-index-name-function)) + #'notmuch-show-imenu-extract-index-name-function)) (defun notmuch-tree-from-show-current-query () "Call notmuch tree with the current query." @@ -1740,8 +1741,8 @@ (defun notmuch-show-seen-current-message (start end) user decision and we should not override it." (when (and (notmuch-show-message-visible-p) (not (notmuch-show-get-prop :seen))) - (notmuch-show-mark-read) - (notmuch-show-set-prop :seen t))) + (notmuch-show-mark-read) + (notmuch-show-set-prop :seen t))) (defvar notmuch-show--seen-has-errored nil) (make-variable-buffer-local 'notmuch-show--seen-has-errored) @@ -1860,9 +1861,9 @@ (defun notmuch-show-rewind () (let ((start-of-message (notmuch-show-message-top)) (start-of-window (window-start))) (cond - ;; Either this message is properly aligned with the start of the - ;; window or the start of this message is not visible on the - ;; screen - scroll. + ;; Either this message is properly aligned with the start of the + ;; window or the start of this message is not visible on the + ;; screen - scroll. ((or (= start-of-message start-of-window) (< start-of-message start-of-window)) (scroll-down) @@ -2506,9 +2507,9 @@ (defmacro notmuch-show--with-currently-shown-message (&rest body) message." `(save-excursion (save-restriction - (let ((extent (notmuch-show-message-extent))) - (narrow-to-region (car extent) (cdr extent)) - ,@body)))) + (let ((extent (notmuch-show-message-extent))) + (narrow-to-region (car extent) (cdr extent)) + ,@body)))) (defun notmuch-show--gather-urls () "Gather any URLs in the current message." diff --git a/emacs/notmuch-tag.el b/emacs/notmuch-tag.el index 85c80f54..2fcf5a9e 100644 --- a/emacs/notmuch-tag.el +++ b/emacs/notmuch-tag.el @@ -236,7 +236,7 @@ (defun notmuch-tag-format-image-data (tag data) (defun notmuch-tag-star-icon () "Return SVG data representing a star icon. This can be used with `notmuch-tag-format-image-data'." -"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?> + "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?> <svg version=\"1.1\" width=\"16\" height=\"16\"> <g transform=\"translate(-242.81601,-315.59635)\"> <path @@ -536,7 +536,7 @@ (defun notmuch-tag-jump (reverse) name) (mapconcat #'identity tag-change " ")))) (push (list key name-string - `(lambda () (,tag-function ',tag-change))) + `(lambda () (,tag-function ',tag-change))) action-map))) (push (list notmuch-tag-jump-reverse-key (if reverse diff --git a/emacs/notmuch-tree.el b/emacs/notmuch-tree.el index d90f2aa0..6ac0c62d 100644 --- a/emacs/notmuch-tree.el +++ b/emacs/notmuch-tree.el @@ -245,7 +245,7 @@ (defun notmuch-tree-to-message-pane (func) which executes function FUNC in the message pane if it is open (if the message pane is closed it does nothing)." `(lambda () - ,(concat "(In message pane) " (documentation func t)) + ,(concat "(In message pane) " (documentation func t)) (interactive) (when (window-live-p notmuch-tree-message-window) (with-selected-window notmuch-tree-message-window @@ -273,7 +273,7 @@ (defun notmuch-tree-close-message-pane-and (func) which closes the message pane if open and then executes function FUNC." `(lambda () - ,(concat "(Close message pane and) " (documentation func t)) + ,(concat "(Close message pane and) " (documentation func t)) (interactive) (let ((notmuch-show-process-crypto (notmuch-tree-inherit-from-message-pane 'notmuch-show-process-crypto))) @@ -891,31 +891,31 @@ (defun notmuch-tree-insert-tree (tree depth tree-status first last) message together with all its descendents." (let ((msg (car tree)) (replies (cadr tree))) - (cond - ((and (< 0 depth) (not last)) - (push "├" tree-status)) - ((and (< 0 depth) last) - (push "╰" tree-status)) - ((and (eq 0 depth) first last) - ;; Choice between these two variants is a matter of taste. - ;; (push "─" tree-status)) - (push " " tree-status)) - ((and (eq 0 depth) first (not last)) - (push "┬" tree-status)) - ((and (eq 0 depth) (not first) last) - (push "╰" tree-status)) - ((and (eq 0 depth) (not first) (not last)) - (push "├" tree-status))) - (push (concat (if replies "┬" "─") "►") tree-status) - (setq msg (plist-put msg :first (and first (eq 0 depth)))) - (setq msg (plist-put msg :tree-status tree-status)) - (setq msg (plist-put msg :orig-tags (plist-get msg :tags))) - (notmuch-tree-goto-and-insert-msg msg) - (pop tree-status) - (pop tree-status) - (if last - (push " " tree-status) - (push "│" tree-status)) + (cond + ((and (< 0 depth) (not last)) + (push "├" tree-status)) + ((and (< 0 depth) last) + (push "╰" tree-status)) + ((and (eq 0 depth) first last) + ;; Choice between these two variants is a matter of taste. + ;; (push "─" tree-status)) + (push " " tree-status)) + ((and (eq 0 depth) first (not last)) + (push "┬" tree-status)) + ((and (eq 0 depth) (not first) last) + (push "╰" tree-status)) + ((and (eq 0 depth) (not first) (not last)) + (push "├" tree-status))) + (push (concat (if replies "┬" "─") "►") tree-status) + (setq msg (plist-put msg :first (and first (eq 0 depth)))) + (setq msg (plist-put msg :tree-status tree-status)) + (setq msg (plist-put msg :orig-tags (plist-get msg :tags))) + (notmuch-tree-goto-and-insert-msg msg) + (pop tree-status) + (pop tree-status) + (if last + (push " " tree-status) + (push "│" tree-status)) (notmuch-tree-insert-thread replies (1+ depth) tree-status))) (defun notmuch-tree-insert-thread (thread depth tree-status) @@ -966,34 +966,34 @@ (defun notmuch-tree-process-sentinel (proc msg) (exit-status (process-exit-status proc)) (never-found-target-thread nil)) (when (memq status '(exit signal)) - (kill-buffer (process-get proc 'parse-buf)) - (if (buffer-live-p buffer) - (with-current-buffer buffer - (save-excursion - (let ((inhibit-read-only t) - (atbob (bobp))) - (goto-char (point-max)) - (if (eq status 'signal) - (insert "Incomplete search results (tree view process was killed).\n")) - (when (eq status 'exit) - (insert "End of search results.") - (unless (= exit-status 0) - (insert (format " (process returned %d)" exit-status))) - (insert "\n"))))))))) + (kill-buffer (process-get proc 'parse-buf)) + (if (buffer-live-p buffer) + (with-current-buffer buffer + (save-excursion + (let ((inhibit-read-only t) + (atbob (bobp))) + (goto-char (point-max)) + (if (eq status 'signal) + (insert "Incomplete search results (tree view process was killed).\n")) + (when (eq status 'exit) + (insert "End of search results.") + (unless (= exit-status 0) + (insert (format " (process returned %d)" exit-status))) + (insert "\n"))))))))) (defun notmuch-tree-process-filter (proc string) "Process and filter the output of \"notmuch show\" for tree view." (let ((results-buf (process-buffer proc)) - (parse-buf (process-get proc 'parse-buf)) - (inhibit-read-only t) - done) + (parse-buf (process-get proc 'parse-buf)) + (inhibit-read-only t) + done) (if (not (buffer-live-p results-buf)) - (delete-process proc) + (delete-process proc) (with-current-buffer parse-buf - ;; Insert new data - (save-excursion - (goto-char (point-max)) - (insert string)) + ;; Insert new data + (save-excursion + (goto-char (point-max)) + (insert string)) (notmuch-sexp-parse-partial-list 'notmuch-tree-insert-forest-thread results-buf))))) @@ -1020,8 +1020,8 @@ (defun notmuch-tree-worker (basic-query &optional query-context target open-targ (erase-buffer) (goto-char (point-min)) (let* ((search-args (concat basic-query - (if query-context (concat " and (" query-context ")")) - )) + (if query-context (concat " and (" query-context ")")) + )) (message-arg (if unthreaded "--unthreaded" "--entire-thread"))) (if (equal (car (process-lines notmuch-command "count" search-args)) "0") (setq search-args basic-query)) diff --git a/emacs/notmuch-wash.el b/emacs/notmuch-wash.el index c3b24cb9..00ac45b6 100644 --- a/emacs/notmuch-wash.el +++ b/emacs/notmuch-wash.el @@ -373,7 +373,7 @@ (defun notmuch-wash-subject-to-patch-sequence-number (subject) (when (string-match "^ *\\(\\[[^]]*\\] *\\)*\\[[^]]*?\\([0-9]+\\)/[0-9]+[^]]*\\].*" subject) - (string-to-number (substring subject (match-beginning 2) (match-end 2))))) + (string-to-number (substring subject (match-beginning 2) (match-end 2))))) (defun notmuch-wash-subject-to-patch-filename (subject) "Convert a patch mail SUBJECT into a filename. diff --git a/emacs/notmuch.el b/emacs/notmuch.el index 04334c76..2e84cd34 100644 --- a/emacs/notmuch.el +++ b/emacs/notmuch.el @@ -117,23 +117,23 @@ (defvar notmuch-query-history nil (defun notmuch-foreach-mime-part (function mm-handle) (cond ((stringp (car mm-handle)) - (dolist (part (cdr mm-handle)) - (notmuch-foreach-mime-part function part))) - ((bufferp (car mm-handle)) - (funcall function mm-handle)) - (t (dolist (part mm-handle) - (notmuch-foreach-mime-part function part))))) + (dolist (part (cdr mm-handle)) + (notmuch-foreach-mime-part function part))) + ((bufferp (car mm-handle)) + (funcall function mm-handle)) + (t (dolist (part mm-handle) + (notmuch-foreach-mime-part function part))))) (defun notmuch-count-attachments (mm-handle) (let ((count 0)) (notmuch-foreach-mime-part (lambda (p) (let ((disposition (mm-handle-disposition p))) - (and (listp disposition) - (or (equal (car disposition) "attachment") - (and (equal (car disposition) "inline") - (assq 'filename disposition))) - (cl-incf count)))) + (and (listp disposition) + (or (equal (car disposition) "attachment") + (and (equal (car disposition) "inline") + (assq 'filename disposition))) + (cl-incf count)))) mm-handle) count)) @@ -142,13 +142,13 @@ (defun notmuch-save-attachments (mm-handle &optional queryp) (lambda (p) (let ((disposition (mm-handle-disposition p))) (and (listp disposition) - (or (equal (car disposition) "attachment") - (and (equal (car disposition) "inline") - (assq 'filename disposition))) - (or (not queryp) - (y-or-n-p - (concat "Save '" (cdr (assq 'filename disposition)) "' "))) - (mm-save-part p)))) + (or (equal (car disposition) "attachment") + (and (equal (car disposition) "inline") + (assq 'filename disposition))) + (or (not queryp) + (y-or-n-p + (concat "Save '" (cdr (assq 'filename disposition)) "' "))) + (mm-save-part p)))) mm-handle)) (require 'hl-line) @@ -272,11 +272,11 @@ (defun notmuch-search-first-thread () (goto-char (point-min))) (defface notmuch-message-summary-face - '((((class color) (background light)) (:background "#f0f0f0")) - (((class color) (background dark)) (:background "#303030"))) - "Face for the single-line message summary in notmuch-show-mode." - :group 'notmuch-show - :group 'notmuch-faces) + '((((class color) (background light)) (:background "#f0f0f0")) + (((class color) (background dark)) (:background "#303030"))) + "Face for the single-line message summary in notmuch-show-mode." + :group 'notmuch-show + :group 'notmuch-faces) (defface notmuch-search-date '((t :inherit default)) @@ -392,9 +392,9 @@ (define-derived-mode notmuch-search-mode fundamental-mode "notmuch-search" (setq truncate-lines t) (setq buffer-read-only t) (setq imenu-prev-index-position-function - #'notmuch-search-imenu-prev-index-position-function) + #'notmuch-search-imenu-prev-index-position-function) (setq imenu-extract-index-name-function - #'notmuch-search-imenu-extract-index-name-function)) + #'notmuch-search-imenu-extract-index-name-function)) (defun notmuch-search-get-result (&optional pos) "Return the result object for the thread at POS (or point). @@ -689,9 +689,9 @@ (defun notmuch-search-process-sentinel (proc msg) (not (string= notmuch-search-target-thread "found"))) (set 'never-found-target-thread t))))) (when (and never-found-target-thread - notmuch-search-target-line) - (goto-char (point-min)) - (forward-line (1- notmuch-search-target-line))))))))) + notmuch-search-target-line) + (goto-char (point-min)) + (forward-line (1- notmuch-search-target-line))))))))) (define-widget 'notmuch--custom-face-edit 'lazy "Custom face edit with a tag Edit Face" @@ -711,7 +711,7 @@ (defcustom notmuch-search-line-faces (the following text would be placed in your ~/.emacs file): (setq notmuch-search-line-faces \\='((\"unread\" . (:foreground \"green\")) - (\"deleted\" . (:foreground \"red\" + (\"deleted\" . (:foreground \"red\" :background \"blue\")))) The FACE must be a face name (a symbol or string), a property @@ -722,7 +722,7 @@ (defcustom notmuch-search-line-faces background." :type '(alist :key-type (string) :value-type (radio (face :tag "Face name") - (notmuch--custom-face-edit))) + (notmuch--custom-face-edit))) :group 'notmuch-search :group 'notmuch-faces) @@ -919,15 +919,15 @@ (defun notmuch-read-query (prompt) PROMPT is the string to prompt with." (let* ((all-tags - (mapcar (lambda (tag) (notmuch-escape-boolean-term tag)) - (process-lines notmuch-command "search" "--output=tags" "*"))) + (mapcar (lambda (tag) (notmuch-escape-boolean-term tag)) + (process-lines notmuch-command "search" "--output=tags" "*"))) (completions - (append (list "folder:" "path:" "thread:" "id:" "date:" "from:" "to:" - "subject:" "attachment:") - (mapcar (lambda (tag) (concat "tag:" tag)) all-tags) - (mapcar (lambda (tag) (concat "is:" tag)) all-tags) - (mapcar (lambda (mimetype) (concat "mimetype:" mimetype)) - (mailcap-mime-types))))) + (append (list "folder:" "path:" "thread:" "id:" "date:" "from:" "to:" + "subject:" "attachment:") + (mapcar (lambda (tag) (concat "tag:" tag)) all-tags) + (mapcar (lambda (tag) (concat "is:" tag)) all-tags) + (mapcar (lambda (mimetype) (concat "mimetype:" mimetype)) + (mailcap-mime-types))))) (let ((keymap (copy-keymap minibuffer-local-map)) (current-query (cl-case major-mode (notmuch-search-mode (notmuch-search-get-query)) diff --git a/test/emacs-address-cleaning.el b/test/emacs-address-cleaning.el index 8423245f..6eda0ebc 100644 --- a/test/emacs-address-cleaning.el +++ b/test/emacs-address-cleaning.el @@ -1,6 +1,6 @@ (defun notmuch-test-address-cleaning-1 () (notmuch-test-expect-equal (notmuch-show-clean-address "d...@dme.org") - "d...@dme.org")) + "d...@dme.org")) (defun notmuch-test-address-cleaning-2 () (let* ((input '("f...@bar.com" -- 2.26.0 _______________________________________________ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-le...@notmuchmail.org