diff options
| -rw-r--r-- | _spacemacs.d/config/my-mu4e.el | 111 | 
1 files changed, 69 insertions, 42 deletions
| diff --git a/_spacemacs.d/config/my-mu4e.el b/_spacemacs.d/config/my-mu4e.el index 06f4adf..3cb3267 100644 --- a/_spacemacs.d/config/my-mu4e.el +++ b/_spacemacs.d/config/my-mu4e.el @@ -345,64 +345,91 @@  ;;; Key bindings for Evil  ;; Credits: -;; https://github.com/philc/emacs-config - .emacs.d/elisp/mu4e-mode-personal.el - -(dolist (mode '(mu4e-mode -                mu4e-main-mode -                mu4e-headers-mode -                mu4e-view-mode -                mu4e-compose-mode)) -  (evil-set-initial-state mode 'normal)) +;; * https://github.com/philc/emacs-config +;;   .emacs.d/elisp/mu4e-mode-personal.el +;; * https://github.com/JorisE/evil-mu4e +;; * Guide for using Emacs with Evil +;;   https://github.com/noctuid/evil-guide +;;  (with-eval-after-load 'mu4e -  (evil-make-overriding-map mu4e-main-mode-map 'normal t) -  (evil-define-key 'normal mu4e-main-mode-map +  (require 'evil) +  (require 'evil-leader) + +  ;; Set all mu4e modes (except for `mu4e-compose-mode') to start in +  ;; `evil-motion-state'. +  ;; NOTE: The `evil-leader' by default does not work in `evil-motion-state'! +  ;;       (see: https://github.com/cofi/evil-leader/issues/1 ) +  (dolist (mode '(mu4e-main-mode +                  mu4e-headers-mode +                  mu4e-view-mode +                  mu4e-org-mode)) +    (evil-set-initial-state mode 'motion)) +  ;; Set `mu4e-compose-mode' to start in `evil-normal-state' +  (evil-set-initial-state 'mu4e-compose-mode 'normal) + +  ;; mu4e main mode +  ;; +  ;; Copy the original `mu4e-main-mode-map' and give it precedence over +  ;; evil's default `motion' keymap, therefore, we only need to define +  ;; several necessary keys as done below. +  ;; See: https://github.com/syl20bnr/spacemacs/wiki/Keymaps-guide +  ;; +  (evil-make-overriding-map mu4e-main-mode-map 'motion t) +  ;; +  ;; Override the above copied `mu4e-main-mode-map' +  (evil-define-key 'motion mu4e-main-mode-map +    (kbd "TAB") 'evil-forward-paragraph +    "0"  'evil-beginning-of-line +    "$"  'evil-end-of-line      "J"  'mu4e~headers-jump-to-maildir      "j"  'evil-next-line      "k"  'evil-previous-line) -  (evil-make-overriding-map mu4e-headers-mode-map 'normal t) -  (evil-define-key 'normal mu4e-headers-mode-map + +  ;; mu4e headers mode +  (evil-make-overriding-map mu4e-headers-mode-map 'motion t) +  (evil-define-key 'motion mu4e-headers-mode-map      "gg" 'evil-goto-first-line +    "gl" 'mu4e-show-log +    "gr" 'mu4e-headers-rerun-search      "J"  'mu4e~headers-jump-to-maildir -    "j"  'mu4e-headers-next -    "k"  'mu4e-headers-prev -    "]"  'mu4e-headers-next-unread -    "["  'mu4e-headers-prev-unread -    "C"  'mu4e-compose-new -    "E"  'mu4e-compose-edit -    "F"  'mu4e-compose-forward -    "R"  'mu4e-compose-reply) -  (evil-leader/set-key-for-mode 'mu4e-headers-mode -    "u" '(lambda () (interactive) (mu4e-update-mail-and-index t))) -  ;; -  (evil-make-overriding-map mu4e-view-mode-map 'normal t) -  (evil-define-key 'normal mu4e-view-mode-map +    "j"  'evil-next-line +    "k"  'evil-previous-line +    "0"  'evil-beginning-of-line +    "$"  'evil-end-of-line +    "v"  'evil-visual-line) + +  ;; mu4e view mode +  (evil-make-overriding-map mu4e-view-mode-map 'motion t) +  (evil-define-key 'motion mu4e-view-mode-map      "gg"   'evil-goto-first-line -    "j"    'evil-next-line -    "k"    'evil-previous-line -    "y"    'evil-yank -    "Y"    'evil-yank-line +    "gl"   'mu4e-show-log +    "gu"   'mu4e-view-go-to-url      "\C-j" 'mu4e-view-headers-next      "\C-k" 'mu4e-view-headers-prev -    "\C-]" 'mu4e-view-headers-next-unread -    "\C-[" 'mu4e-view-headers-prev-unread -    "C"    'mu4e-compose-new -    "E"    'mu4e-compose-edit -    "F"    'mu4e-compose-forward -    "R"    'mu4e-compose-reply) -  (evil-leader/set-key-for-mode 'mu4e-view-mode -    "u" '(lambda () (interactive) (mu4e-update-mail-and-index t)) -    "x" '(lambda () (interactive) (helm-M-x)) -    "s" 'mu4e-view-raw-message) -  ;; +    "H"    'mu4e-view-toggle-html +    "j"    'evil-next-line +    "k"    'evil-previous-line +    "0"    'evil-beginning-of-line +    "$"    'evil-end-of-line +    "v"    'evil-visual-char +    "V"    'evil-visual-line +    "y"    'evil-yank) + +  ;; mu4e compose mode (start in `evil-normal-state')    (evil-make-overriding-map mu4e-compose-mode-map 'normal t)    (evil-leader/set-key-for-mode 'mu4e-compose-mode      "," 'message-send-and-exit      "c" 'message-send-and-exit      "d" 'message-dont-send      "k" 'mu4e-message-kill-buffer -    "a" 'mml-attach-file) -  )  ;; with-eval-after-load 'mu4e +    "a" 'mml-attach-file +    "s" 'mml-secure-message-sign +    "e" 'mml-secure-message-encrypt +    ";" 'mu4e-context-switch) + +  ;; END: with-eval-after-load 'mu4e +  )  (provide 'my-mu4e) | 
