On Sun, Jul 26 2020, Jonas Bernoulli wrote: > Most people who write lots of lisp tend to only sparsely use empty > "separator" lines within forms. In lisp they feel unnecessary and > since most files stick to this convention we get a bit confused > when there are extra empty lines. It feels like the s-expressions > are falling into pieces. > > All of this is especially true between a function's doc-string and > body because the doc-string is colored differently, which visually > already separates it quite sufficiently from the code that follows. > --- > emacs/make-deps.el | 2 - > emacs/notmuch-address.el | 2 - > emacs/notmuch-crypto.el | 4 -- > emacs/notmuch-hello.el | 18 --------- > emacs/notmuch-jump.el | 5 --- > emacs/notmuch-lib.el | 10 ----- > emacs/notmuch-maildir-fcc.el | 7 ---- > emacs/notmuch-mua.el | 26 ------------- > emacs/notmuch-parser.el | 5 --- > emacs/notmuch-show.el | 75 ++---------------------------------- > emacs/notmuch-tag.el | 3 -- > emacs/notmuch-tree.el | 9 ----- > emacs/notmuch-wash.el | 18 +-------- > emacs/notmuch.el | 7 ---- > 14 files changed, 5 insertions(+), 186 deletions(-) > > diff --git a/emacs/make-deps.el b/emacs/make-deps.el > index 5b6db698..dcac319c 100644 > --- a/emacs/make-deps.el > +++ b/emacs/make-deps.el > @@ -23,7 +23,6 @@ > > (defun batch-make-deps () > "Invoke `make-deps' for each file on the command line." > - > (setq debug-on-error t) > (dolist (file command-line-args-left) > (let ((default-directory command-line-default-directory)) > @@ -37,7 +36,6 @@ (defun make-deps (&optional dir) > This prints make dependencies to `standard-output' based on the > top-level `require' expressions in the current buffer. Paths in > rules will be given relative to DIR, or `default-directory'." > - > (setq dir (or dir default-directory)) > (save-excursion > (goto-char (point-min)) > diff --git a/emacs/notmuch-address.el b/emacs/notmuch-address.el > index 2a9c411a..ca4da3f3 100644 > --- a/emacs/notmuch-address.el > +++ b/emacs/notmuch-address.el > @@ -302,7 +302,6 @@ (defun notmuch-address-harvest (&optional addr-prefix > synchronous callback) > Address harvesting may take some time so the address collection runs > asynchronously unless SYNCHRONOUS is t. In case of asynchronous > execution, CALLBACK is called when harvesting finishes." > - > (let* ((sent (eq (car notmuch-address-internal-completion) 'sent)) > (config-query (cadr notmuch-address-internal-completion)) > (prefix-query (when addr-prefix > @@ -335,7 +334,6 @@ (defun notmuch-address-harvest (&optional addr-prefix > synchronous callback) > ;; Kill any existing process > (when current-proc > (kill-buffer (process-buffer current-proc))) ; this also kills the > process > - > (setq current-proc > (apply 'notmuch-start-notmuch proc-name proc-buf > callback ; process sentinel > diff --git a/emacs/notmuch-crypto.el b/emacs/notmuch-crypto.el > index 2327ff1f..58947a20 100644 > --- a/emacs/notmuch-crypto.el > +++ b/emacs/notmuch-crypto.el > @@ -123,17 +123,14 @@ (defun notmuch-crypto-insert-sigstatus-button > (sigstatus from) > face 'notmuch-crypto-signature-good-key)) > (setq button-action 'notmuch-crypto-sigstatus-good-callback > help-msg (concat "Click to list key ID 0x" fingerprint ".")))) > - > ((string= status "error") > (setq label (concat "Unknown key ID " keyid " or unsupported > algorithm") > button-action 'notmuch-crypto-sigstatus-error-callback > help-msg (concat "Click to retrieve key ID " keyid > " from keyserver."))) > - > ((string= status "bad") > (setq label (concat "Bad signature (claimed key ID " keyid ")") > face 'notmuch-crypto-signature-bad)) > - > (status > (setq label (concat "Unknown signature status: " status))) > (t > @@ -232,7 +229,6 @@ (defun notmuch-crypto-sigstatus-error-callback (button) > (process-put p :notmuch-show-buffer (current-buffer)) > (process-put p :notmuch-show-point (point)) > (message "Getting the GPG key %s asynchronously..." keyid))) > - > (let ((window (display-buffer buffer))) > (with-selected-window window > (with-current-buffer buffer > diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el > index 11c625ea..e71e55f3 100644 > --- a/emacs/notmuch-hello.el > +++ b/emacs/notmuch-hello.el > @@ -150,7 +150,6 @@ (defcustom notmuch-saved-searches > ;; 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" > @@ -482,20 +481,17 @@ (defun notmuch-hello-tags-per-line (widest) > ;; Count is 9 wide (8 digits plus space), 1 for the space > ;; after the name. > (+ 9 1 (max notmuch-column-control widest))))) > - > ((floatp notmuch-column-control) > (let* ((available-width (- (window-width) notmuch-hello-indent)) > (proposed-width (max (* available-width > notmuch-column-control) > widest))) > (floor available-width proposed-width))) > - > (t > (max 1 > (/ (- (window-width) notmuch-hello-indent) > ;; Count is 9 wide (8 digits plus space), 1 for the space > ;; after the name. > (+ 9 1 widest))))))) > - > (cons tags-per-line (/ (max 1 > (- (window-width) notmuch-hello-indent > ;; Count is 9 wide (8 digits plus > @@ -545,7 +541,6 @@ (defun notmuch-hello-query-counts (query-list &rest > options) > (or (plist-get options :filter-count) > (plist-get options :filter)))) > "\n"))) > - > (unless (= (call-process-region (point-min) (point-max) notmuch-command > t t nil "count" "--batch") 0) > (notmuch-logged-error > @@ -553,9 +548,7 @@ (defun notmuch-hello-query-counts (query-list &rest > options) > "Please check that the notmuch CLI is new enough to support `count > --batch'. In general we recommend running matching versions of > the CLI and emacs interface.")) > - > (goto-char (point-min)) > - > (notmuch-remove-if-not > #'identity > (mapcar > @@ -621,7 +614,6 @@ (defun notmuch-hello-insert-buttons (searches) > (setq column-indent 0) > (widget-insert "\n"))) > reordered-list) > - > ;; If the last line was not full (and hence did not include a > ;; carriage return), insert one now. > (unless (eq (% count tags-per-line) 0) > @@ -780,7 +772,6 @@ (defun notmuch-hello-insert-header () > (car (process-lines notmuch-command "count"))))) > (widget-insert " messages.\n"))) > > - > (defun notmuch-hello-insert-saved-searches () > "Insert the saved-searches section." > (let ((searches (notmuch-hello-query-counts > @@ -977,7 +968,6 @@ (defun notmuch-hello-insert-footer () > (defun notmuch-hello (&optional no-display) > "Run notmuch and display saved searches, known tags, etc." > (interactive) > - > (notmuch-assert-cli-sane) > ;; This may cause a window configuration change, so if the > ;; auto-refresh hook is already installed, avoid recursive refresh. > @@ -985,32 +975,25 @@ (defun notmuch-hello (&optional no-display) > (if no-display > (set-buffer "*notmuch-hello*") > (switch-to-buffer "*notmuch-hello*"))) > - > ;; Install auto-refresh hook > (when notmuch-hello-auto-refresh > (add-hook 'window-configuration-change-hook > #'notmuch-hello-window-configuration-change)) > - > (let ((target-line (line-number-at-pos)) > (target-column (current-column)) > (inhibit-read-only t)) > - > ;; Delete all editable widget fields. Editable widget fields are > ;; tracked in a buffer local variable `widget-field-list' (and > ;; others). If we do `erase-buffer' without properly deleting the > ;; widgets, some widget-related functions are confused later. > (mapc 'widget-delete widget-field-list) > - > (erase-buffer) > - > (unless (eq major-mode 'notmuch-hello-mode) > (notmuch-hello-mode)) > - > (let ((all (overlay-lists))) > ;; Delete all the overlays. > (mapc 'delete-overlay (car all)) > (mapc 'delete-overlay (cdr all))) > - > (mapc > (lambda (section) > (let ((point-before (point))) > @@ -1023,7 +1006,6 @@ (defun notmuch-hello (&optional no-display) > (widget-insert "\n")))) > notmuch-hello-sections) > (widget-setup) > - > ;; Move point back to where it was before refresh. Use line and > ;; column instead of point directly to be insensitive to additions > ;; and removals of text within earlier lines. > diff --git a/emacs/notmuch-jump.el b/emacs/notmuch-jump.el > index 6d8cd97f..adf79650 100644 > --- a/emacs/notmuch-jump.el > +++ b/emacs/notmuch-jump.el > @@ -43,7 +43,6 @@ (defun notmuch-jump-search () > Typically these shortcuts are a single key long, so this is a > fast way to jump to a saved search from anywhere in Notmuch." > (interactive) > - > ;; Build the action map > (let (action-map) > (dolist (saved-search notmuch-saved-searches) > @@ -67,7 +66,6 @@ (defun notmuch-jump-search () > `(lambda () (notmuch-search ',query > ',oldest-first))))) > action-map))))) > (setq action-map (nreverse action-map)) > - > (if action-map > (notmuch-jump action-map "Search: ") > (error "To use notmuch-jump, \ > @@ -90,7 +88,6 @@ (defun notmuch-jump (action-map prompt) > the buffer, and ACTION is a nullary function to call. LABEL may > be null, in which case the action will still be bound, but will > not appear in the pop-up buffer." > - > (let* ((items (notmuch-jump--format-actions action-map)) > ;; Format the table of bindings and the full prompt > (table > @@ -115,7 +112,6 @@ (defun notmuch-jump (action-map prompt) > (notmuch-jump--action nil)) > ;; Read the action > (read-from-minibuffer full-prompt nil minibuffer-map) > - > ;; If we got an action, do it > (when notmuch-jump--action > (funcall notmuch-jump--action)))) > @@ -126,7 +122,6 @@ (defun notmuch-jump--format-actions (action-map) > Returns a list of strings, one for each item with a label in > ACTION-MAP. These strings can be inserted into a tabular > buffer." > - > ;; Compute the maximum key description width > (let ((key-width 1)) > (pcase-dolist (`(,key ,desc) action-map) > diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el > index 9339f9d0..615207ed 100644 > --- a/emacs/notmuch-lib.el > +++ b/emacs/notmuch-lib.el > @@ -418,7 +418,6 @@ (defun notmuch-subkeymap-help () > (while (< i (length prefix)) > (aset prefix i (aref key i)) > (setq i (1+ i))) > - > (let* ((subkeymap (key-binding prefix)) > (ua-keys (where-is-internal 'universal-argument nil t)) > (prefix-string (notmuch-prefix-key-description prefix)) > @@ -486,7 +485,6 @@ (defun notmuch-escape-boolean-term (term) > The caller is responsible for prepending the term prefix and a > colon. This performs minimal escaping in order to produce > user-friendly queries." > - > (save-match-data > (if (or (equal term "") > ;; To be pessimistic, only pass through terms composed > @@ -731,7 +729,6 @@ (defun notmuch-apply-face (object face &optional below > start end) > attributes, or a list of these. If START and/or END are omitted, > they default to the beginning/end of OBJECT. For convenience > when applied to strings, this returns OBJECT." > - > ;; A face property can have three forms: a face name (a string or > ;; symbol), a property list, or a list of these two forms. In the > ;; list case, the faces will be combined, with the earlier faces > @@ -774,7 +771,6 @@ (defun notmuch-logged-error (msg &optional extra) > signals MSG as an error. If EXTRA is non-nil, text referring the > user to the *Notmuch errors* buffer will be appended to the > signaled error. This function does not return." > - > (with-current-buffer (get-buffer-create "*Notmuch errors*") > (goto-char (point-max)) > (unless (bobp) > @@ -819,7 +815,6 @@ (defun notmuch-check-exit-status (exit-status command > &optional output err) > giving the output of command. ERR, if provided, is the error > output of command. OUTPUT and ERR will be included in the error > message." > - > (cond > ((eq exit-status 0) t) > ((eq exit-status 20) > @@ -865,7 +860,6 @@ (defun notmuch-call-notmuch--helper (destination args) > This wraps `call-process'. DESTINATION has the same meaning as > for `call-process'. ARGS is as described for > `notmuch-call-notmuch-process'." > - > (let (stdin-string) > (while (keywordp (car args)) > (cl-case (car args) > @@ -903,7 +897,6 @@ (defun notmuch-call-notmuch-sexp (&rest args) > Like `notmuch-call-notmuch-process', if notmuch exits with a > non-zero status, this will report its output and signal an > error." > - > (with-temp-buffer > (let ((err-file (make-temp-file "nmerr"))) > (unwind-protect > @@ -931,7 +924,6 @@ (defun notmuch-start-notmuch (name buffer sentinel &rest > args) > invoke `set-process-sentinel' directly on the returned process, > 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) > @@ -956,7 +948,6 @@ (defun notmuch-start-notmuch (name buffer sentinel &rest > args) > (process-put err-proc 'err-file err-file) > (process-put err-proc 'err-buffer err-buffer) > (set-process-sentinel err-proc > #'notmuch-start-notmuch-error-sentinel)) > - > ;; On Emacs versions before 25, there is no way to capture > ;; stdout and stderr separately for asynchronous processes, or > ;; even to redirect stderr to a file, so we use a trivial shell > @@ -969,7 +960,6 @@ (defun notmuch-start-notmuch (name buffer sentinel &rest > args) > "exec 2>\"$1\"; shift; exec \"$0\" \"$@\"" > command err-file args))) > (process-put proc 'err-file err-file)) > - > (process-put proc 'sub-sentinel sentinel) > (process-put proc 'real-command (cons notmuch-command args)) > (set-process-sentinel proc #'notmuch-start-notmuch-sentinel) > diff --git a/emacs/notmuch-maildir-fcc.el b/emacs/notmuch-maildir-fcc.el > index 4b10a731..66f32fd4 100644 > --- a/emacs/notmuch-maildir-fcc.el > +++ b/emacs/notmuch-maildir-fcc.el > @@ -94,22 +94,18 @@ (defun notmuch-fcc-header-setup () > > Originally intended to be use a hook function, but now called directly > by notmuch-mua-mail." > - > (let ((subdir > (cond > ((or (not notmuch-fcc-dirs) > (message-field-value "Fcc")) > ;; Nothing set or an existing header. > nil) > - > ((stringp notmuch-fcc-dirs) > notmuch-fcc-dirs) > - > ((and (listp notmuch-fcc-dirs) > (stringp (car notmuch-fcc-dirs))) > ;; Old style - no longer works. > (error "Invalid `notmuch-fcc-dirs' setting (old style)")) > - > ((listp notmuch-fcc-dirs) > (let* ((from (message-field-value "From")) > (match > @@ -121,10 +117,8 @@ (defun notmuch-fcc-header-setup () > (cdr match) > (message "No Fcc header added.") > nil))) > - > (t > (error "Invalid `notmuch-fcc-dirs' setting (neither string nor > list)"))))) > - > (when subdir > (if notmuch-maildir-use-notmuch-insert > (notmuch-maildir-add-notmuch-insert-style-fcc-header subdir) > @@ -133,7 +127,6 @@ (defun notmuch-fcc-header-setup () > (defun notmuch-maildir-add-notmuch-insert-style-fcc-header (subdir) > ;; Notmuch insert does not accept absolute paths, so check the user > ;; really want this header inserted. > - > (when (or (not (= (elt subdir 0) ?/)) > (y-or-n-p > (format "Fcc header %s is an absolute path and notmuch insert is > requested. > diff --git a/emacs/notmuch-mua.el b/emacs/notmuch-mua.el > index 74dfb384..3bc06b4b 100644 > --- a/emacs/notmuch-mua.el > +++ b/emacs/notmuch-mua.el > @@ -228,22 +228,17 @@ (defun notmuch-mua-reply (query-string &optional sender > reply-all) > original) > (when process-crypto > (setq args (append args '("--decrypt=true")))) > - > (if reply-all > (setq args (append args '("--reply-to=all"))) > (setq args (append args '("--reply-to=sender")))) > (setq args (append args (list query-string))) > - > ;; Get the reply object as SEXP, and parse it into an elisp object. > (setq reply (apply #'notmuch-call-notmuch-sexp args)) > - > ;; Extract the original message to simplify the following code. > (setq original (plist-get reply :original)) > - > ;; Extract the headers of both the reply and the original message. > (let* ((original-headers (plist-get original :headers)) > (reply-headers (plist-get reply :reply-headers))) > - > ;; If sender is non-nil, set the From: header to its value. > (when sender > (plist-put reply-headers :From sender)) > @@ -251,7 +246,6 @@ (defun notmuch-mua-reply (query-string &optional sender > reply-all) > ;; Overlay the composition window on that being used to read > ;; the original message. > ((same-window-regexps '("\\*mail .*"))) > - > ;; We modify message-header-format-alist to get around > ;; a bug in message.el. See the comment above on > ;; notmuch-mua-insert-references. > @@ -268,13 +262,11 @@ (defun notmuch-mua-reply (query-string &optional sender > reply-all) > (notmuch-sanitize (plist-get reply-headers > :Subject)) > (notmuch-headers-plist-to-alist reply-headers) > nil (notmuch-mua-get-switch-function)))) > - > ;; Create a buffer-local queue for tag changes triggered when > ;; sending the reply. > (when notmuch-message-replied-tags > (setq-local notmuch-message-queued-tag-changes > (list (cons query-string notmuch-message-replied-tags)))) > - > ;; Insert the message body - but put it in front of the signature > ;; if one is present, and after any other content > ;; message*setup-hooks may have added to the message body already. > @@ -286,17 +278,14 @@ (defun notmuch-mua-reply (query-string &optional sender > reply-all) > (if message-signature-insert-empty-line > (forward-line -1)) > (goto-char (point-max)))) > - > (let ((from (plist-get original-headers :From)) > (date (plist-get original-headers :Date)) > (start (point))) > - > ;; notmuch-mua-cite-function constructs a citation line based > ;; on the From and Date headers of the original message, which > ;; are assumed to be in the buffer. > (insert "From: " from "\n") > (insert "Date: " date "\n\n") > - > (insert > (with-temp-buffer > (let > @@ -320,22 +309,18 @@ (defun notmuch-mua-reply (query-string &optional sender > reply-all) > ((symbol-function > 'notmuch-crypto-insert-encstatus-button) #'ignore)) > (notmuch-show-insert-body original (plist-get original :body) 0) > (buffer-substring-no-properties (point-min) (point-max)))))) > - > (set-mark (point)) > (goto-char start) > ;; Quote the original message according to the user's configured style. > (funcall notmuch-mua-cite-function))) > - > ;; Crypto processing based crypto content of the original message > (when process-crypto > (notmuch-mua-reply-crypto (plist-get original :body)))) > - > ;; Push mark right before signature, if any. > (message-goto-signature) > (unless (eobp) > (end-of-line -1)) > (push-mark) > - > (message-goto-body) > (set-buffer-modified-p nil)) > > @@ -381,18 +366,15 @@ (defun notmuch-mua-mail (&optional to subject > other-headers continue > return-action &rest ignored) > "Invoke the notmuch mail composition window." > (interactive) > - > (when notmuch-mua-user-agent-function > (let ((user-agent (funcall notmuch-mua-user-agent-function))) > (when (not (string= "" user-agent)) > (push (cons 'User-Agent user-agent) other-headers)))) > - > (unless (assq 'From other-headers) > (push (cons 'From (message-make-from > (notmuch-user-name) > (notmuch-user-primary-email))) > other-headers)) > - > (notmuch-mua-pop-to-buffer (message-buffer-name "mail" to) > (or switch-function > (notmuch-mua-get-switch-function))) > @@ -422,7 +404,6 @@ (defun notmuch-mua-mail (&optional to subject > other-headers continue > (message-hide-headers) > (set-buffer-modified-p nil) > (notmuch-mua-maybe-set-window-dedicated) > - > (message-goto-to)) > > (defcustom notmuch-identities nil > @@ -495,10 +476,8 @@ (defun notmuch-mua-new-forward-messages (messages > &optional prompt-for-sender) > ;; 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. > (notmuch-mua-mail nil "" other-headers nil > (notmuch-mua-get-switch-function)) > - > (save-excursion > ;; Insert all of the forwarded messages. > (mapc (lambda (id) > @@ -524,7 +503,6 @@ (defun notmuch-mua-new-forward-messages (messages > &optional prompt-for-sender) > ;; `message-forward-make-body' always puts the message at > ;; the top, so do them in reverse order. > (reverse messages)) > - > ;; Add in the appropriate subject. > (save-restriction > (message-narrow-to-headers) > @@ -533,7 +511,6 @@ (defun notmuch-mua-new-forward-messages (messages > &optional prompt-for-sender) > (message-remove-header "References") > (message-add-header (concat "References: " > (mapconcat 'identity forward-references " > ")))) > - > ;; Create a buffer-local queue for tag changes triggered when > ;; sending the message. > (when notmuch-message-forwarded-tags > @@ -541,7 +518,6 @@ (defun notmuch-mua-new-forward-messages (messages > &optional prompt-for-sender) > (cl-loop for id in forward-queries > collect > (cons id notmuch-message-forwarded-tags)))) > - > ;; `message-forward-make-body' shows the User-agent header. Hide > ;; it again. > (message-hide-headers) > @@ -553,7 +529,6 @@ (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 > @@ -565,7 +540,6 @@ (defun notmuch-mua-new-reply (query-string &optional > prompt-for-sender reply-all > ;; 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-parser.el b/emacs/notmuch-parser.el > index dc9fbe2f..06e7487b 100644 > --- a/emacs/notmuch-parser.el > +++ b/emacs/notmuch-parser.el > @@ -38,7 +38,6 @@ (defun notmuch-sexp-create-parser () > The parser always consumes input from point in the current > buffer. Hence, the caller is allowed to delete any data before > point and may resynchronize after an error by moving point." > - > (vector 'notmuch-sexp-parser > ;; List depth > 0 > @@ -60,7 +59,6 @@ (defun notmuch-sexp-read (sp) > list, this moves point just past the terminator and returns 'end. > Otherwise, this moves point to just past the end of the value and > returns the value." > - > (skip-chars-forward " \n\r\t") > (cond ((eobp) 'retry) > ((= (char-after) ?\)) > @@ -134,7 +132,6 @@ (defun notmuch-sexp-begin-list (sp) > returns t. Later calls to `notmuch-sexp-read' will return the > elements inside the list. If the input in buffer is not the > beginning of a list, throw invalid-read-syntax." > - > (skip-chars-forward " \n\r\t") > (cond ((eobp) 'retry) > ((= (char-after) ?\() > @@ -151,7 +148,6 @@ (defun notmuch-sexp-eof (sp) > > Moves point to the beginning of any trailing data or to the end > of the buffer if there is only trailing whitespace." > - > (skip-chars-forward " \n\r\t") > (unless (eobp) > (error "Trailing garbage following expression"))) > @@ -173,7 +169,6 @@ (defun notmuch-sexp-parse-partial-list (result-function > result-buffer) > be called whenever the input buffer has been extended with > additional data. The caller just needs to ensure it does not > move point in the input buffer." > - > ;; Set up the initial state > (unless (local-variable-p 'notmuch-sexp--parser) > (set (make-local-variable 'notmuch-sexp--parser) > diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el > index 26b41603..6e23a980 100644 > --- a/emacs/notmuch-show.el > +++ b/emacs/notmuch-show.el > @@ -320,7 +320,6 @@ (defun notmuch-show-with-message-as-text (fn) > > FN is called with one argument, the message properties. It should > operation on the contents of the current buffer." > - > ;; Remake the header to ensure that all information is available. > (let* ((to (notmuch-show-get-to)) > (cc (notmuch-show-get-cc)) > @@ -329,7 +328,6 @@ (defun notmuch-show-with-message-as-text (fn) > (date (notmuch-show-get-date)) > (tags (notmuch-show-get-tags)) > (depth (notmuch-show-get-depth)) > - > (header (concat > "Subject: " subject "\n" > "To: " to "\n" > @@ -375,7 +373,6 @@ (defun notmuch-show-fontify-header () > 'message-header-subject) > (t > 'message-header-other)))) > - > (overlay-put (make-overlay (point) (re-search-forward ":")) > 'face 'message-header-name) > (overlay-put (make-overlay (point) (re-search-forward ".*$")) > @@ -421,39 +418,30 @@ (defun notmuch-clean-address (address) > ((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) > - > + do (setq start-of-loop p-name)
These changes in spaces after `do` I don't understand... Otherwise looks good... Tomi > when (string-match "^\"\\(.*\\)\"$" p-name) > - do (setq p-name (match-string 1 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)) > - > + 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)))) > > @@ -517,7 +505,6 @@ (defun notmuch-show-insert-part-header (nth content-type > declared-type > (unless (string-equal declared-type content-type) > (concat " (as " content-type ")")) > comment))) > - > (setq button > (insert-button > (concat "[ " base-label " ]") > @@ -658,14 +645,12 @@ (defun notmuch-show-insert-part-multipart/alternative > (msg part content-type nth > (defun notmuch-show-insert-part-multipart/related (msg part content-type nth > depth button) > (let ((inner-parts (plist-get part :content)) > (start (point))) > - > ;; Render the primary part. FIXME: Support RFC 2387 Start header. > (notmuch-show-insert-bodypart msg (car inner-parts) depth) > ;; Add hidden buttons for the rest > (mapc (lambda (inner-part) > (notmuch-show-insert-bodypart msg inner-part depth t)) > (cdr inner-parts)) > - > (when notmuch-show-indent-multipart > (indent-rigidly start (point) 1))) > t) > @@ -673,18 +658,15 @@ (defun notmuch-show-insert-part-multipart/related (msg > part content-type nth dep > (defun notmuch-show-insert-part-multipart/signed (msg part content-type nth > depth button) > (when button > (button-put button 'face 'notmuch-crypto-part-header)) > - > ;; Insert a button detailing the signature status. > (notmuch-crypto-insert-sigstatus-button (car (plist-get part :sigstatus)) > (notmuch-show-get-header :From msg)) > - > (let ((inner-parts (plist-get part :content)) > (start (point))) > ;; Show all of the parts. > (mapc (lambda (inner-part) > (notmuch-show-insert-bodypart msg inner-part depth)) > inner-parts) > - > (when notmuch-show-indent-multipart > (indent-rigidly start (point) 1))) > t) > @@ -692,21 +674,17 @@ (defun notmuch-show-insert-part-multipart/signed (msg > part content-type nth dept > (defun notmuch-show-insert-part-multipart/encrypted (msg part content-type > nth depth button) > (when button > (button-put button 'face 'notmuch-crypto-part-header)) > - > ;; Insert a button detailing the encryption status. > (notmuch-crypto-insert-encstatus-button (car (plist-get part :encstatus))) > - > ;; Insert a button detailing the signature status. > (notmuch-crypto-insert-sigstatus-button (car (plist-get part :sigstatus)) > (notmuch-show-get-header :From msg)) > - > (let ((inner-parts (plist-get part :content)) > (start (point))) > ;; Show all of the parts. > (mapc (lambda (inner-part) > (notmuch-show-insert-bodypart msg inner-part depth)) > inner-parts) > - > (when notmuch-show-indent-multipart > (indent-rigidly start (point) 1))) > t) > @@ -721,7 +699,6 @@ (defun notmuch-show-insert-part-multipart/* (msg part > content-type nth depth but > (mapc (lambda (inner-part) > (notmuch-show-insert-bodypart msg inner-part depth)) > inner-parts) > - > (when notmuch-show-indent-multipart > (indent-rigidly start (point) 1))) > t) > @@ -730,19 +707,15 @@ (defun notmuch-show-insert-part-message/rfc822 (msg > part content-type nth depth > (let* ((message (car (plist-get part :content))) > (body (car (plist-get message :body))) > (start (point))) > - > ;; Override `notmuch-message-headers' to force `From' to be > ;; displayed. > (let ((notmuch-message-headers '("From" "Subject" "To" "Cc" "Date"))) > (notmuch-show-insert-headers (plist-get message :headers))) > - > ;; Blank line after headers to be compatible with the normal > ;; message display. > (insert "\n") > - > ;; Show the body > (notmuch-show-insert-bodypart msg body depth) > - > (when notmuch-show-indent-multipart > (indent-rigidly start (point) 1))) > t) > @@ -826,7 +799,6 @@ (defun notmuch-show-insert-part-text/html (msg part > content-type nth depth butto > ;; It's easier to drive shr ourselves than to work around the > ;; goofy things `mm-shr' does (like irreversibly taking over > ;; content ID handling). > - > ;; FIXME: If we block an image, offer a button to load external > ;; images. > (let ((shr-blocked-images notmuch-show-text/html-blocked-images)) > @@ -902,7 +874,6 @@ (defun notmuch-show-insert-bodypart-internal (msg part > content-type nth depth bu > > (defun notmuch-show-create-part-overlays (button beg end) > "Add an overlay to the part between BEG and END." > - > ;; If there is no button (i.e., the part is text/plain and the first > ;; part) or if the part has no content then we don't make the part > ;; toggleable. > @@ -913,7 +884,6 @@ (defun notmuch-show-create-part-overlays (button beg end) > > (defun notmuch-show-record-part-information (part beg end) > "Store PART as a text property from BEG to END." > - > ;; Record part information. Since we already inserted subparts, > ;; don't override existing :notmuch-part properties. > (notmuch-map-text-property beg end :notmuch-part > @@ -1011,7 +981,6 @@ (defun notmuch-show-insert-bodypart (msg part depth > &optional hide) > HIDE determines whether to show or hide the part and the button > as follows: If HIDE is nil, show the part and the button. If HIDE > is t, hide the part initially and show the button." > - > (let* ((content-type (downcase (plist-get part :content-type))) > (mime-type (notmuch-show-mime-type part)) > (nth (plist-get part :id)) > @@ -1030,16 +999,13 @@ (defun notmuch-show-insert-bodypart (msg part depth > &optional hide) > (show-part (not (or (equal hide t) > (and long button)))) > (content-beg (point))) > - > ;; 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) > (when button > (button-put button :notmuch-lazy-part > (list msg part mime-type nth depth button)))) > - > ;; Some of the body part handlers leave point somewhere up in the > ;; part, so we make sure that we're down at the end. > (goto-char (point-max)) > @@ -1056,12 +1022,10 @@ (defun notmuch-show-insert-bodypart (msg part depth > &optional hide) > > (defun notmuch-show-insert-body (msg body depth) > "Insert the body BODY at depth DEPTH in the current thread." > - > ;; Register all content IDs for this message. According to RFC > ;; 2392, content IDs are *global*, but it's okay if an MUA treats > ;; them as only global within a message. > (notmuch-show--register-cids msg (car body)) > - > (mapc (lambda (part) (notmuch-show-insert-bodypart msg part depth)) body)) > > (defun notmuch-show-make-symbol (type) > @@ -1082,18 +1046,14 @@ (defun notmuch-show-insert-msg (msg depth) > content-start content-end > headers-start headers-end > (bare-subject (notmuch-show-strip-re (plist-get headers :Subject)))) > - > (setq message-start (point-marker)) > - > (notmuch-show-insert-headerline headers > (or (if notmuch-show-relative-dates > (plist-get msg :date_relative) > nil) > (plist-get headers :Date)) > (plist-get msg :tags) depth) > - > (setq content-start (point-marker)) > - > ;; Set `headers-start' to point after the 'Subject:' header to be > ;; compatible with the existing implementation. This just sets it > ;; to after the first header. > @@ -1108,9 +1068,7 @@ (defun notmuch-show-insert-msg (msg depth) > (forward-line 1)) > (setq headers-start (point-marker))) > (setq headers-end (point-marker)) > - > (setq notmuch-show-previous-subject bare-subject) > - > ;; A blank line between the headers and the body. > (insert "\n") > (notmuch-show-insert-body msg (plist-get msg :body) > @@ -1119,36 +1077,28 @@ (defun notmuch-show-insert-msg (msg depth) > (unless (bolp) > (insert "\n")) > (setq content-end (point-marker)) > - > ;; Indent according to the depth in the thread. > (if notmuch-show-indent-content > (indent-rigidly content-start > content-end > (* notmuch-show-indent-messages-width depth))) > - > (setq message-end (point-max-marker)) > - > ;; Save the extents of this message over the whole text of the > ;; message. > (put-text-property message-start message-end > :notmuch-message-extent > (cons message-start message-end)) > - > ;; Create overlays used to control visibility > (plist-put msg :headers-overlay (make-overlay headers-start headers-end)) > (plist-put msg :message-overlay (make-overlay headers-start content-end)) > - > (plist-put msg :depth depth) > - > ;; Save the properties for this message. Currently this saves the > ;; entire message (augmented it with other stuff), which seems > ;; like overkill. We might save a reduced subset (for example, not > ;; the content). > (notmuch-show-set-message-properties msg) > - > ;; Set header visibility. > (notmuch-show-headers-visible msg notmuch-message-headers-visible) > - > ;; Message visibility depends on whether it matched the search > ;; criteria. > (notmuch-show-message-visible msg (and (plist-get msg :match) > @@ -1296,9 +1246,7 @@ (defun notmuch-show (thread-id &optional elide-toggle > parent-buffer query-contex > (switch-to-buffer (get-buffer-create buffer-name)) > ;; No need to track undo information for this buffer. > (setq buffer-undo-list t) > - > (notmuch-show-mode) > - > ;; Set various buffer local variables to their appropriate initial > ;; state. Do this after enabling `notmuch-show-mode' so that they > ;; aren't wiped out. > @@ -1307,24 +1255,19 @@ (defun notmuch-show (thread-id &optional elide-toggle > parent-buffer query-contex > notmuch-show-query-context (if (or (string= query-context "") > (string= query-context "*")) > nil query-context) > - > notmuch-show-process-crypto notmuch-crypto-process-mime > ;; If `elide-toggle', invert the default value. > notmuch-show-elide-non-matching-messages > (if elide-toggle > (not notmuch-show-only-matching-messages) > notmuch-show-only-matching-messages)) > - > (add-hook 'post-command-hook #'notmuch-show-command-hook nil t) > (jit-lock-register #'notmuch-show-buttonise-links) > - > (notmuch-tag-clear-cache) > - > (let ((inhibit-read-only t)) > (if (notmuch-show--build-buffer) > ;; Messages were inserted into the buffer. > (current-buffer) > - > ;; No messages were inserted - presumably none matched the > ;; query. > (kill-buffer (current-buffer)) > @@ -1367,26 +1310,21 @@ (defun notmuch-show--build-buffer (&optional state) > (setq queries (cdr queries))) > (when forest > (notmuch-show-insert-forest forest) > - > ;; Store the original tags for each message so that we can > ;; display changes. > (notmuch-show-mapc > (lambda () (notmuch-show-set-prop :orig-tags > (notmuch-show-get-tags)))) > - > ;; Set the header line to the subject of the first message. > (setq header-line-format > (replace-regexp-in-string "%" "%%" > (notmuch-sanitize > (notmuch-show-strip-re > (notmuch-show-get-subject))))) > - > (run-hooks 'notmuch-show-hook) > - > (if state > (notmuch-show-apply-state state) > ;; With no state to apply, just go to the first message. > (notmuch-show-goto-first-wanted-message))) > - > ;; Report back to the caller whether any messages matched. > forest)) > > @@ -1431,14 +1369,12 @@ (defun notmuch-show-apply-state (state) > - moving to the correct current message in every displayed window." > (let ((win-msg-alist (car state)) > (open (cadr state))) > - > ;; Open those that were open. > (goto-char (point-min)) > (cl-loop do (notmuch-show-message-visible > (notmuch-show-get-message-properties) > (member (notmuch-show-get-message-id) open)) > until (not (notmuch-show-goto-message-next))) > - > (dolist (win-msg-pair win-msg-alist) > (with-selected-window (car win-msg-pair) > ;; Go to the previously open message in this window > @@ -1460,7 +1396,6 @@ (defun notmuch-show-refresh-view (&optional reset-state) > ;; manually. > (remove-overlays) > (erase-buffer) > - > (unless (notmuch-show--build-buffer state) > ;; No messages were inserted. > (kill-buffer (current-buffer)) > @@ -1881,16 +1816,13 @@ (defun notmuch-show-advance () > (> visible-end-of-this-message (window-end))) > ;; The bottom of this message is not visible - scroll. > (scroll-up nil)) > - > ((not (= end-of-this-message (point-max))) > ;; This is not the last message - move to the next visible one. > (notmuch-show-next-open-message)) > - > ((not (= (point) (point-max))) > ;; This is the last message, but the cursor is not at the end of > ;; the buffer. Move it there. > (goto-char (point-max))) > - > (t > ;; This is the last message - change the return value > (setq ret t))) > @@ -2527,7 +2459,6 @@ (defun notmuch-show-pipe-part () > (interactive) > (notmuch-show-apply-to-current-part-handle #'mm-pipe-part)) > > - > (defun notmuch-show--mm-display-part (handle) > "Use mm-display-part to display HANDLE in a new buffer. > > diff --git a/emacs/notmuch-tag.el b/emacs/notmuch-tag.el > index 34cd493a..85c80f54 100644 > --- a/emacs/notmuch-tag.el > +++ b/emacs/notmuch-tag.el > @@ -331,7 +331,6 @@ (defun notmuch-tag-format-tag (tags orig-tags tag) > (otherwise nil)))) > (setq formatted-tag (notmuch-tag--do-format tag tag base)) > (setq formatted-tag (notmuch-tag--do-format tag formatted-tag over)) > - > (puthash (cons tag tag-state) formatted-tag notmuch-tag--format-cache))) > formatted-tag)) > > @@ -356,7 +355,6 @@ (defcustom notmuch-before-tag-hook nil > a list of strings of the form \"+TAG\" or \"-TAG\". > 'query' will be a string containing the search query that determines > the messages that are about to be tagged." > - > :type 'hook > :options '(notmuch-hl-line-mode) > :group 'notmuch-hooks) > @@ -406,7 +404,6 @@ (defun notmuch-read-tag-changes (current-tags &optional > prompt initial-input) > non-nil, is the query string to present in the minibuffer. It > defaults to \"Tags\". INITIAL-INPUT, if non-nil, will be the > initial input in the minibuffer." > - > (let* ((all-tag-list (notmuch-tag-completions)) > (add-tag-list (mapcar (apply-partially 'concat "+") all-tag-list)) > (remove-tag-list (mapcar (apply-partially 'concat "-") current-tags)) > diff --git a/emacs/notmuch-tree.el b/emacs/notmuch-tree.el > index fcfb972d..d90f2aa0 100644 > --- a/emacs/notmuch-tree.el > +++ b/emacs/notmuch-tree.el > @@ -891,7 +891,6 @@ (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)) > @@ -907,7 +906,6 @@ (defun notmuch-tree-insert-tree (tree depth tree-status > 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)) > @@ -915,11 +913,9 @@ (defun notmuch-tree-insert-tree (tree depth tree-status > first last) > (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) > @@ -958,7 +954,6 @@ (define-derived-mode notmuch-tree-mode fundamental-mode > "notmuch-tree" > Complete list of currently available key bindings: > > \\{notmuch-tree-mode-map}" > - > (setq notmuch-buffer-refresh-function #'notmuch-tree-refresh-view) > (hl-line-mode 1) > (setq buffer-read-only t > @@ -1022,7 +1017,6 @@ (defun notmuch-tree-worker (basic-query &optional > query-context target open-targ > ;; (such as reply) do. It is a buffer local variable so setting it > ;; will not affect genuine show buffers. > (setq notmuch-show-process-crypto notmuch-crypto-process-mime) > - > (erase-buffer) > (goto-char (point-min)) > (let* ((search-args (concat basic-query > @@ -1079,13 +1073,10 @@ (defun notmuch-tree (&optional query query-context > target buffer-name open-targe > (if unthreaded "unthreaded-" > "tree-") > query "*"))))) > (inhibit-read-only t)) > - > (switch-to-buffer buffer)) > ;; Don't track undo information for this buffer > (set 'buffer-undo-list t) > - > (notmuch-tree-worker query query-context target open-target unthreaded) > - > (setq truncate-lines t)) > > (defun notmuch-unthreaded (&optional query query-context target buffer-name > open-target) > diff --git a/emacs/notmuch-wash.el b/emacs/notmuch-wash.el > index 3a9ffdd0..c3b24cb9 100644 > --- a/emacs/notmuch-wash.el > +++ b/emacs/notmuch-wash.el > @@ -203,12 +203,10 @@ (defun notmuch-wash-region-to-button (msg beg end type > &optional prefix) > \"citation\" or \"signature\". Optional PREFIX is some arbitrary > text to insert before the button, probably for indentation. Note > that PREFIX should not include a newline." > - > ;; This uses some slightly tricky conversions between strings and > ;; symbols because of the way the button code works. Note that > ;; replacing intern-soft with make-symbol will cause this to fail, > ;; since the newly created symbol has no plist. > - > (let ((overlay (make-overlay beg end)) > (button-type (intern-soft (concat "notmuch-wash-button-" > type "-toggle-type")))) > @@ -276,25 +274,20 @@ (defun notmuch-wash-excerpt-citations (msg depth) > > (defun notmuch-wash-elide-blank-lines (msg depth) > "Elide leading, trailing and successive blank lines." > - > ;; Algorithm derived from `article-strip-multiple-blank-lines' in > ;; `gnus-art.el'. > - > ;; Make all blank lines empty. > (goto-char (point-min)) > (while (re-search-forward "^[[:space:]\t]+$" nil t) > (replace-match "" nil t)) > - > ;; Replace multiple empty lines with a single empty line. > (goto-char (point-min)) > (while (re-search-forward "^\n\\(\n+\\)" nil t) > (delete-region (match-beginning 1) (match-end 1))) > - > ;; Remove a leading blank line. > (goto-char (point-min)) > (if (looking-at "\n") > (delete-region (match-beginning 0) (match-end 0))) > - > ;; Remove a trailing blank line. > (goto-char (point-max)) > (if (looking-at "\n") > @@ -313,20 +306,15 @@ (defun notmuch-wash-tidy-citations (msg depth) > text, > - Remove citation trailers standing alone after a block of cited > text." > - > ;; Remove lines of repeated citation leaders with no other content. > (goto-char (point-min)) > (while (re-search-forward "\\(^>[> ]*\n\\)\\{2,\\}" nil t) > (replace-match "\\1")) > - > - ;; Remove citation leaders standing alone before a block of cited > - ;; text. > + ;; Remove citation leaders standing alone before a block of cited text. > (goto-char (point-min)) > (while (re-search-forward "\\(\n\\|^[^>].*\\)\n\\(^>[> ]*\n\\)" nil t) > (replace-match "\\1\n")) > - > - ;; Remove citation trailers standing alone after a block of cited > - ;; text. > + ;; Remove citation trailers standing alone after a block of cited text. > (goto-char (point-min)) > (while (re-search-forward "\\(^>[> ]*\n\\)\\(^$\\|^[^>].*\\)" nil t) > (replace-match "\\2"))) > @@ -341,7 +329,6 @@ (defun notmuch-wash-wrap-long-lines (msg depth) > its value. Otherwise, this function will wrap long lines in the > message at the window width. When doing so, citation leaders in > the wrapped text are maintained." > - > (let* ((coolj-wrap-follows-window-size nil) > (indent (* depth notmuch-show-indent-messages-width)) > (limit (if (numberp notmuch-wash-wrap-lines-length) > @@ -405,7 +392,6 @@ (defun notmuch-wash-convert-inline-patch-to-part (msg > depth) > Given that this function guesses whether a buffer includes a > patch and then guesses the extent of the patch, there is scope > for error." > - > (goto-char (point-min)) > (when (re-search-forward diff-file-header-re nil t) > (beginning-of-line -1) > diff --git a/emacs/notmuch.el b/emacs/notmuch.el > index 07a58da7..04334c76 100644 > --- a/emacs/notmuch.el > +++ b/emacs/notmuch.el > @@ -755,7 +755,6 @@ (defun notmuch-search-insert-authors (format-string > authors) > (visible-string formatted-authors) > (invisible-string "") > (padding "")) > - > ;; Truncate the author string to fit the specification. > (if (> (length formatted-authors) > (length formatted-sample)) > @@ -782,7 +781,6 @@ (defun notmuch-search-insert-authors (format-string > authors) > (length visible-string) > (length "...")) > ? )))) > - > ;; Use different faces to show matching and non-matching authors. > (if (string-match "\\(.*\\)|\\(.*\\)" visible-string) > ;; The visible string contains both matching and > @@ -798,14 +796,12 @@ (defun notmuch-search-insert-authors (format-string > authors) > ;; The invisible string may contain both matching and > ;; non-matching authors. > invisible-string (notmuch-search-author-propertize > invisible-string))) > - > ;; If there is any invisible text, add it as a tooltip to the > ;; visible text. > (when (not (string= invisible-string "")) > (setq visible-string > (propertize visible-string > 'help-echo (concat "..." invisible-string)))) > - > ;; Insert the visible and, if present, invisible author strings. > (insert visible-string) > (when (not (string= invisible-string "")) > @@ -831,11 +827,9 @@ (defun notmuch-search-insert-field (field format-string > result) > (insert (propertize (format format-string > (notmuch-sanitize (plist-get result :subject))) > 'face 'notmuch-search-subject))) > - > ((string-equal field "authors") > (notmuch-search-insert-authors > format-string (notmuch-sanitize (plist-get result :authors)))) > - > ((string-equal field "tags") > (let ((tags (plist-get result :tags)) > (orig-tags (plist-get result :orig-tags))) > @@ -1118,7 +1112,6 @@ (defun notmuch-cycle-notmuch-buffers () > If the current buffer is the only notmuch buffer, bury it. If no > notmuch buffers exist, run `notmuch'." > (interactive) > - > (let (start first) > ;; If the current buffer is a notmuch buffer, remember it and then > ;; bury it. > -- > 2.26.0 _______________________________________________ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-le...@notmuchmail.org