Emacs: Evil: Use 'motion as initial state in most special modes

master
Pierre Neidhardt 2017-07-24 15:25:45 +01:00
parent c6d6652a32
commit ece02e0901
6 changed files with 37 additions and 38 deletions

View File

@ -1,8 +1,8 @@
;;; Evil+Elfeed
(evil-set-initial-state 'elfeed-search-mode 'normal)
(evil-set-initial-state 'elfeed-search-mode 'motion)
(evil-define-key 'normal elfeed-search-mode-map
(evil-define-key 'motion elfeed-search-mode-map
(kbd "<return>") 'elfeed-search-show-entry
"R" 'elfeed-search-fetch
"S" 'elfeed-search-set-filter

View File

@ -1,6 +1,7 @@
;;; Evil+EMMS
(dolist (mode '(emms-browser-mode emms-playlist-mode))
(evil-set-initial-state mode 'normal))
(evil-set-initial-state mode 'motion))
(defun evil/emms-playlist-mode-insert-newline-above ()
"Insert a newline above point."

View File

@ -1,10 +1,10 @@
;;; Evil+Package-menu-mode
(evil-set-initial-state 'package-menu-mode 'normal)
(evil-define-key 'normal package-menu-mode-map "q" 'quit-window)
(evil-define-key 'normal package-menu-mode-map "i" 'package-menu-mark-install)
(evil-define-key 'normal package-menu-mode-map "U" 'package-menu-mark-upgrades)
(evil-define-key 'normal package-menu-mode-map "u" 'package-menu-mark-unmark)
(evil-define-key 'normal package-menu-mode-map "d" 'package-menu-mark-delete)
(evil-define-key 'normal package-menu-mode-map "x" 'package-menu-execute)
(evil-set-initial-state 'package-menu-mode 'motion)
(evil-define-key 'motion package-menu-mode-map "q" 'quit-window)
(evil-define-key 'motion package-menu-mode-map "i" 'package-menu-mark-install)
(evil-define-key 'motion package-menu-mode-map "U" 'package-menu-mark-upgrades)
(evil-define-key 'motion package-menu-mode-map "u" 'package-menu-mark-unmark)
(evil-define-key 'motion package-menu-mode-map "d" 'package-menu-mark-delete)
(evil-define-key 'motion package-menu-mode-map "x" 'package-menu-execute)
(provide 'init-evil-package)

View File

@ -1,9 +1,9 @@
;;; Evil+pdftools
(dolist (mode '(pdf-view-mode)) ; TODO: Add other modes?
(evil-set-initial-state mode 'normal))
;; TODO: Add other modes? Looks like it's not needed.
(evil-set-initial-state 'pdf-view-mode 'motion)
(evil-define-key 'normal pdf-view-mode-map
(evil-define-key 'motion pdf-view-mode-map
(kbd "<return>") 'image-next-line
"j" 'pdf-view-next-line-or-next-page
"k" 'pdf-view-previous-line-or-previous-page
@ -67,9 +67,9 @@
"zm" 'pdf-view-midnight-minor-mode
"zp" 'pdf-view-printer-minor-mode)
(evil-define-key 'normal pdf-outline-minor-mode-map "o" 'pdf-outline)
(evil-define-key 'motion pdf-outline-minor-mode-map "o" 'pdf-outline)
(evil-define-key 'normal pdf-occur-buffer-mode-map
(evil-define-key 'motion pdf-occur-buffer-mode-map
(kbd "RET") 'pdf-occur-goto-occurrence
"\C-o" 'pdf-occur-view-occurrence
(kbd "SPC") 'pdf-occur-view-occurrence

View File

@ -1,8 +1,8 @@
;;; Evil+Transmission
(evil-set-initial-state 'transmission-mode 'normal)
(evil-set-initial-state 'transmission-mode 'motion)
(evil-define-key 'normal transmission-mode-map
(evil-define-key 'motion transmission-mode-map
(kbd "<return>") 'transmission-files
"D" 'transmission-delete
"S" 'tabulated-list-sort
@ -20,7 +20,7 @@
"c" 'transmission-verify
"C" 'transmission-set-bandwidth-priority)
(evil-define-key 'normal transmission-files-mode-map
(evil-define-key 'motion transmission-files-mode-map
(kbd "<return>") 'transmission-find-file
"\M-l" 'transmission-display-file
"!" 'transmission-files-command
@ -38,7 +38,7 @@
"U" 'transmission-files-want
"C" 'transmission-files-priority)
(evil-define-key 'normal transmission-info-mode-map
(evil-define-key 'motion transmission-info-mode-map
"r" 'transmission-trackers-remove
"c" 'transmission-copy-magnet
"d" 'transmission-set-torrent-download
@ -51,7 +51,7 @@
"I" 'transmission-trackers-add
"C" 'transmission-set-bandwidth-priority)
(evil-define-key 'normal transmission-peers-mode-map
(evil-define-key 'motion transmission-peers-mode-map
"S" 'tabulated-list-sort
"i" 'transmission-info
"q" 'quit-window)

View File

@ -90,23 +90,6 @@ See `eshell' for the numeric prefix ARG."
"G" 'helm-grep-git-all-or-ag
"r" 'helm-resume))
;; Motion map: useful for `Info-mode', `help-mode', etc.
;; See `evil-motion-state-modes'.
(evil-global-set-key 'motion (kbd "TAB") 'forward-button)
(evil-global-set-key 'motion (kbd "<backtab>") 'backward-button)
(evil-define-key 'motion Info-mode-map
(kbd "S-SPC") 'Info-scroll-up
"\C-f" 'Info-scroll-up
"\C-b" 'Info-scroll-down
"\M-sf" 'Info-goto-node
"gg" 'evil-goto-first-line)
(evil-define-key 'motion help-mode-map
(kbd "S-SPC") 'scroll-up-command
"\C-f" 'scroll-up-command
"\C-b" 'scroll-down-command
"\C-o" 'help-go-back)
;;; Term mode should be in emacs state. It confuses 'vi' otherwise.
;;; Upstream will not change this:
;;; https://github.com/emacs-evil/evil/issues/854#issuecomment-309085267
@ -198,7 +181,22 @@ See `eshell' for the numeric prefix ARG."
;; TODO: Use motion map for package, transmission, emms, elfeed...?
;; Motion map: useful for `Info-mode', `help-mode', etc.
;; See `evil-motion-state-modes'.
(evil-global-set-key 'motion (kbd "TAB") 'forward-button)
(evil-global-set-key 'motion (kbd "<backtab>") 'backward-button)
(evil-define-key 'motion Info-mode-map
(kbd "S-SPC") 'Info-scroll-up
"\C-f" 'Info-scroll-up
"\C-b" 'Info-scroll-down
"\M-sf" 'Info-goto-node
"gg" 'evil-goto-first-line)
(evil-define-key 'motion help-mode-map
(kbd "S-SPC") 'scroll-up-command
"\C-f" 'scroll-up-command
"\C-b" 'scroll-down-command
"\C-o" 'help-go-back)
(with-eval-after-load 'transmission (require 'init-evil-transmission))
(with-eval-after-load 'elfeed (require 'init-evil-elfeed))