From: Jonas Bernoulli <jonas@bernoul.li>
To: notmuch@notmuchmail.org
Subject: [PATCH 27/27] emacs: various cosmetic improvements
Date: Sun, 8 Nov 2020 20:03:11 +0100 [thread overview]
Message-ID: <20201108190311.1397-28-jonas@bernoul.li> (raw)
In-Reply-To: <20201108190311.1397-1-jonas@bernoul.li>
---
emacs/notmuch-address.el | 31 ++++++--------
emacs/notmuch-hello.el | 28 +++++--------
emacs/notmuch-lib.el | 38 +++++++++--------
emacs/notmuch-mua.el | 10 ++---
emacs/notmuch-tag.el | 2 +-
emacs/notmuch.el | 88 ++++++++++++++++++++--------------------
6 files changed, 91 insertions(+), 106 deletions(-)
diff --git a/emacs/notmuch-address.el b/emacs/notmuch-address.el
index 21d1d82f..0dedd5d5 100644
--- a/emacs/notmuch-address.el
+++ b/emacs/notmuch-address.el
@@ -21,6 +21,8 @@
;;; Code:
+(eval-when-compile (require 'cl-lib))
+
(require 'message)
(require 'notmuch-parser)
(require 'notmuch-lib)
@@ -154,15 +156,12 @@ (defcustom notmuch-address-use-company t
:group 'notmuch-address)
(defun notmuch-address-setup ()
- (let* ((setup-company (and notmuch-address-use-company
- (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)))))
+ (when (and notmuch-address-use-company
+ (require 'company nil t))
+ (notmuch-company-setup))
+ (cl-pushnew (cons notmuch-address-completion-headers-regexp
+ #'notmuch-address-expand-name)
+ message-completion-alist :test #'equal))
(defun notmuch-address-toggle-internal-completion ()
"Toggle use of internal completion for current buffer.
@@ -251,11 +250,8 @@ (defun notmuch-address-expand-name ()
(t nil)))
(defun notmuch-address-harvest-addr (result)
- (let ((name-addr (plist-get result :name-addr)))
- (puthash name-addr t notmuch-address-completions)))
-
-(defun notmuch-address-harvest-handle-result (obj)
- (notmuch-address-harvest-addr obj))
+ (puthash (plist-get result :name-addr)
+ t notmuch-address-completions))
(defun notmuch-address-harvest-filter (proc string)
(when (buffer-live-p (process-buffer proc))
@@ -264,7 +260,7 @@ (defun notmuch-address-harvest-filter (proc string)
(goto-char (point-max))
(insert string))
(notmuch-sexp-parse-partial-list
- 'notmuch-address-harvest-handle-result (process-buffer proc)))))
+ 'notmuch-address-harvest-addr (process-buffer proc)))))
(defvar notmuch-address-harvest-procs '(nil . nil)
"The currently running harvests.
@@ -375,7 +371,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
@@ -398,8 +394,7 @@ (defun notmuch-address-harvest-trigger ()
nil nil
(lambda (proc event)
;; If harvest fails, we want to try
- ;; again when the trigger is next
- ;; called
+ ;; again when the trigger is next called.
(if (string= event "finished\n")
(progn
(notmuch-address--save-address-hash)
diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el
index fa31694f..80af7544 100644
--- a/emacs/notmuch-hello.el
+++ b/emacs/notmuch-hello.el
@@ -402,8 +402,7 @@ (defun notmuch-hello-add-saved-search (widget)
;; If an existing saved search with this name exists, remove it.
(setq notmuch-saved-searches
(cl-loop for elem in notmuch-saved-searches
- if (not (equal name
- (notmuch-saved-search-get elem :name)))
+ unless (equal name (notmuch-saved-search-get elem :name))
collect elem))
;; Add the new one.
(customize-save-variable 'notmuch-saved-searches
@@ -446,18 +445,14 @@ (defun notmuch-hello-reflect (list ncols)
append (notmuch-hello-reflect-generate-row ncols nrows row list))))
(defun notmuch-hello-widget-search (widget &rest ignore)
- (cond
- ((eq (widget-get widget :notmuch-search-type) 'tree)
- (notmuch-tree (widget-get widget
- :notmuch-search-terms)))
- ((eq (widget-get widget :notmuch-search-type) 'unthreaded)
- (notmuch-unthreaded (widget-get widget
- :notmuch-search-terms)))
+ (cl-case (widget-get widget :notmuch-search-type)
+ (tree
+ (notmuch-tree (widget-get widget :notmuch-search-terms)))
+ (unthreaded
+ (notmuch-unthreaded (widget-get widget :notmuch-search-terms)))
(t
- (notmuch-search (widget-get widget
- :notmuch-search-terms)
- (widget-get widget
- :notmuch-search-oldest-first)))))
+ (notmuch-search (widget-get widget :notmuch-search-terms)
+ (widget-get widget :notmuch-search-oldest-first)))))
(defun notmuch-saved-search-count (search)
(car (process-lines notmuch-command "count" search)))
@@ -689,9 +684,7 @@ (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))
(defun notmuch-hello-generate-tag-alist (&optional hide-tags)
"Return an alist from tags to queries to display in the all-tags section."
@@ -775,8 +768,7 @@ (defun notmuch-hello-insert-search ()
;; instead of a space to make `show-trailing-whitespace'
;; happy, i.e. avoid it marking the whole line as trailing
;; spaces.
- (widget-insert ".")
- (put-text-property (1- (point)) (point) 'invisible t)
+ (widget-insert (propertize "." 'invisible t))
(widget-insert "\n"))
(defun notmuch-hello-insert-recent-searches ()
diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el
index e23999ad..aa48b949 100644
--- a/emacs/notmuch-lib.el
+++ b/emacs/notmuch-lib.el
@@ -186,8 +186,8 @@ (defun notmuch-command-to-string (&rest args)
Otherwise the output will be returned."
(with-temp-buffer
- (let* ((status (apply #'call-process notmuch-command nil t nil args))
- (output (buffer-string)))
+ (let ((status (apply #'call-process notmuch-command nil t nil args))
+ (output (buffer-string)))
(notmuch-check-exit-status status (cons notmuch-command args) output)
output)))
@@ -239,8 +239,9 @@ (defun notmuch-config-get (item)
(let* ((val (notmuch-command-to-string "config" "get" item))
(len (length val)))
;; Trim off the trailing newline (if the value is empty or not
- ;; configured, there will be no newline)
- (if (and (> len 0) (= (aref val (- len 1)) ?\n))
+ ;; configured, there will be no newline).
+ (if (and (> len 0)
+ (= (aref val (- len 1)) ?\n))
(substring val 0 -1)
val)))
@@ -403,9 +404,9 @@ (defun notmuch-help ()
its prefixed behavior by setting the 'notmuch-prefix-doc property
of its command symbol."
(interactive)
- (let* ((mode major-mode)
- (doc (substitute-command-keys
- (notmuch-substitute-command-keys (documentation mode t)))))
+ (let ((doc (substitute-command-keys
+ (notmuch-substitute-command-keys
+ (documentation major-mode t)))))
(with-current-buffer (generate-new-buffer "*notmuch-help*")
(insert doc)
(goto-char (point-min))
@@ -467,8 +468,8 @@ (defun notmuch-refresh-all-buffers ()
(notmuch-refresh-this-buffer))))))
(defun notmuch-prettify-subject (subject)
- ;; This function is used by `notmuch-search-process-filter' which
- ;; requires that we not disrupt its' matching state.
+ ;; This function is used by `notmuch-search-process-filter',
+ ;; which requires that we not disrupt its matching state.
(save-match-data
(if (and subject
(string-match "^[ \t]*$" subject))
@@ -525,13 +526,12 @@ (defun notmuch-common-do-stash (text)
;;
(defun notmuch-plist-delete (plist property)
- (let* ((xplist (cons nil plist))
- (pred xplist))
- (while (cdr pred)
- (when (eq (cadr pred) property)
- (setcdr pred (cdddr pred)))
- (setq pred (cddr pred)))
- (cdr xplist)))
+ (let (p)
+ (while plist
+ (unless (eq property (car plist))
+ (setq p (plist-put p (car plist) (cadr plist))))
+ (setq plist (cddr plist)))
+ p))
(defun notmuch-match-content-type (t1 t2)
"Return t if t1 and t2 are matching content types, taking wildcards into account."
@@ -540,8 +540,10 @@ (defun notmuch-match-content-type (t1 t2)
(if (or (string= (cadr st1) "*")
(string= (cadr st2) "*"))
;; Comparison of content types should be case insensitive.
- (string= (downcase (car st1)) (downcase (car st2)))
- (string= (downcase t1) (downcase t2)))))
+ (string= (downcase (car st1))
+ (downcase (car st2)))
+ (string= (downcase t1)
+ (downcase t2)))))
(defvar notmuch-multipart/alternative-discouraged
'(;; Avoid HTML parts.
diff --git a/emacs/notmuch-mua.el b/emacs/notmuch-mua.el
index f9843546..8501e294 100644
--- a/emacs/notmuch-mua.el
+++ b/emacs/notmuch-mua.el
@@ -347,12 +347,10 @@ (defun notmuch-mua-pop-to-buffer (name switch-function)
(select-window window))
(funcall switch-function buffer)
(set-buffer buffer))
- (when (and (buffer-modified-p)
- (not (prog1
- (y-or-n-p
- "Message already being composed; erase? ")
- (message nil))))
- (error "Message being composed")))
+ (when (buffer-modified-p)
+ (if (y-or-n-p "Message already being composed; erase? ")
+ (message nil)
+ (error "Message being composed"))))
(funcall switch-function name)
(set-buffer name))
(erase-buffer)
diff --git a/emacs/notmuch-tag.el b/emacs/notmuch-tag.el
index 925de78c..75e864a4 100644
--- a/emacs/notmuch-tag.el
+++ b/emacs/notmuch-tag.el
@@ -472,7 +472,7 @@ (defun notmuch-tag (query tag-changes)
tag-changes)
(unless query
(error "Nothing to tag!"))
- (unless (null tag-changes)
+ (when tag-changes
(run-hooks 'notmuch-before-tag-hook)
(if (<= (length query) notmuch-tag-argument-limit)
(apply 'notmuch-call-notmuch-process "tag"
diff --git a/emacs/notmuch.el b/emacs/notmuch.el
index b221be05..8157bbf4 100644
--- a/emacs/notmuch.el
+++ b/emacs/notmuch.el
@@ -169,7 +169,7 @@ (defvar notmuch-search-mode-map
(let ((map (make-sparse-keymap)))
(set-keymap-parent map notmuch-common-keymap)
(define-key map "x" 'notmuch-bury-or-kill-this-buffer)
- (define-key map (kbd "<DEL>") 'notmuch-search-scroll-down)
+ (define-key map (kbd "DEL") 'notmuch-search-scroll-down)
(define-key map "b" 'notmuch-search-scroll-down)
(define-key map " " 'notmuch-search-scroll-up)
(define-key map "<" 'notmuch-search-first-thread)
@@ -923,40 +923,39 @@ (defun notmuch-read-query (prompt)
"Read a notmuch-query from the minibuffer with completion.
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" "*")))
- (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)))))
- (let ((keymap (copy-keymap minibuffer-local-map))
- (current-query (cl-case major-mode
- (notmuch-search-mode (notmuch-search-get-query))
- (notmuch-show-mode (notmuch-show-get-query))
- (notmuch-tree-mode (notmuch-tree-get-query))))
- (minibuffer-completion-table
- (completion-table-dynamic
- (lambda (string)
- ;; generate a list of possible completions for the current input
- (cond
- ;; this ugly regexp is used to get the last word of the input
- ;; possibly preceded by a '('
- ((string-match "\\(^\\|.* (?\\)\\([^ ]*\\)$" string)
- (mapcar (lambda (compl)
- (concat (match-string-no-properties 1 string) compl))
- (all-completions (match-string-no-properties 2 string)
- completions)))
- (t (list string)))))))
- ;; this was simpler than convincing completing-read to accept spaces:
- (define-key keymap (kbd "TAB") 'minibuffer-complete)
- (let ((history-delete-duplicates t))
- (read-from-minibuffer prompt nil keymap nil
- 'notmuch-search-history current-query nil)))))
+ (let* ((all-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))))
+ (keymap (copy-keymap minibuffer-local-map))
+ (current-query (cl-case major-mode
+ (notmuch-search-mode (notmuch-search-get-query))
+ (notmuch-show-mode (notmuch-show-get-query))
+ (notmuch-tree-mode (notmuch-tree-get-query))))
+ (minibuffer-completion-table
+ (completion-table-dynamic
+ (lambda (string)
+ ;; generate a list of possible completions for the current input
+ (cond
+ ;; this ugly regexp is used to get the last word of the input
+ ;; possibly preceded by a '('
+ ((string-match "\\(^\\|.* (?\\)\\([^ ]*\\)$" string)
+ (mapcar (lambda (compl)
+ (concat (match-string-no-properties 1 string) compl))
+ (all-completions (match-string-no-properties 2 string)
+ completions)))
+ (t (list string)))))))
+ ;; This was simpler than convincing completing-read to accept spaces:
+ (define-key keymap (kbd "TAB") 'minibuffer-complete)
+ (let ((history-delete-duplicates t))
+ (read-from-minibuffer prompt nil keymap nil
+ 'notmuch-search-history current-query nil))))
(defun notmuch-search-get-query ()
"Return the current query in this search buffer."
@@ -1006,10 +1005,9 @@ (defun notmuch-search (&optional query oldest-first target-thread target-line no
(setq notmuch-search-target-thread target-thread)
(setq notmuch-search-target-line target-line)
(notmuch-tag-clear-cache)
- (let ((proc (get-buffer-process (current-buffer)))
- (inhibit-read-only t))
- (when proc
- (error "notmuch search process already running for query `%s'" query))
+ (when (get-buffer-process buffer)
+ (error "notmuch search process already running for query `%s'" query))
+ (let ((inhibit-read-only t))
(erase-buffer)
(goto-char (point-min))
(save-excursion
@@ -1019,12 +1017,12 @@ (defun notmuch-search (&optional query oldest-first target-thread target-line no
(if oldest-first
"--sort=oldest-first"
"--sort=newest-first")
- query))
- ;; Use a scratch buffer to accumulate partial output.
- ;; This buffer will be killed by the sentinel, which
- ;; should be called no matter how the process dies.
- (parse-buf (generate-new-buffer " *notmuch search parse*")))
- (process-put proc 'parse-buf parse-buf)
+ query)))
+ ;; Use a scratch buffer to accumulate partial output.
+ ;; This buffer will be killed by the sentinel, which
+ ;; should be called no matter how the process dies.
+ (process-put proc 'parse-buf
+ (generate-new-buffer " *notmuch search parse*"))
(set-process-filter proc 'notmuch-search-process-filter)
(set-process-query-on-exit-flag proc nil))))
(run-hooks 'notmuch-search-hook)))
--
2.29.1
next prev parent reply other threads:[~2020-11-08 19:05 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-08 19:02 [PATCH 00/27] Another set up Emacs cleanup Jonas Bernoulli
2020-11-08 19:02 ` [PATCH 01/27] emacs: silence byte-compiler Jonas Bernoulli
2020-11-09 1:09 ` William Casarin
2020-11-11 14:32 ` Jonas Bernoulli
2020-11-11 20:12 ` William Casarin
2020-11-08 19:02 ` [PATCH 02/27] emacs: define notmuch-message-mode-map explicitly Jonas Bernoulli
2020-11-11 20:22 ` William Casarin
2020-11-08 19:02 ` [PATCH 03/27] emacs: add doc-string to notmuch-tree-mode-map Jonas Bernoulli
2020-11-08 19:02 ` [PATCH 04/27] emacs: don't fset keymaps Jonas Bernoulli
2020-11-11 21:08 ` William Casarin
2020-11-12 0:26 ` David Bremner
2020-11-08 19:02 ` [PATCH 05/27] emacs: remove redundant notmuch-hello-trim Jonas Bernoulli
2020-11-08 19:02 ` [PATCH 06/27] emacs: fix old bug in notmuch-mua-mail Jonas Bernoulli
2020-11-15 20:39 ` David Edmondson
2020-11-08 19:02 ` [PATCH 07/27] emacs: remove kludge for Emacs 23 from notmuch-mua-mail Jonas Bernoulli
2020-11-08 19:02 ` [PATCH 08/27] emacs: more cleanup since dropping support for Emacs 24 Jonas Bernoulli
2020-11-08 19:02 ` [PATCH 09/27] emacs: sanitize function that displays version Jonas Bernoulli
2020-11-08 19:02 ` [PATCH 10/27] emacs: define notmuch-hello-url as a constant Jonas Bernoulli
2020-11-08 19:02 ` [PATCH 11/27] emacs: shorten/replace first sentence of a few doc-strings Jonas Bernoulli
2020-11-08 19:02 ` [PATCH 12/27] emacs: place only first sentence on first doc-string line Jonas Bernoulli
2020-11-08 19:02 ` [PATCH 13/27] emacs: place complete " Jonas Bernoulli
2020-11-15 20:45 ` David Edmondson
2020-11-16 20:54 ` Jonas Bernoulli
2020-11-08 19:02 ` [PATCH 14/27] emacs: always use elisp quoting style in doc-strings Jonas Bernoulli
2020-11-08 19:02 ` [PATCH 15/27] emacs: misc doc-string improvements Jonas Bernoulli
2020-11-15 20:48 ` David Edmondson
2020-11-08 19:03 ` [PATCH 16/27] emacs: remove deprecated notmuch-folder command Jonas Bernoulli
2020-11-08 19:03 ` [PATCH 17/27] emacs: remove unnecessary notmuch-remove-if-not Jonas Bernoulli
2020-11-08 19:03 ` [PATCH 18/27] emacs: remove unused notmuch-address-locate-command Jonas Bernoulli
2020-11-08 19:03 ` [PATCH 19/27] emacs: remove unnecessary notmuch-tree-button-activate Jonas Bernoulli
2020-11-08 19:03 ` [PATCH 20/27] emacs: inline notmuch-documentation-first-line Jonas Bernoulli
2020-11-08 19:03 ` [PATCH 21/27] emacs: inline notmuch-split-content-type Jonas Bernoulli
2020-11-08 19:03 ` [PATCH 22/27] emacs: use defvar-local Jonas Bernoulli
2020-11-08 19:03 ` [PATCH 23/27] emacs: use setq-local Jonas Bernoulli
2020-11-08 19:03 ` [PATCH 24/27] emacs: use setq instead set Jonas Bernoulli
2020-11-08 19:03 ` [PATCH 25/27] emacs: do not quote self-quoting t Jonas Bernoulli
2020-11-08 19:03 ` [PATCH 26/27] emacs: avoid binding unnamed commands in keymaps Jonas Bernoulli
2023-10-28 4:22 ` Ryan Tate
2023-10-28 9:32 ` Michael J Gruber
2023-10-29 1:54 ` Ryan Tate
2023-10-29 13:09 ` David Bremner
2020-11-08 19:03 ` Jonas Bernoulli [this message]
2020-11-15 22:21 ` [PATCH 27/27] emacs: various cosmetic improvements David Edmondson
2020-11-16 20:41 ` Jonas Bernoulli
2020-11-16 21:28 ` [PATCH 00/23] Another set up Emacs cleanup Jonas Bernoulli
2020-11-16 21:28 ` [PATCH v2 01/23] emacs: remove redundant notmuch-hello-trim Jonas Bernoulli
2020-11-16 21:28 ` [PATCH v2 02/23] emacs: fix old bug in notmuch-mua-mail Jonas Bernoulli
2020-11-16 21:28 ` [PATCH v2 03/23] emacs: remove kludge for Emacs 23 from notmuch-mua-mail Jonas Bernoulli
2020-11-16 21:28 ` [PATCH v2 04/23] emacs: more cleanup since dropping support for Emacs 24 Jonas Bernoulli
2020-11-16 21:28 ` [PATCH v2 05/23] emacs: sanitize function that displays version Jonas Bernoulli
2020-11-16 21:28 ` [PATCH v2 06/23] emacs: define notmuch-hello-url as a constant Jonas Bernoulli
2020-11-16 21:28 ` [PATCH v2 07/23] emacs: shorten/replace first sentence of a few doc-strings Jonas Bernoulli
2020-11-16 21:28 ` [PATCH v2 08/23] emacs: place only first sentence on first doc-string line Jonas Bernoulli
2020-11-16 21:28 ` [PATCH v2 09/23] emacs: place complete " Jonas Bernoulli
2020-11-16 21:28 ` [PATCH v2 10/23] emacs: always use elisp quoting style in doc-strings Jonas Bernoulli
2020-11-16 21:28 ` [PATCH v2 11/23] emacs: misc doc-string improvements Jonas Bernoulli
2020-11-16 21:28 ` [PATCH v2 12/23] emacs: remove deprecated notmuch-folder command Jonas Bernoulli
2020-11-16 21:28 ` [PATCH v2 13/23] emacs: remove unnecessary notmuch-remove-if-not Jonas Bernoulli
2020-11-16 21:28 ` [PATCH v2 14/23] emacs: remove unused notmuch-address-locate-command Jonas Bernoulli
2020-11-16 21:28 ` [PATCH v2 15/23] emacs: remove unnecessary notmuch-tree-button-activate Jonas Bernoulli
2020-11-16 21:28 ` [PATCH v2 16/23] emacs: inline notmuch-documentation-first-line Jonas Bernoulli
2020-11-16 21:28 ` [PATCH v2 17/23] emacs: inline notmuch-split-content-type Jonas Bernoulli
2020-11-16 21:28 ` [PATCH v2 18/23] emacs: use defvar-local Jonas Bernoulli
2020-11-16 21:28 ` [PATCH v2 19/23] emacs: use setq-local Jonas Bernoulli
2020-11-16 21:28 ` [PATCH v2 20/23] emacs: use setq instead set Jonas Bernoulli
2020-11-16 21:28 ` [PATCH v2 21/23] emacs: do not quote self-quoting t Jonas Bernoulli
2020-11-16 21:28 ` [PATCH v2 22/23] emacs: avoid binding unnamed commands in keymaps Jonas Bernoulli
2020-11-16 21:28 ` [PATCH v2 23/23] emacs: various cosmetic improvements Jonas Bernoulli
2020-12-06 21:09 ` David Bremner
2020-12-14 13:15 ` Jonas Bernoulli
2020-12-14 13:39 ` David Bremner
2020-11-16 22:47 ` [PATCH 00/23] Another set up Emacs cleanup David Edmondson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://notmuchmail.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201108190311.1397-28-jonas@bernoul.li \
--to=jonas@bernoul.li \
--cc=notmuch@notmuchmail.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://yhetil.org/notmuch.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).