63 lines
2.4 KiB
EmacsLisp
63 lines
2.4 KiB
EmacsLisp
|
;;; +notmuch.el --- Notmuch extras -*- lexical-binding: t; -*-
|
||
|
|
||
|
;;; Commentary:
|
||
|
|
||
|
;; This is stuff that I suppose /could/ go in notmuch/init.el, but ... doesn't.
|
||
|
|
||
|
;;; Code:
|
||
|
|
||
|
(require 'cl-lib)
|
||
|
(require 'notmuch)
|
||
|
|
||
|
(defvar +notmuch-send-dispatch-rules nil
|
||
|
"Alist of from addresses and variables to set when sending.")
|
||
|
|
||
|
(defun +notmuch-query-concat (&rest queries)
|
||
|
"Concatenate notmuch queries."
|
||
|
(mapconcat #'identity queries " AND "))
|
||
|
|
||
|
(defun +send-mail-dispatch ()
|
||
|
"Dispatch mail sender, depending on account."
|
||
|
(let ((from (message-fetch-field "from")))
|
||
|
(dolist (vars (cl-loop for (addr . vars) in +notmuch-send-dispatch-rules
|
||
|
if (string-match-p addr from) return vars))
|
||
|
(set (car vars) (cdr vars)))))
|
||
|
|
||
|
(defun +notmuch-correct-tags (args)
|
||
|
(list (car args) (mapcar #'string-trim (cadr args))))
|
||
|
|
||
|
(defun +notmuch-goto (&optional prefix)
|
||
|
"Go straight to a `notmuch' search.
|
||
|
Without PREFIX argument, go to the first one in
|
||
|
`notmuch-saved-searches'; with a PREFIX argument, prompt the user
|
||
|
for which saved search to go to; with a double PREFIX
|
||
|
argument (\\[universal-argument] \\[universal-argument]), prompt
|
||
|
for search."
|
||
|
(interactive "P")
|
||
|
(pcase prefix
|
||
|
('nil (notmuch-search (plist-get (car notmuch-saved-searches) :query)))
|
||
|
('(4) (notmuch-search (plist-get (cl-find (completing-read "Saved Search: "
|
||
|
(mapcar (lambda (el)
|
||
|
(plist-get el :name))
|
||
|
notmuch-saved-searches))
|
||
|
notmuch-saved-searches
|
||
|
:key (lambda (el) (plist-get el :name))
|
||
|
:test #'equal)
|
||
|
:query)))
|
||
|
(_ (notmuch-search))))
|
||
|
|
||
|
;; Don't add an initial input when completing addresses
|
||
|
(el-patch-feature notmuch)
|
||
|
(with-eval-after-load 'notmuch
|
||
|
(el-patch-defun notmuch-address-selection-function (prompt collection initial-input)
|
||
|
"Call (`completing-read'
|
||
|
PROMPT COLLECTION nil nil INITIAL-INPUT 'notmuch-address-history)"
|
||
|
(completing-read
|
||
|
prompt collection nil nil
|
||
|
(el-patch-swap initial-input
|
||
|
nil)
|
||
|
'notmuch-address-history)))
|
||
|
|
||
|
(provide '+notmuch)
|
||
|
;;; +notmuch.el ends here
|