diff --git a/evil-collection-info.el b/evil-collection-info.el
index 4c0b24c..efea2fa 100644
--- a/evil-collection-info.el
+++ b/evil-collection-info.el
@@ -24,8 +24,8 @@
;; see .
;;; Commentary:
-;; The default bindings in motion state override the standard
-;; movement keys. This package restores them.
+;; The default bindings in motion state override the standard movement keys.
+;; This package uses normal state and redefines everything.
;;; Code:
(require 'evil)
@@ -34,35 +34,45 @@
(defun evil-collection-info-setup ()
"Set up `evil' bindings for `info-mode'."
- (evil-define-key 'motion Info-mode-map
- ;; motion: Restore some Evil keys that got overriden.
- "w" 'evil-forward-word-begin
- "e" 'evil-forward-word-end
- "ge" 'evil-backward-word-end
- "gE" 'evil-backward-WORD-end
- "b" 'evil-backward-word-begin
- "gg" 'evil-goto-first-line
- "t" 'evil-find-char-to
- "T" 'evil-find-char-to-backward
- "f" 'evil-find-char
-
- "?" evil-collection-evil-search-backward
- "/" evil-collection-evil-search-forward
- "n" evil-collection-evil-search-next
- "N" evil-collection-evil-search-previous
-
+ (evil-collection-inhibit-insert-state Info-mode-map)
+ (evil-set-initial-state 'Info-mode 'normal)
+ (evil-define-key 'normal Info-mode-map
(kbd "") 'Info-next-reference
(kbd "S-") 'Info-prev-reference
+ ;; From evil-integration.el.
+ "0" 'evil-digit-argument-or-evil-beginning-of-line
+ (kbd "M-h") 'Info-help ; "h"
+ (kbd "C-t") 'Info-history-back ; "l"
+ (kbd "C-o") 'Info-history-back
+ " " 'Info-scroll-up
+ (kbd "C-]") 'Info-follow-nearest-node
+ (kbd "DEL") 'Info-scroll-down
+ ;; Add "C-i" for consistency.
+ (kbd "C-i") 'Info-history-forward
+
+ "d" 'Info-directory
+ "u" 'Info-up
+ "L" 'Info-history
+ "s" 'Info-search
+ "S" 'Info-search-case-sensitively
+ "i" 'Info-index
+ "I" 'Info-virtual-index
+ "a" 'info-apropos
+
+ ;; TODO: Restore digit arguments? Use g[n] instead.
+
;; TODO: Should search with "n"/"N" cover the full manual like "C-s"/"C-r" does?
+ ;; TODO: Directions?
+ "n" 'isearch-repeat-forward
+ "N" 'isearch-repeat-backward
;; goto
"gd" 'Info-goto-node ; TODO: "gd" does not match the rationale of "go to definition". Change?
+ "gm" 'Info-menu
"gt" 'Info-top-node
"gT" 'Info-toc
"gf" 'Info-follow-reference
- (kbd "C-o") 'Info-history-back
- (kbd "C-i") 'Info-history-forward
;; TODO: "[" and "]" are Emacs default for fine-grained browsing.
;; We usually use "C-j"/"C-k" for that.
(kbd "C-j") 'Info-next
@@ -71,7 +81,6 @@
"gk" 'Info-prev
(kbd "M-w") 'Info-copy-current-node-name ; TODO: Use yn?
- "p" nil
;; quit
"q" 'Info-exit