From: Ian Kelling Date: Thu, 30 Mar 2017 22:56:32 +0000 (-0700) Subject: various updates, mail X-Git-Url: https://iankelling.org/git/?p=dot-emacs;a=commitdiff_plain;h=a5e731477f1535eb05c207de961c3fbf9a1037a8 various updates, mail --- diff --git a/.gitignore b/.gitignore index 57615fe..887888e 100644 --- a/.gitignore +++ b/.gitignore @@ -24,7 +24,7 @@ /tramp /url /emacs-disabled - +/session.* *.elc # artifacts I create diff --git a/init.el b/init.el index e1aa352..6b279ca 100644 --- a/init.el +++ b/init.el @@ -54,7 +54,6 @@ (require 'bbdb-loaddefs "~/.emacs.d/src/bbdb/lisp/bbdb-loaddefs.el") (setq bbdb-print-tex-path "~/.emacs.d/src/bbdb/tex") -(toggle-debug-on-error) ;;(add-hook 'server-visit-hook 'raise-frame) diff --git a/my-init.org b/my-init.org index 65808da..1c98c88 100644 --- a/my-init.org +++ b/my-init.org @@ -200,7 +200,11 @@ forward/backward word C-M-d swap buffers across windows +shell-cd-to-file +M-2 +* TODO add simpler keybind for make-frame-command +current one is C-x 5 2. * TODO learn some more ivy mode stuff * TODO declarative package installations, @@ -210,6 +214,9 @@ with documentation. causes emacs to freeze until I kill -9 it. * TODO make a keybind to print var under cursor and actually, putting the start of it in th emodeline might be cool +* TODO make recent files save periodically, +normally it just saves on exit, but half the time I don't exit cleanly +so they don't get saved, because I leave emacs running until it crashes * TODO fix undo tree outside visible buffer bug * TODO c- in shell mode should send over previous line if current line is empty @@ -573,6 +580,8 @@ I need this function here, where INSIDE_EMACS is replaced with RLC_INSIDE_EMACS. (when (and my-as (buffer-file-name) + ;; mu4e has a bug right now, undo breaks when saving drafts + (not (string= (buffer-file-name) "*draft*")) (buffer-modified-p) (not (org-src-edit-buffer-p))) (let (message-log-max) @@ -733,6 +742,7 @@ seems they are created (add-to-list 'load-path "~/.emacs.d/src/bbdb-csv-import") (require 'bbdb-csv-import) + #+end_src * bookmark settings @@ -915,6 +925,108 @@ Things I tried which didn't work, which intuitively I think should work better: (put 'dired-find-alternate-file 'disabled nil) #+end_src +* mu4e +[[info:org#External links]] +[[info:mu4e#Keybindings]] + +alsot tried notmuch, it had some glitches, and it's config +has a list of folders which i'd rather not publish, so it's config is archived. + +#+begin_src emacs-lisp +;;(add-to-list 'load-path "/usr/local/share/emacs/site-lisp/mu4e") +(require 'mu4e) +(setq send-mail-function (quote sendmail-send-it) ;; common to gnus also + mu4e-maildir "/m/4e" + ;; use the standard imap folders + mu4e-sent-folder "/Sent" + mu4e-drafts-folder "/Drafts" + mu4e-trash-folder "/Trash" + ;; standard imap folder is /Archive, but I've set this to /Junk, + ;; because I don't manually archive individual messages, and mu4e + ;; is lacking a button to move to the spam folder "Junk", and I + ;; want one to train spamassassin better. Note: It calls + ;; archiving "refiling", so it's bound to r. + mu4e-refile-folder "/Junk" + ;; reindex new mail this often in seconds + ;; show addresses instead of just names + mu4e-view-show-addresses t + mu4e-use-fancy-chars t + mu4e-confirm-quit nil + mu4e-headers-leave-behavior 'apply ;; dont ask, do whatever was marked + mu4e-headers-fields (delq (assoc :mailing-list mu4e-headers-fields) mu4e-headers-fields) + ;; a bit faster than the default 500. trying out the default for now + ;;mu4e-headers-results-limit 80 + + ;; looking up the list of maildirs when doing jo from summary + ;; can take a few seconds if we have a ton of messages. + ;; Only take that time for the first lookup. + ;; if we add a new maildir, just restart mu4e for it to be in that list. + mu4e-cache-maildir-list t + ;; default is 8, way too small for my big monitors + mu4e-headers-visible-lines 50 + ) + +;; fucks up reading unread bookmark. when that is fixed, enable it +;; (setq mu4e-update-interval 60) + + +;; this file includes setting up my email addresses, which are not public, +;; including +;; mu4e-user-mail-address-list +;; and a function +;; inspired by mu4e info manual, search for mu4e-compose-pre-hook. +(load "/p/c/mu4e.el") + +;; it's implemented in mu4e, but not in the actions list for +;; some reason. +(add-to-list 'mu4e-view-actions + '("browser view" . mu4e-action-view-in-browser) t) +(setq mu4e-maildir-shortcuts + '( ("/INBOX" . ?i) + ("/github" . ?g) + ("/zroe" . ?z) + ("/Drafts" . ?d) + ("/Sent" . ?d) + )) + +;; normally, you would add to this, but we want to +;; modify unread messages. the first 4 are defined by default. +(setq mu4e-bookmarks + `( ,(make-mu4e-bookmark + :name "Unread messages" + :query "flag:unread AND NOT flag:trashed AND NOT maildir:/Junk AND NOT maildir:/fwfw" + :key ?u) + ,(make-mu4e-bookmark + :name "Today's messages" + :query "date:today..now" + :key ?t) + ,(make-mu4e-bookmark + :name "Last 7 days" + :query "date:7d..now" + :key ?w) + ,(make-mu4e-bookmark + :name "Messages with images" + :query "mime:image/*" + :key ?p)) + ) + + +(defun mu4e-action-msgs-by-this-sender (msg) + "In header view, view messages by the sender of the message under point." + (let ((from (mu4e-message-field msg :from))) + (unless from + (mu4e-error "No from header for this message")) + ;; from is structured like: (("Anacron" . "root@x2.lan")) + (mu4e-headers-search (concat "f:" (cdar from))))) + +(add-to-list 'mu4e-headers-actions + '("from this sender" . mu4e-action-msgs-by-this-sender) t) +(add-to-list 'mu4e-view-actions + '("from this sender" . mu4e-action-msgs-by-this-sender) t) +#+end_src + + + * disabled but saved for documentation purposes :PROPERTIES: :header-args: :tangle no @@ -1148,55 +1260,6 @@ seems like 1 in 100 times, an invisible command to restore prompt didn't work -** mu4e - -alsot tried notmuch, it had some glitches, and it's config -has a list of folders which i'd rather not publish, so it's config is archived. - -#+begin_src emacs-lisp -(add-to-list 'load-path "/usr/local/share/emacs/site-lisp/mu4e") -(require 'mu4e) -(setq send-mail-function (quote sendmail-send-it) ;; common to gnus also - mu4e-sent-folder "/Sent Items" - mu4e-drafts-folder "/Drafts" - mu4e-trash-folder "/Trash" - mu4e-refile-folder "/Archive" - mu4e-get-mail-command "offlineimap" - mu4e-update-interval 60 - mu4e-sent-messages-behavior 'delete - mu4e-use-fancy-chars t - mu4e-confirm-quit nil - mu4e-headers-leave-behavior 'apply ;; dont ask - mu4e-headers-fields (delq (assoc :mailing-list mu4e-headers-fields) mu4e-headers-fields) - ;; a bit faster than the default 500 - mu4e-headers-results-limit 80) - -(define-key mu4e-headers-mode-map (kbd "") 'mu4e-headers-view-message) - -(defun my-mu4e-to () - "inspired by mu4e info manual" - (--reduce-from (if (mu4e-message-contact-field-matches - mu4e-compose-parent-message :to (cadr it)) - (concat (car it) (cadr it)) - acc) - '("Ian Kelling ") - ;; ("Ian Kelling " "")) - )) - -(add-hook 'mu4e-compose-pre-hook 'my-mu4e-to) - -(add-to-list 'mu4e-view-actions - '("ViewInBrowser" . mu4e-action-view-in-browser) t) -(setq mu4e-maildir-shortcuts - '( ("/INBOX" . ?i) - ("/bog" . ?b) - ("/Drafts" . ?d))) - -#+end_src - - - ** org-mode auto-complete source @@ -1235,6 +1298,13 @@ this looks nice, but it lags gnus just a bit ** misc #+begin_src emacs-lisp +;; this makes more ergonomic sense, since our eyes are mostly on the left, +;; but after using it a while, it's too much cognitive dissonance that +;; every other program has it on the right +;;(set-scroll-bar-mode 'left) + + + ; todo, is this require things necessary? ; (require 'flyspell) @@ -2247,7 +2317,6 @@ currently makes emacs hang a bunch. dunno why. just using eclipse instead (blink-cursor-mode '(-4)) (menu-bar-mode -1) (tool-bar-mode -1) -(set-scroll-bar-mode 'left) ;; enable various commands @@ -3674,6 +3743,9 @@ to use with up and down. #+begin_src emacs-lisp (global-set-key (kbd "C-x C-b") 'ibuffer) #+end_src + +*** C-x r c +rectangular clear, replace area with whitespace ** gnus searching overview. 3 types: @@ -3736,6 +3808,9 @@ E = expired M-& apply process mark to a non-process mark command *** S D e] edit as new +*** T k / C-M-k +maybe rebind this to a shorter keybind, like del +gnus-summary-kill-thread ** message mode *** C-ck] discard message