From 40451d1f3f2d66e0ec0d03c4c51574bc95ac7517 Mon Sep 17 00:00:00 2001 From: Colin Powell Date: Sat, 28 Mar 2020 15:25:09 -0400 Subject: [PATCH] Update notmuch shortcuts #emacs --- emacs/.config/doom/+mail.el | 248 ++++++++++++++++++------------------ 1 file changed, 124 insertions(+), 124 deletions(-) diff --git a/emacs/.config/doom/+mail.el b/emacs/.config/doom/+mail.el index 2ae7399..5fd03c5 100644 --- a/emacs/.config/doom/+mail.el +++ b/emacs/.config/doom/+mail.el @@ -20,7 +20,7 @@ (map! (:leader (:prefix "e" - :desc "Open (i)nbox" "i" #'=mail + :desc "Open (i)nbox" "i" #'=notmuch :desc "Open (n)otmuch" "n" #'notmuch :desc "(C)ompose mail" "c" #'notmuch-mua-new-mail)))) @@ -34,8 +34,8 @@ ;; (add-hook 'notmuch-message-mode-hook '+mail/buffer-face-mode-notmuch) (add-hook 'notmuch-message-mode-hook (lambda () (set (make-local-variable 'company-backends) '(notmuch-company (company-ispell :with company-yasnippet))))) (add-hook 'notmuch-tree-mode-hook (lambda () (setq-local line-spacing nil))) - (remove-hook 'message-mode-hook #'turn-on-auto-fill) - (remove-hook 'notmuch-message-mode-hook #'turn-on-auto-fill) + ;;(remove-hook 'message-mode-hook #'turn-on-auto-fill) + ;;(remove-hook 'notmuch-message-mode-hook #'turn-on-auto-fill) ;; (push 'notmuch-tree-mode evil-snipe-disabled-modes) ;; (push 'notmuch-hello-mode evil-snipe-disabled-modes) ;; (push 'notmuch-search-mode evil-snipe-disabled-modes) @@ -318,127 +318,127 @@ matched." nil)))) ;;;###autoload -(defun +mail/notmuch-hello-insert-searches (title query-list &rest options) - "Insert a section with TITLE showing a list of buttons made from QUERY-LIST. -QUERY-LIST should ideally be a plist but for backwards -compatibility other forms are also accepted (see -`notmuch-saved-searches' for details). The plist should -contain keys :name and :query; if :count-query is also present -then it specifies an alternate query to be used to generate the -count for the associated search. -Supports the following entries in OPTIONS as a plist: -:initially-hidden - if non-nil, section will be hidden on startup -:show-empty-searches - show buttons with no matching messages -:hide-if-empty - hide if no buttons would be shown - (only makes sense without :show-empty-searches) -:filter - This can be a function that takes the search query as its argument and - returns a filter to be used in conjuction with the query for that search or nil - to hide the element. This can also be a string that is used as a combined with - each query using \"and\". -:filter-count - Separate filter to generate the count displayed each search. Accepts - the same values as :filter. If :filter and :filter-count are specified, this - will be used instead of :filter, not in conjunction with it." - (widget-insert (propertize title 'face 'org-agenda-structure)) - (if (and notmuch-hello-first-run (plist-get options :initially-hidden)) - (add-to-list 'notmuch-hello-hidden-sections title)) - (let ((is-hidden (member title notmuch-hello-hidden-sections)) - (widget-push-button-prefix "") - (widget-push-button-suffix "") - (start (point))) - (if is-hidden - (widget-create 'push-button - :notify `(lambda (widget &rest ignore) - (setq notmuch-hello-hidden-sections - (delete ,title notmuch-hello-hidden-sections)) - (notmuch-hello-update)) - (propertize " +" 'face 'org-agenda-structure)) - (widget-create 'push-button - :notify `(lambda (widget &rest ignore) - (add-to-list 'notmuch-hello-hidden-sections - ,title) - (notmuch-hello-update)) - " -")) - (widget-insert "\n") - (when (not is-hidden) - (let ((searches (apply 'notmuch-hello-query-counts query-list options))) - (when (or (not (plist-get options :hide-if-empty)) - searches) - (widget-insert "\n") - (notmuch-hello-insert-buttons searches) - (indent-rigidly start (point) notmuch-hello-indent)))))) - -;;;###autoload -(defun +mail/notmuch-hello-insert-saved-searches () - "Insert the saved-searches section." - (let ((searches (notmuch-hello-query-counts - (if notmuch-saved-search-sort-function - (funcall notmuch-saved-search-sort-function - notmuch-saved-searches) - notmuch-saved-searches) - :show-empty-searches notmuch-show-empty-saved-searches))) - (when searches - (widget-insert (propertize "Notmuch" 'face 'org-agenda-date-today)) - (widget-insert "\n\n") - (widget-insert (propertize "Saved searches" 'face 'org-agenda-structure)) - (widget-insert "\n\n") - (let ((start (point))) - (notmuch-hello-insert-buttons searches) - (indent-rigidly start (point) notmuch-hello-indent))))) - -;;;###autoload -(defun +mail/notmuch-hello-insert-buttons (searches) - "Insert buttons for SEARCHES. -SEARCHES must be a list of plists each of which should contain at -least the properties :name NAME :query QUERY and :count COUNT, -where QUERY is the query to start when the button for the -corresponding entry is activated, and COUNT should be the number -of messages matching the query. Such a plist can be computed -with `notmuch-hello-query-counts'." - (let* ((widest (notmuch-hello-longest-label searches)) - (tags-and-width (notmuch-hello-tags-per-line widest)) - (tags-per-line (car tags-and-width)) - (column-width (cdr tags-and-width)) - (column-indent 0) - (count 0) - (reordered-list (notmuch-hello-reflect searches tags-per-line)) - ;; Hack the display of the buttons used. - (widget-push-button-prefix "") - (widget-push-button-suffix "")) - ;; dme: It feels as though there should be a better way to - ;; implement this loop than using an incrementing counter. - (mapc (lambda (elem) - ;; (not elem) indicates an empty slot in the matrix. - (when elem - (if (> column-indent 0) - (widget-insert (make-string column-indent ? ))) - (let* ((name (plist-get elem :name)) - (query (plist-get elem :query)) - (oldest-first (case (plist-get elem :sort-order) - (newest-first nil) - (oldest-first t) - (otherwise notmuch-search-oldest-first))) - (search-type (eq (plist-get elem :search-type) 'tree)) - (msg-count (plist-get elem :count))) - (widget-insert (format "\n%5s " - (notmuch-hello-nice-number msg-count))) - (widget-create 'push-button - :notify #'notmuch-hello-widget-search - :notmuch-search-terms query - :notmuch-search-oldest-first oldest-first - :notmuch-search-type search-type - name) - (setq column-indent - (1+ (max 0 (- column-width (length name))))))) - (setq count (1+ count)) - (when (eq (% count tags-per-line) 0) - (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) - (widget-insert "\n")))) +;(defun +mail/notmuch-hello-insert-searches (title query-list &rest options) +; "Insert a section with TITLE showing a list of buttons made from QUERY-LIST. +;QUERY-LIST should ideally be a plist but for backwards +;compatibility other forms are also accepted (see +;`notmuch-saved-searches' for details). The plist should +;contain keys :name and :query; if :count-query is also present +;then it specifies an alternate query to be used to generate the +;count for the associated search. +;Supports the following entries in OPTIONS as a plist: +;:initially-hidden - if non-nil, section will be hidden on startup +;:show-empty-searches - show buttons with no matching messages +;:hide-if-empty - hide if no buttons would be shown +; (only makes sense without :show-empty-searches) +;:filter - This can be a function that takes the search query as its argument and +; returns a filter to be used in conjuction with the query for that search or nil +; to hide the element. This can also be a string that is used as a combined with +; each query using \"and\". +;:filter-count - Separate filter to generate the count displayed each search. Accepts +; the same values as :filter. If :filter and :filter-count are specified, this +; will be used instead of :filter, not in conjunction with it." +; (widget-insert (propertize title 'face 'org-agenda-structure)) +; (if (and notmuch-hello-first-run (plist-get options :initially-hidden)) +; (add-to-list 'notmuch-hello-hidden-sections title)) +; (let ((is-hidden (member title notmuch-hello-hidden-sections)) +; (widget-push-button-prefix "") +; (widget-push-button-suffix "") +; (start (point))) +; (if is-hidden +; (widget-create 'push-button +; :notify `(lambda (widget &rest ignore) +; (setq notmuch-hello-hidden-sections +; (delete ,title notmuch-hello-hidden-sections)) +; (notmuch-hello-update)) +; (propertize " +" 'face 'org-agenda-structure)) +; (widget-create 'push-button +; :notify `(lambda (widget &rest ignore) +; (add-to-list 'notmuch-hello-hidden-sections +; ,title) +; (notmuch-hello-update)) +; " -")) +; (widget-insert "\n") +; (when (not is-hidden) +; (let ((searches (apply 'notmuch-hello-query-counts query-list options))) +; (when (or (not (plist-get options :hide-if-empty)) +; searches) +; (widget-insert "\n") +; (notmuch-hello-insert-buttons searches) +; (indent-rigidly start (point) notmuch-hello-indent)))))) +; +;;;;###autoload +;(defun +mail/notmuch-hello-insert-saved-searches () +; "Insert the saved-searches section." +; (let ((searches (notmuch-hello-query-counts +; (if notmuch-saved-search-sort-function +; (funcall notmuch-saved-search-sort-function +; notmuch-saved-searches) +; notmuch-saved-searches) +; :show-empty-searches notmuch-show-empty-saved-searches))) +; (when searches +; (widget-insert (propertize "Notmuch" 'face 'org-agenda-date-today)) +; (widget-insert "\n\n") +; (widget-insert (propertize "Saved searches" 'face 'org-agenda-structure)) +; (widget-insert "\n\n") +; (let ((start (point))) +; (notmuch-hello-insert-buttons searches) +; (indent-rigidly start (point) notmuch-hello-indent))))) +; +;;;;###autoload +;(defun +mail/notmuch-hello-insert-buttons (searches) +; "Insert buttons for SEARCHES. +;SEARCHES must be a list of plists each of which should contain at +;least the properties :name NAME :query QUERY and :count COUNT, +;where QUERY is the query to start when the button for the +;corresponding entry is activated, and COUNT should be the number +;of messages matching the query. Such a plist can be computed +;with `notmuch-hello-query-counts'." +; (let* ((widest (notmuch-hello-longest-label searches)) +; (tags-and-width (notmuch-hello-tags-per-line widest)) +; (tags-per-line (car tags-and-width)) +; (column-width (cdr tags-and-width)) +; (column-indent 0) +; (count 0) +; (reordered-list (notmuch-hello-reflect searches tags-per-line)) +; ;; Hack the display of the buttons used. +; (widget-push-button-prefix "") +; (widget-push-button-suffix "")) +; ;; dme: It feels as though there should be a better way to +; ;; implement this loop than using an incrementing counter. +; (mapc (lambda (elem) +; ;; (not elem) indicates an empty slot in the matrix. +; (when elem +; (if (> column-indent 0) +; (widget-insert (make-string column-indent ? ))) +; (let* ((name (plist-get elem :name)) +; (query (plist-get elem :query)) +; (oldest-first (case (plist-get elem :sort-order) +; (newest-first nil) +; (oldest-first t) +; (otherwise notmuch-search-oldest-first))) +; (search-type (eq (plist-get elem :search-type) 'tree)) +; (msg-count (plist-get elem :count))) +; (widget-insert (format "\n%5s " +; (notmuch-hello-nice-number msg-count))) +; (widget-create 'push-button +; :notify #'notmuch-hello-widget-search +; :notmuch-search-terms query +; :notmuch-search-oldest-first oldest-first +; :notmuch-search-type search-type +; name) +; (setq column-indent +; (1+ (max 0 (- column-width (length name))))))) +; (setq count (1+ count)) +; (when (eq (% count tags-per-line) 0) +; (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) +; (widget-insert "\n")))) ; Kill email message buffers when you close them