From 9050b7ea3522db8416c79776fb21090906a91f63 Mon Sep 17 00:00:00 2001 From: Thanos Apollo Date: Mon, 29 Jul 2024 19:28:06 +0300 Subject: emacs: Replace mu4e with notmuch. --- .config/emacs/init.el | 153 +++++++++++++++++--------------------------------- 1 file changed, 50 insertions(+), 103 deletions(-) (limited to '.config') diff --git a/.config/emacs/init.el b/.config/emacs/init.el index 18c55d7..6856bce 100644 --- a/.config/emacs/init.el +++ b/.config/emacs/init.el @@ -1004,111 +1004,58 @@ By default, returns all jabber related buffers format." :defer t) (when (or is-zeus is-hermes) - (use-package mu4e - :straight nil - :ensure nil + (use-package notmuch + :ensure t + :commands notmuch-hello + :bind (("C-x m" . notmuch-hello) + :map notmuch-hello-mode-map + ("U" . thanos/notmuch-update) + ("u" . notmuch-hello-update) + :map notmuch-search-mode-map + ("u" . notmuch-refresh-all-buffers)) + :hook ((notmuch-hello-mode . (lambda () (display-line-numbers-mode 0))) + (notmuch-search-mode . (lambda () (display-line-numbers-mode 0) (emojify-mode)))) :config - (require 'server) - (require 'mu4e) - - (setf mu4e-get-mail-command "mbsync -a") - - ;; (when (and is-zeus (server-running-p)) - ;; (setf mu4e-update-interval (* 10 60))) - - (defun set-mu4e-context (context-name full-name mail-address signature) - "Return a mu4e context named CONTEXT-NAME with :match-func matching - folder name CONTEXT-NAME in Maildir. The context's `user-mail-address', - `user-full-name' and `mu4e-compose-signature'`smtpmail-smpt-server' is set to MAIL-ADDRESS - FULL-NAME SIGNATURE and SERVER respectively. - Special folders are set to context specific folders." - (let ((dir-name (concat "/" context-name))) - (make-mu4e-context - :name context-name - ;; we match based on the maildir of the message - :match-func - `(lambda (msg) - (when msg - (string-match-p - ,(concat "^" dir-name) - (mu4e-message-field msg :maildir)))) - :vars - `((user-mail-address . ,mail-address) - (user-full-name . ,full-name) - (mu4e-sent-folder . ,(concat dir-name "/Sent")) - (mu4e-drafts-folder . ,(concat dir-name "/Drafts")) - (mu4e-trash-folder . ,(concat dir-name "/Trash")) - (mu4e-trash-folder . ,(concat dir-name "/Starred")) - (mu4e-refile-folder . ,(concat dir-name "/Archive")) - (mu4e-compose-signature . ,signature))))) - - ;;Fixing duplicate UID errors when using mbsync and mu4e - (setf mu4e-change-filenames-when-moving t - mu4e-maildir-shortcuts - '(("/Fastmail/Inbox" . ?i) - ("/Drafts" . ?d) - ("/Sent" . ?s) - ("/Fastmail/Emacs/dev" . ?e) - ("/MUSofia/[Gmail]/All Mail" . ?u) - ("/Fastmail/Guix/dev" . ?g))) - - (setf mu4e-contexts - (list - (make-mu4e-context - :name "Public" - :match-func - (lambda (msg) - (when msg - (string-prefix-p "/Fastmail" (mu4e-message-field msg :maildir)))) - :vars '((user-mail-address . "public@thanosapollo.org") - (user-full-name . "Thanos Apollo") - (smtpmail-smtp-server . "smtp.fastmail.com") - (smtpmail-smtp-service . 465) - (smtpmail-stream-type . ssl) - (mu4e-drafts-folder . "/Drafts") - (mu4e-sent-folder . "/Sent") - (mu4e-refile-folder . "/Archive") - (mu4e-trash-folder . "/Trash"))) - (make-mu4e-context - :name "MUSofia" - :match-func - (lambda (msg) - (when msg - (string-prefix-p "/MUSofia" (mu4e-message-field msg :maildir)))) - :vars '((user-mail-address . "104111@students.mu-sofia.bg") - (user-full-name . "Thanos Apollo") - (smtpmail-smtp-server . "smtp.gmail.com") - (smtpmail-smtp-service . 465) - (smtpmail-stream-type . ssl))))) - - (setf message-send-mail-function 'smtpmail-send-it - mu4e-compose-signature "\nThanos Apollo\n \nhttps://thanosapollo.org\n -62B7 58D0 F671 9938 BC09 CECA 339F 736C 3A72 0928\n" - mu4e-compose-context-policy 'ask) - - (setf mu4e-view-actions - (delete-dups - (append - '(("gapply git patches" . mu4e-action-git-apply-patch) - ("mgit am patch" . mu4e-action-git-apply-mbox) - ("bb4 am patch" . mu4e-action-git-apply-b4) - ("ssetup reword list with b4" . mu4e-action-setup-reword-b4) - ("crun checkpatch script" . my-mu4e-action-run-check-patch) - ("MCheck if merged" . my-mu4e-action-check-if-merged))))) - - (define-minor-mode mu4e-mode - "Fix for mu4e mode guix (undefined)." - :global t - :group 'mu4e - :lighter nil - (message "mu4e mode")) + (defun thanos/notmuch-update () + (interactive) + (let ((default-directory "~/") + (new-buffer (generate-new-buffer "*notmuch update*")) + (height (max 5 (truncate (* (frame-height) 0.1)))) + (command "mbsync -a; ./.scripts/notmuch-hook.sh")) + (split-window-vertically (- height)) + (other-window 1) + (switch-to-buffer new-buffer) + (let ((proc (async-shell-command command new-buffer))) + (set-process-sentinel + (get-buffer-process new-buffer) + (lambda (process event) + (when (memq (process-status process) '(exit signal)) + (delete-window (get-buffer-window (process-buffer process))) + (kill-buffer (process-buffer process)))))))) + + (setf notmuch-archive-tags '("-inbox" "-unread" "+archived") + notmuch-hello-sections '(notmuch-hello-insert-header notmuch-hello-insert-saved-searches notmuch-hello-insert-recent-searches notmuch-hello-insert-alltags notmuch-hello-insert-footer)) + + (setq notmuch-search-oldest-first nil) - :bind (("C-x m" . 'mu4e)) - :hook - ;; Sign messages - ((message-send . 'mml-secure-message-sign-pgpmime) - ;; Disable line numbers & autosave - (mu4e-main-mode . (lambda () (display-line-numbers-mode -1) (auto-save-mode -1)))))) + (setf notmuch-identities '("public@thanosapollo.org" "public@thanosapollo.com" + "104111@students.mu-sofia.bg")) + + (setf notmuch-saved-searches + `((:name "Inbox" :query "tag:inbox" :sort-order newest-first :key ,(kbd "i")) + (:name "Today's message" :query "tag:inbox date:today" :sort-order newest-first + :key ,(kbd "t")) + (:name "sent" :query "tag:sent" :sort-order newest-first :key ,(kbd "s")) + (:name "drafts" :query "tag:draft" :sort-order newest-first :key ,(kbd "d")) + (:name "all mail" :query "*" :sort-order newest-first :key ,(kbd "a")))))) + +;; smtpmail settings +(setf smtpmail-smtp-user "public@thanosapollo.org" + smtpmail-smtp-server "smtp.forwardemail.net" + smtpmail-smtp-service 465 + smtpmail-stream-type 'ssl + message-send-mail-function 'smtpmail-send-it + message-signature "Thanos Apollo\n https://thanosapollo.org") (use-package yasnippet :ensure nil -- cgit v1.2.3