diff options
-rw-r--r-- | email.org | 154 |
1 files changed, 78 insertions, 76 deletions
@@ -273,6 +273,84 @@ (gnus-demon-scan-news))))) #+end_src * notmuch +*** minibuffer notifications + #+begin_src emacs-lisp + (defvar jao-notmuch-minibuffer-string "") + + (defvar jao-notmuch-minibuffer-queries + '((:name "" :query "tag:new" :face jao-themes-f00) + (:name "B" :query "tag:new and tag:bigml and tag:inbox") + (:name "b" :query "tag:new and tag:bigml and tag:bugs" + :face jao-themes-error) + (:name "S" :query "tag:new and tag:bigml and tag:support") + (:name "W" :query "tag:new and tag:bigml" :face jao-themes-dimm) + (:name "I" :query "tag:new and tag:jao and tag:inbox") + (:name "J" :query "tag:new and tag:jao" :face jao-themes-dimm) + (:name "E" :query "tag:new and tag:feeds and tag:emacs" + :face jao-themes-dimm) + (:name "N" :query "tag:new and tag:gmane" :face jao-themes-dimm) + (:name "F" :query "tag:new and tag:feeds and not tag:emacs" + :face jao-themes-dimm))) + + (defun jao-notmuch-notify () + (let ((cnts (notmuch-hello-query-counts jao-notmuch-minibuffer-queries))) + (setq jao-notmuch-minibuffer-string + (mapconcat (lambda (c) + (propertize (format "%s%s" + (plist-get c :name) + (plist-get c :count)) + 'face (plist-get c :face))) + cnts + " ")) + (jao-minibuffer-refresh))) + + (when (eq jao-afio-mail-function 'notmuch) + (jao-minibuffer-add-variable 'jao-notmuch-minibuffer-string -20)) + #+end_src +*** searches + #+begin_src emacs-lisp + (setq notmuch-tree-result-format + '(("date" . "%12s ") + ("authors" . "%-35s") + ((("tree" . "%s ")("subject" . "%s")) . " %-100s") + ("tags" . " (%s)")) + notmuch-search-result-format + '(("date" . "%12s ") + ("count" . "%-7s ") + ("authors" . "%-35s") + ("subject" . "%-100s") + ("tags" . "(%s)")) + notmuch-unthreaded-result-format notmuch-tree-result-format) + + (defun jao-notmuch--q (d0 d1 &optional k qs st) + (let ((q (or (when qs (mapconcat #'identity qs " AND ")) + (format "folder:%s/%s and tag:unread" d0 d1)))) + (list :name (concat d0 (when d1 "/") d1) + :key k :query q :search-type (or st 'tree) + :sort-order 'oldest-first))) + + (defun jao-notmuch--mboxes-search (box &rest excluded) + (let ((ms (seq-difference (jao-list-mailboxes box) excluded)) + (bp (substring box 0 1))) + (mapcar `(lambda (m) + (jao-notmuch--q ,box (car m) (concat ,bp (cdr m)))) + (shorten-strings (sort ms #'string<))))) + + (setq notmuch-saved-searches + `(,(jao-notmuch--q "bigml" "inbox" "bi") + ,@(jao-notmuch--mboxes-search "bigml" "inbox" "deploys") + ,(jao-notmuch--q "jao" "inbox" "ji") + ,@(jao-notmuch--mboxes-search "jao" "inbox") + ,@(jao-notmuch--mboxes-search "feeds") + ,(jao-notmuch--q "gmane/emacs" nil "e" + '("tag:gmane" "tag:new" "List:emacs")) + ,(jao-notmuch--q "gmane" nil "g" '("tag:gmane" "tag:new")) + ,(jao-notmuch--q "bml/today" nil "tb" '("tag:bigml" "date:1d..") t) + ,(jao-notmuch--q "jao/today" nil "tj" '("tag:jao" "date:1d..") t) + ,(jao-notmuch--q "flagged" nil "r" '("tag:flagged") t) + ,(jao-notmuch--q "new" nil "n" '("tag:new")) + ,(jao-notmuch--q "draft" nil "d" '("tag:draft")))) + #+end_src *** package #+begin_src emacs-lisp (use-package notmuch @@ -340,48 +418,6 @@ :map notmuch-common-keymap (("E" . jao-notmuch-open-enclosure)))) #+end_src -*** searches - #+begin_src emacs-lisp - (setq notmuch-tree-result-format - '(("date" . "%12s ") - ("authors" . "%-35s") - ((("tree" . "%s ")("subject" . "%s")) . " %-100s") - ("tags" . " (%s)")) - notmuch-search-result-format - '(("date" . "%12s ") - ("count" . "%-7s ") - ("authors" . "%-35s") - ("subject" . "%-100s") - ("tags" . "(%s)")) - notmuch-unthreaded-result-format notmuch-tree-result-format) - - (defun jao-notmuch--q (d0 d1 &optional k qs st) - (let ((q (or (when qs (mapconcat #'identity qs " AND ")) - (format "folder:%s/%s and tag:unread" d0 d1)))) - (list :name (concat d0 (when d1 "/") d1) - :key k :query q :search-type (or st 'tree) - :sort-order 'oldest-first))) - - (defun jao-notmuch--mboxes-search (box &rest excluded) - (let ((ms (seq-difference (jao-list-mailboxes box) excluded)) - (bp (substring box 0 1))) - (mapcar `(lambda (m) - (jao-notmuch--q ,box (car m) (concat ,bp (cdr m)))) - (shorten-strings (sort ms #'string<))))) - - (setq notmuch-saved-searches - `(,(jao-notmuch--q "bigml" "inbox" "bi") - ,@(jao-notmuch--mboxes-search "bigml" "inbox" "deploys") - ,(jao-notmuch--q "jao" "inbox" "ji") - ,@(jao-notmuch--mboxes-search "jao" "inbox") - ,@(jao-notmuch--mboxes-search "feeds") - ,(jao-notmuch--q "gmane" nil "g" '("tag:gmane" "tag:new")) - ,(jao-notmuch--q "bml/today" nil "tb" '("tag:bigml" "date:1d..") t) - ,(jao-notmuch--q "jao/today" nil "tj" '("tag:jao" "date:1d..") t) - ,(jao-notmuch--q "flagged" nil "r" '("tag:flagged") t) - ,(jao-notmuch--q "new" nil "n" '("tag:new")) - ,(jao-notmuch--q "draft" nil "d" '("tag:draft")))) - #+end_src *** tree view #+begin_src emacs-lisp (defvar-local jao-notmuch--tree-buffer nil) @@ -535,40 +571,6 @@ (define-key message-mode-map (kbd "C-c C-d") #'notmuch-draft-postpone))) #+end_src -*** minibuffer notifications - #+begin_src emacs-lisp - (defvar jao-notmuch-minibuffer-string "") - - (defvar jao-notmuch-minibuffer-queries - '((:name "" :query "tag:new" :face jao-themes-f00) - (:name "B" :query "tag:new and tag:bigml and tag:inbox") - (:name "b" :query "tag:new and tag:bigml and tag:bugs" - :face jao-themes-error) - (:name "S" :query "tag:new and tag:bigml and tag:support") - (:name "W" :query "tag:new and tag:bigml" :face jao-themes-dimm) - (:name "I" :query "tag:new and tag:jao and tag:inbox") - (:name "J" :query "tag:new and tag:jao" :face jao-themes-dimm) - (:name "E" :query "tag:new and tag:feeds and tag:emacs" - :face jao-themes-dimm) - (:name "N" :query "tag:new and tag:gmane" :face jao-themes-dimm) - (:name "F" :query "tag:new and tag:feeds and not tag:emacs" - :face jao-themes-dimm))) - - (defun jao-notmuch-notify () - (let ((cnts (notmuch-hello-query-counts jao-notmuch-minibuffer-queries))) - (setq jao-notmuch-minibuffer-string - (mapconcat (lambda (c) - (propertize (format "%s%s" - (plist-get c :name) - (plist-get c :count)) - 'face (plist-get c :face))) - cnts - " ")) - (jao-minibuffer-refresh))) - - (when (eq jao-afio-mail-function 'notmuch) - (jao-minibuffer-add-variable 'jao-notmuch-minibuffer-string -20)) - #+end_src *** consult #+begin_src emacs-lisp (use-package consult-notmuch |