diff options
author | William Carroll <wpcarro@gmail.com> | 2020-02-14T15·38+0000 |
---|---|---|
committer | William Carroll <wpcarro@gmail.com> | 2020-02-14T15·38+0000 |
commit | 0456a1c4b4405da2681296b2250681454637d80f (patch) | |
tree | 89b472aa0277ce7d7e23f4bdfa4df8b3d1cb8818 /emacs/.emacs.d | |
parent | 8105af7b8d9584c354568d8d49c8354d20018387 (diff) |
Define notmuch KBDs
Until I have more opinions about my workflow with notmuch, I will redefine the KBDs from Gmail that I'm comfortable with. While not many KBDs are defined here, evil-collection defines dozens, many of which I find reasonable; those that I disagree with, I've unbound in this commit. Composing emails in notmuch feels similar to writing a commit message with magit. I want to be able to type :x or :wq, but these commands don't DWIM. For magit, I'd like that behavior to be the same as `C-c C-c`; not surprisingly, for notmuch, I'd like the same. I've bound :x to do this for notmuch. I'd like to define a macro that can easily define buffer-local evil-ex commands for particular modes. This should lower the cost of defining evil-ex commands and hopefully convince me to support some of this desired behavior.
Diffstat (limited to 'emacs/.emacs.d')
-rw-r--r-- | emacs/.emacs.d/wpc/keybindings.el | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/emacs/.emacs.d/wpc/keybindings.el b/emacs/.emacs.d/wpc/keybindings.el index c9af5b48d1e9..f756e48dbe99 100644 --- a/emacs/.emacs.d/wpc/keybindings.el +++ b/emacs/.emacs.d/wpc/keybindings.el @@ -21,6 +21,7 @@ (require 'buffer) (require 'display) (require 'device) +(require 'evil-ex) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Configuration @@ -85,5 +86,48 @@ "D0" #'display/disable-4k "D1" #'display/enable-4k)) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; notmuch +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; evil-collection adds many KBDs to notmuch modes. Some of these I find +;; disruptive. +(general-define-key + :states '(normal) + :keymaps '(notmuch-show-mode-map) + "M-j" nil + "M-k" nil + "<C-S-iso-lefttab>" #'notmuch-show-previous-thread-show + "<C-tab>" #'notmuch-show-next-thread-show + "e" #'notmuch-show-archive-message-then-next-or-next-thread) + +;; TODO(wpcarro): Consider moving this to a separate module +(defun evil-ex-define-cmd-local (cmd f) + "Define CMD to F locally to a buffer." + (unless (local-variable-p 'evil-ex-commands) + (setq-local evil-ex-commands (copy-alist evil-ex-commands))) + (evil-ex-define-cmd cmd f)) + +;; TODO(wpcarro): Support a macro that can easily define evil-ex commands for a +;; particular mode. +;; Consumption: +;; (evil-ex-for-mode 'notmuch-message-mode +;; "x" #'notmuch-mua-send-and-exit) + +(add-hook 'notmuch-message-mode-hook + (lambda () + (evil-ex-define-cmd-local "x" #'notmuch-mua-send-and-exit))) + +;; For now, I'm mimmicking Gmail KBDs that I have memorized and enjoy +(general-define-key + :states '(normal) + :keymaps '(notmuch-search-mode-map) + "e" #'notmuch-search-archive-thread) + +(general-define-key + :states '(normal) + :prefix "<SPC>" + "gn" #'notmuch) + (provide 'keybindings) ;;; keybindings.el ends here |