diff options
Diffstat (limited to '.emacs.local.d/modes/notmuch.el')
-rw-r--r-- | .emacs.local.d/modes/notmuch.el | 133 |
1 files changed, 0 insertions, 133 deletions
diff --git a/.emacs.local.d/modes/notmuch.el b/.emacs.local.d/modes/notmuch.el deleted file mode 100644 index 19ea823..0000000 --- a/.emacs.local.d/modes/notmuch.el +++ /dev/null @@ -1,133 +0,0 @@ -;; -------- -;; notmuch mode -;; -------- -(require 'notmuch) -(require 'notmuch-indicator) -(require 'rul-config-mail) - -;;;; General UI -(setq notmuch-show-logo nil - notmuch-column-control 1.0 - notmuch-hello-auto-refresh t - notmuch-hello-recent-searches-max 20 - notmuch-hello-thousands-separator "" - notmuch-show-all-tags-list t) - -;; Keymaps -(defun rul/capture-mail() - "Capture mail to org mode." - (interactive) - (org-store-link nil) - (org-capture nil "m") - ) - -(bind-key "c" 'rul/capture-mail notmuch-show-mode-map) - -(define-key notmuch-show-mode-map "R" 'notmuch-show-reply) -(define-key notmuch-search-mode-map "R" 'notmuch-search-reply-to-thread) - -; Spam -(define-key notmuch-show-mode-map "S" - (lambda () - "mark message as spam" - (interactive) - (notmuch-show-tag (list "+spam" "-inbox" "-unread")))) - -(define-key notmuch-search-mode-map "S" - (lambda (&optional beg end) - "mark thread as spam" - (interactive (notmuch-search-interactive-region)) - (notmuch-search-tag (list "+spam" "-inbox" "-unread") beg end))) - -; Archive -(setq notmuch-archive-tags (list "-inbox" "+archive")) -(define-key notmuch-show-mode-map "A" - (lambda () - "archive" - (interactive) - (notmuch-show-tag (list "+archive" "-inbox" "-unread")) - (notmuch-refresh-this-buffer))) - -(define-key notmuch-search-mode-map "A" - (lambda (&optional beg end) - "archive thread" - (interactive (notmuch-search-interactive-region)) - (notmuch-search-tag (list "+archive" "-inbox" "-unread") beg end) - (notmuch-refresh-this-buffer))) - -; Mark as read -(define-key notmuch-search-mode-map "r" - (lambda (&optional beg end) - "mark thread as read" - (interactive (notmuch-search-interactive-region)) - (notmuch-search-tag (list "-unread") beg end) - (notmuch-search-next-thread))) - -(define-key notmuch-search-mode-map (kbd "RET") - (lambda () - "Show the selected thread with notmuch-tree if it has more -than one email. Use notmuch-show otherwise." - (interactive) - (if (= (plist-get (notmuch-search-get-result) :total) 1) - (notmuch-search-show-thread) - (notmuch-tree (notmuch-search-find-thread-id) - notmuch-search-query-string - nil - (notmuch-prettify-subject (notmuch-search-find-subject)))))) - -(defun color-inbox-if-unread () (interactive) - (save-excursion - (goto-char (point-min)) - (let ((cnt (car (process-lines "notmuch" "count" "tag:inbox and tag:unread")))) - (when (> (string-to-number cnt) 0) - (save-excursion - (when (search-forward "inbox" (point-max) t) - (let* ((overlays (overlays-in (match-beginning 0) (match-end 0))) - (overlay (car overlays))) - (when overlay - (overlay-put overlay 'face '((:inherit bold) (:foreground "green"))))))))))) - -(defvar notmuch-hello-refresh-count 0) -(defun notmuch-hello-refresh-status-message () - (let* ((new-count - (string-to-number - (car (process-lines notmuch-command "count")))) - (diff-count (- new-count notmuch-hello-refresh-count))) - (cond - ((= notmuch-hello-refresh-count 0) - (message "You have %s messages." - (notmuch-hello-nice-number new-count))) - ((> diff-count 0) - (message "You have %s more messages since last refresh." - (notmuch-hello-nice-number diff-count))) - ((< diff-count 0) - (message "You have %s fewer messages since last refresh." - (notmuch-hello-nice-number (- diff-count))))) - (setq notmuch-hello-refresh-count new-count))) - -(add-hook 'notmuch-hello-refresh-hook 'color-inbox-if-unread) -(add-hook 'notmuch-hello-refresh-hook 'notmuch-hello-refresh-status-message) - -(setq notmuch-hello-sections '(notmuch-hello-insert-saved-searches - notmuch-hello-insert-search - notmuch-hello-insert-recent-searches - notmuch-hello-insert-alltags - )) - -;; https://git.sr.ht/~tslil/dotfiles/tree/4e51afbb/emacs/notmuch-config.el#L76-82 -(defmacro make-binds (mode-map binds argfunc &rest body) - "Create keybindings in `mode-map' using a list of (keystr . arg) -pairs in `binds' of the form ( ... (argfunc arg) body)." - `(progn ,@(mapcar (lambda (pair) - `(define-key ,mode-map (kbd ,(car pair)) - (lambda () (interactive) (,argfunc ,(cdr pair)) ,@body))) - (eval binds)))) - -(defvar notmuch-hello-tree-searches '(("u" . "tag:unread") - ("i" . "tag:inbox") - ("*" . "*")) - "List of (key . query) pairs to bind in notmuch-hello.") - -(make-binds notmuch-hello-mode-map - notmuch-hello-tree-searches - notmuch-search) |