summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--attic/misc.org13
-rw-r--r--notmuch.org411
2 files changed, 217 insertions, 207 deletions
diff --git a/attic/misc.org b/attic/misc.org
index aedec78..c93b458 100644
--- a/attic/misc.org
+++ b/attic/misc.org
@@ -420,6 +420,19 @@
(global-company-mode 1)
#+end_src
+* notmuch-addr
+ #+begin_src emacs-lisp
+ (when (jao-load-path "notmuch-addr")
+ (with-eval-after-load 'notmuch-address
+ (jao-corfu-no-auto notmuch-message)
+ (defun jao-notmuch-message-corfu-setup ()
+ (setq-local corfu-quit-no-match nil
+ corfu-commit-predicate t
+ orderless-component-separator " +"))
+ (add-hook 'notmuch-message-mode-hook #'jao-notmuch-message-corfu-setup)
+ (require 'notmuch-addr)
+ (notmuch-addr-setup)))
+ #+end_src
* rcirc
#+begin_src emacs-lisp :load no
(use-package rcirc
diff --git a/notmuch.org b/notmuch.org
index ff6553e..830721a 100644
--- a/notmuch.org
+++ b/notmuch.org
@@ -33,8 +33,7 @@
" "))
(jao-minibuffer-refresh)))
- (when (eq jao-afio-mail-function 'notmuch)
- (jao-minibuffer-add-variable 'jao-notmuch-minibuffer-string -20))
+ (jao-minibuffer-add-variable 'jao-notmuch-minibuffer-string -20)
#+end_src
* searches
#+begin_src emacs-lisp
@@ -120,29 +119,29 @@
(if widen jao-notmuch-widened-searches notmuch-saved-searches)))
(notmuch-jump-search)))
- (setq nnnm-saved-searches
- (mapcar (lambda (s)
- (list :query (plist-get s :query) :name (plist-get s :name)))
- jao-notmuch-widened-searches))
-
- #+end_src
-* enclosures
+#+end_src
+* tags
#+begin_src emacs-lisp
- (with-eval-after-load "notmuch-show"
- (defun jao-notmuch-open-enclosure (add)
- (interactive "P")
- (with-current-notmuch-show-message
- (goto-char (point-min))
- (if (not (search-forward "Enclosure:" nil t))
- (user-error "No enclosure in message body")
- (re-search-forward "https?://" nil t)
- (if-let (url (thing-at-point-url-at-point))
- (progn
- (message "%s %s ..." (if add "Adding" "Playing") url)
- (unless add (jao-mpc-clear))
- (jao-mpc-add-url url)
- (unless add (jao-mpc-play)))
- (error "Found an enclosure, but not a link!"))))))
+ (setq notmuch-archive-tags '("+trove" "-new")
+ notmuch-show-mark-read-tags '("-new" "-unread")
+ notmuch-tag-formats
+ (let ((d `(:foreground ,(face-attribute 'jao-themes-dimm :foreground)))
+ (e `(:foreground ,(face-attribute 'jao-themes-error :foreground))))
+ `(("unread")
+ ("signed")
+ ("new" "N")
+ ("replied" "R")
+ ("sent" "S")
+ ("attachment" "📎")
+ ("deleted" "×××" (propertize tag 'face '(:underline nil ,@e)))
+ ("flagged" "*" (propertize tag 'face ',e))
+ ("jao" "j")
+ ("bigml" "b")
+ ("feeds" "f")))
+ notmuch-tag-deleted-formats
+ '(("unread")
+ ("new")
+ (".*" (notmuch-apply-face tag 'notmuch-tag-deleted))))
#+end_src
* package
#+begin_src emacs-lisp
@@ -154,105 +153,73 @@
:init
(setq notmuch-draft-folder "jao/drafts"
notmuch-draft-quoted-tags '("part")
- notmuch-column-control t
- notmuch-hello-sections '(jao-notmuch-hello-insert-searches
- notmuch-hello-insert-alltags
- notmuch-hello-insert-header)
- notmuch-hello-thousands-separator ","
- notmuch-hello-auto-refresh t
- notmuch-show-all-tags-list t
- notmuch-show-logo nil
- notmuch-show-empty-saved-searches nil
- notmuch-show-only-matching-messages t
- notmuch-show-part-button-default-action 'notmuch-show-view-part
- notmuch-show-mark-read-tags '("-new" "-unread")
- notmuch-archive-tags '("+trove" "-new")
notmuch-address-internal-completion '(received nil)
notmuch-fcc-dirs
'(("\\(support\\|education\\)@bigml.com" . nil)
(".*@bigml.com" . "bigml/sent +bigml +sent -new")
(".*" . "jao/trove +jao +sent +trove -new"))
notmuch-maildir-use-notmuch-insert t
- notmuch-message-headers '("Subject" "To" "Cc" "Date" "List-Id")
- notmuch-wash-signature-lines-max 0
- notmuch-wash-wrap-lines-length 80
- notmuch-wash-citation-lines-prefix 10
- notmuch-wash-citation-lines-suffix 20
- notmuch-tag-formats
- (let ((d `(:foreground ,(face-attribute 'jao-themes-dimm :foreground)))
- (e `(:foreground ,(face-attribute 'jao-themes-error :foreground))))
- `(("unread")
- ("signed")
- ("new" "N")
- ("replied" "R")
- ("sent" "S")
- ("attachment" "📎")
- ("deleted" "×××" (propertize tag 'face '(:underline nil ,@e)))
- ("flagged" "*" (propertize tag 'face ',e))
- ("jao" "j")
- ("bigml" "b")
- ("feeds" "f")))
- notmuch-tag-deleted-formats
- '(("unread")
- ("new")
- (".*" (notmuch-apply-face tag 'notmuch-tag-deleted))))
-
- (setq gnus-blocked-images ".")
- (setq notmuch-show-text/html-blocked-images ".")
+ notmuch-message-headers '("Subject" "To" "Cc" "Date" "List-Id"))
:config
- (defun jao-notmuch-hello-insert-searches ()
- (when-let (searches (notmuch-hello-query-counts notmuch-saved-searches))
- (widget-insert "Saved searches:\n\n")
- (let ((start (point)))
- (let ((notmuch-column-control t))
- (notmuch-hello-insert-buttons searches))
- (indent-rigidly start (point) notmuch-hello-indent))))
-
(when (eq 'notmuch jao-afio-mail-function)
(setq message-directory "~/var/mail/"
- message-auto-save-directory "/tmp")
- (with-eval-after-load "notmuch-message"
- (define-key message-mode-map (kbd "C-c C-d")
- #'notmuch-draft-postpone)))
-
- (defconst jao-mail-clean-rx
- (regexp-opt '("ElDiario.es - ElDiario.es: " "The Guardian: "
- "The Conversation – Articles (UK): ")))
-
- (defun jao-mail-clean-address (fun address)
- (let ((address
- (if (string-match ".+ updates on arXiv.org: \\(.+\\)" address)
- (with-temp-buffer
- (insert (match-string 1 address))
- (let ((shr-width 1000))
- (shr-render-region (point-min) (point-max)))
- (replace-regexp-in-string "\"" "" (buffer-string)))
- (replace-regexp-in-string jao-mail-clean-rx "" address))))
- (funcall fun address)))
+ message-auto-save-directory "/tmp"))
- (advice-add 'notmuch-clean-address :around #'jao-mail-clean-address)
+ :bind (:map notmuch-common-keymap
+ (("E" . jao-notmuch-open-enclosure)
+ ("B" . jao-notmuch-browse-urls))
+ :filter (eq 'notmuch jao-afio-mail-function)
+ :map message-mode-map
+ (("C-c C-d" . notmuch-draft-postpone))))
- (defun jao-notmuch-refresh-agenda ()
- (interactive)
- (save-window-excursion (org-agenda-list))
- (with-current-buffer "*Calendar*" (calendar-goto-today)))
-
- (defun jao-notmuch-hello-first ()
- (interactive)
- (let ((inhibit-message t))
- (beginning-of-buffer)
- (widget-forward 1)))
-
- (defun jao-notmuch-refresh-hello ()
- (interactive)
- (ignore-errors
- (when (and (string= "Mail" (jao-afio-current-frame))
- (derived-mode-p 'notmuch-hello-mode))
- (when (not (string-blank-p jao-notmuch-minibuffer-string))
- (let ((notmuch-hello-auto-refresh nil)) (notmuch-hello)))
- (jao-notmuch-hello-first))))
+ (use-package jao-notmuch
+ :demand t
+ :config (setq jao-notmuch-mailboxes (jao-mailbox-folders)))
+
+ #+end_src
+* hello
+ #+begin_src emacs-lisp
+ (defun jao-notmuch-hello-insert-searches ()
+ (when-let (searches (notmuch-hello-query-counts notmuch-saved-searches))
+ (widget-insert "Saved searches:\n\n")
+ (let ((start (point)))
+ (let ((notmuch-column-control t))
+ (notmuch-hello-insert-buttons searches))
+ (indent-rigidly start (point) notmuch-hello-indent))))
+
+ (defun jao-notmuch-refresh-agenda ()
+ (interactive)
+ (save-window-excursion (org-agenda-list))
+ (with-current-buffer "*Calendar*" (calendar-goto-today)))
+
+ (defun jao-notmuch-hello-first ()
+ (interactive)
+ (let ((inhibit-message t))
+ (beginning-of-buffer)
+ (widget-forward 1)))
+
+ (defun jao-notmuch-refresh-hello ()
+ (interactive)
+ (ignore-errors
+ (when (and (string= "Mail" (jao-afio-current-frame))
+ (derived-mode-p 'notmuch-hello-mode))
+ (when (not (string-blank-p jao-notmuch-minibuffer-string))
+ (let ((notmuch-hello-auto-refresh nil)) (notmuch-hello)))
+ (jao-notmuch-hello-first))))
+
+ (use-package notmuch-hello
+ :init
+ (setq notmuch-column-control t
+ notmuch-hello-sections '(jao-notmuch-hello-insert-searches
+ notmuch-hello-insert-alltags
+ notmuch-hello-insert-header)
+ notmuch-hello-thousands-separator ","
+ notmuch-hello-auto-refresh t
+ notmuch-show-all-tags-list t
+ notmuch-show-logo nil
+ notmuch-show-empty-saved-searches nil)
:hook ((notmuch-hello-refresh . jao-notmuch-notify)
(jao-afio-switch . jao-notmuch-refresh-hello))
@@ -265,20 +232,80 @@
("S" . consult-notmuch)
("g" . jao-notmuch-refresh-hello)
("." . jao-notmuch-hello-first)
- ("SPC" . widget-button-press))
- :map notmuch-common-keymap
- (("E" . jao-notmuch-open-enclosure))))
+ ("SPC" . widget-button-press))))
- (use-package jao-notmuch
- :demand t
- :config (setq jao-notmuch-mailboxes (jao-mailbox-folders)))
+ #+end_src
+* show
+ #+begin_src emacs-lisp
+ (defun jao-notmuch-open-enclosure (add)
+ (interactive "P")
+ (with-current-notmuch-show-message
+ (goto-char (point-min))
+ (if (not (search-forward "Enclosure:" nil t))
+ (user-error "No enclosure in message body")
+ (re-search-forward "https?://" nil t)
+ (if-let (url (thing-at-point-url-at-point))
+ (progn
+ (message "%s %s ..." (if add "Adding" "Playing") url)
+ (unless add (jao-mpc-clear))
+ (jao-mpc-add-url url)
+ (unless add (jao-mpc-play)))
+ (error "Found an enclosure, but not a link!")))))
+
+ (defconst jao-mail-clean-rx
+ (regexp-opt '("ElDiario.es - ElDiario.es: " "The Guardian: "
+ "The Conversation – Articles (UK): ")))
+
+ (defun jao-mail-clean-address (fun address)
+ (let ((address
+ (if (string-match ".+ updates on arXiv.org: \\(.+\\)" address)
+ (with-temp-buffer
+ (insert (match-string 1 address))
+ (let ((shr-width 1000))
+ (shr-render-region (point-min) (point-max)))
+ (replace-regexp-in-string "\"" "" (buffer-string)))
+ (replace-regexp-in-string jao-mail-clean-rx "" address))))
+ (funcall fun address)))
+
+ (defun jao-notmuch-show-setup () (setq header-line-format nil))
+
+ (use-package notmuch-show
+ :init
+ (setq gnus-blocked-images "."
+ notmuch-show-only-matching-messages t
+ notmuch-show-part-button-default-action 'notmuch-show-view-part
+ notmuch-wash-signature-lines-max 0
+ notmuch-wash-wrap-lines-length 80
+ notmuch-wash-citation-lines-prefix 10
+ notmuch-wash-citation-lines-suffix 20
+ notmuch-show-text/html-blocked-images ".")
+
+ :config
+
+ (advice-add 'notmuch-clean-address :around #'jao-mail-clean-address)
+ (add-hook 'notmuch-show-hook #'jao-notmuch-show-setup)
+ (jao-notmuch-show-prefer-html)
+
+ :bind
+ (:map notmuch-show-mode-map
+ (("h" . jao-notmuch-goto-tree-buffer)
+ ("TAB" . jao-notmuch-show-next-button)
+ ("S-TAB" . jao-notmuch-show-previous-button)
+ ("RET" . jao-notmuch-show-ret))))
+
+ #+end_src
+* search
+ #+begin_src emacs-lisp
+ (use-package notmuch-search
+ :bind (:map notmuch-search-mode-map
+ (("RET" . notmuch-tree-from-search-thread)
+ ("M-RET" . notmuch-search-show-thread))))
#+end_src
-* search/tree view
+* tree
#+begin_src emacs-lisp
(use-package notmuch-tree
:config
-
(let ((fg (face-attribute 'jao-themes-dimm :foreground)))
(dolist (f '(notmuch-tree-match-tree-face
notmuch-tree-no-match-tree-face))
@@ -290,99 +317,35 @@
(replace-regexp-in-string "►" "" rs)) ;; "→"
(t (truncate-string-to-width rs 102 nil nil t)))))
- (advice-add 'notmuch-tree-format-field
- :around #'jao-notmuch--format-field)
-
- (defun jao-notmuch-show-setup ()
- (setq header-line-format nil))
-
- (add-hook 'notmuch-show-hook #'jao-notmuch-show-setup)
- (jao-notmuch-show-prefer-html)
+ (advice-add 'notmuch-tree-format-field :around #'jao-notmuch--format-field)
(jao-notmuch-tree-setup "T")
:bind (:map notmuch-tree-mode-map
- (("C" . jao-notmuch-echo-count)
- ("d" . jao-notmuch-tree-delete-message)
- ("D" . jao-notmuch-tree-delete-thread)
- ("h" . jao-notmuch-goto-message-buffer)
- ("H" . jao-notmuch-click-message-buffer)
- ("i" . jao-notmuch-show-images)
- ("K" . jao-notmuch-tag-jump-and-next)
- ("k" . jao-notmuch-tree-read-thread)
- ("M" . jao-notmuch-move-message)
- ("n" . jao-notmuch-tree-next)
- ("O" . notmuch-tree-toggle-order)
- ("o" . jao-notmuch-tree-widen-search)
- ("p" . jao-notmuch-tree-previous)
- ("s" . jao-notmuch-tree-spam)
- ("u" . jao-notmuch-tree-flag)
- ("v" . notmuch-tree-scroll-message-window)
- ("V" . notmuch-tree-scroll-message-window-back)
- ("<" . jao-notmuch-tree-beginning-of-buffer)
- (">" . jao-notmuch-tree-end-of-buffer)
- ("/" . notmuch-tree-view-raw-message)
- ("." . jao-notmuch-toggle-mime-parts)
- ("=" . jao-notmuch-tree-toggle-message)
- ("RET" . jao-notmuch-tree-show-or-scroll)
- ("SPC" . jao-notmuch-tree-scroll-or-next))
- :map notmuch-search-mode-map
- (("RET" . notmuch-tree-from-search-thread)
- ("M-RET" . notmuch-search-show-thread))
- :map notmuch-show-mode-map
- (("h" . jao-notmuch-goto-tree-buffer)
- ("TAB" . jao-notmuch-show-next-button)
- ("S-TAB" . jao-notmuch-show-previous-button)
- ("RET" . jao-notmuch-show-ret))
- :map notmuch-common-keymap
- (("B" . jao-notmuch-browse-urls))))
- #+end_src
-* notmuch-addr
- #+begin_src emacs-lisp
- (when (jao-load-path "notmuch-addr")
- (with-eval-after-load 'notmuch-address
- (jao-corfu-no-auto notmuch-message)
- (defun jao-notmuch-message-corfu-setup ()
- (setq-local corfu-quit-no-match nil
- corfu-commit-predicate t
- orderless-component-separator " +"))
- (add-hook 'notmuch-message-mode-hook #'jao-notmuch-message-corfu-setup)
- (require 'notmuch-addr)
- (notmuch-addr-setup)))
- #+end_src
-* hydras
- #+begin_src emacs-lisp
- (major-mode-hydra-define notmuch-search-mode nil
- ("Tagging"
- (("*" notmuch-search-tag-all "tag all")
- ("+" notmuch-search-add-tag "add tag")
- ("-" notmuch-search-remove-tag "add tag")
- ("k" notmuch-tag-jump "jump to tag"))
- "Search"
- (("l" notmuch-search-filter "filter with additional query")
- ("t" notmuch-search-filter-by-tag "filter by tag")
- ("y" notmuch-stash-query "stash current query"))
- "Moving around"
- (("b" notmuch-search-scroll-down "scroll down")
- ("<" notmuch-search-first-thread "first thread")
- (">" notmuch-search-last-thread "last thread"))))
-
- (major-mode-hydra-define notmuch-tree-mode nil
- ("View"
- (("." jao-notmuch-toggle-mime-parts "toggle mime parts")
- ("i" jao-notmuch-show-images "toggle images")
- ("a" notmuch-tree-archive-thread-then-next "archive thread")
- ("C" jao-notmuch-echo-count "echo unread count"))
- "Mark"
- (("d" jao-notmuch-tree-delete-message "delete message")
- ("D" jao-notmuch-tree-delete-thread "delete thread")
- ("u" (jao-notmuch-tree-delete-message t) "undelete message")
- ("k" jao-notmuch-tree-read-thread "kill thread"))
- "Edit/send"
- (("r" notmuch-tree-reply-sender "reply sender")
- ("R" notmuch-tree-reply "reply all")
- ("f" notmuch-tree-forward-message "forward")
- ("e" notmuch-tree-resume-message "edit draft"))))
+ (("C" . jao-notmuch-echo-count)
+ ("d" . jao-notmuch-tree-delete-message)
+ ("D" . jao-notmuch-tree-delete-thread)
+ ("h" . jao-notmuch-goto-message-buffer)
+ ("H" . jao-notmuch-click-message-buffer)
+ ("i" . jao-notmuch-show-images)
+ ("K" . jao-notmuch-tag-jump-and-next)
+ ("k" . jao-notmuch-tree-read-thread)
+ ("M" . jao-notmuch-move-message)
+ ("n" . jao-notmuch-tree-next)
+ ("O" . notmuch-tree-toggle-order)
+ ("o" . jao-notmuch-tree-widen-search)
+ ("p" . jao-notmuch-tree-previous)
+ ("s" . jao-notmuch-tree-spam)
+ ("u" . jao-notmuch-tree-flag)
+ ("v" . notmuch-tree-scroll-message-window)
+ ("V" . notmuch-tree-scroll-message-window-back)
+ ("<" . jao-notmuch-tree-beginning-of-buffer)
+ (">" . jao-notmuch-tree-end-of-buffer)
+ ("/" . notmuch-tree-view-raw-message)
+ ("." . jao-notmuch-toggle-mime-parts)
+ ("=" . jao-notmuch-tree-toggle-message)
+ ("RET" . jao-notmuch-tree-show-or-scroll)
+ ("SPC" . jao-notmuch-tree-scroll-or-next))))
#+end_src
* consult
#+begin_src emacs-lisp
@@ -448,3 +411,37 @@
:link link
:description description)))))))
#+end_src
+* hydras
+ #+begin_src emacs-lisp
+ (major-mode-hydra-define notmuch-search-mode nil
+ ("Tagging"
+ (("*" notmuch-search-tag-all "tag all")
+ ("+" notmuch-search-add-tag "add tag")
+ ("-" notmuch-search-remove-tag "add tag")
+ ("k" notmuch-tag-jump "jump to tag"))
+ "Search"
+ (("l" notmuch-search-filter "filter with additional query")
+ ("t" notmuch-search-filter-by-tag "filter by tag")
+ ("y" notmuch-stash-query "stash current query"))
+ "Moving around"
+ (("b" notmuch-search-scroll-down "scroll down")
+ ("<" notmuch-search-first-thread "first thread")
+ (">" notmuch-search-last-thread "last thread"))))
+
+ (major-mode-hydra-define notmuch-tree-mode nil
+ ("View"
+ (("." jao-notmuch-toggle-mime-parts "toggle mime parts")
+ ("i" jao-notmuch-show-images "toggle images")
+ ("a" notmuch-tree-archive-thread-then-next "archive thread")
+ ("C" jao-notmuch-echo-count "echo unread count"))
+ "Mark"
+ (("d" jao-notmuch-tree-delete-message "delete message")
+ ("D" jao-notmuch-tree-delete-thread "delete thread")
+ ("u" (jao-notmuch-tree-delete-message t) "undelete message")
+ ("k" jao-notmuch-tree-read-thread "kill thread"))
+ "Edit/send"
+ (("r" notmuch-tree-reply-sender "reply sender")
+ ("R" notmuch-tree-reply "reply all")
+ ("f" notmuch-tree-forward-message "forward")
+ ("e" notmuch-tree-resume-message "edit draft"))))
+ #+end_src