various updates, mail
authorIan Kelling <ian@iankelling.org>
Thu, 30 Mar 2017 22:56:32 +0000 (15:56 -0700)
committerIan Kelling <ian@iankelling.org>
Thu, 30 Mar 2017 22:56:32 +0000 (15:56 -0700)
.gitignore
init.el
my-init.org

index 57615fe9ac3acba8d1eef650d8777eadffefa2cd..887888e2e5755efd5c6530bec06885449acb9a2d 100644 (file)
@@ -24,7 +24,7 @@
 /tramp
 /url
 /emacs-disabled
-
+/session.*
 *.elc
 
 # artifacts I create
diff --git a/init.el b/init.el
index e1aa35291c32461d7619a608c313632eb35d50de..6b279cae0780a9d1c901dfdfe0e7bbf2a8319192 100644 (file)
--- 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)
 
 
index 65808dab5112fb9db39fa54bfc6d69d1ae1f0638..1c98c882a264559deba457bd13a86f0f627618ca 100644 (file)
@@ -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-<delete> 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 "<return>") '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@iankelling.org")
-                 ;;'(("Ian Kelling " "<alternate1@example.com>")
-                 ;;  ("Ian Kelling " "<alternate2@example.com>"))
-                   ))
-
-(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