summaryrefslogtreecommitdiff
path: root/readme.org
diff options
context:
space:
mode:
authorJames Nguyen <james@jojojames.com>2018-03-31 10:21:56 -0700
committerJames Nguyen <james@jojojames.com>2018-03-31 10:21:56 -0700
commitaf8dfc4f7fca376c462144bbe54c1b71cdcff2af (patch)
treee73551052147a8c688d98f63b445d624152273de /readme.org
parent2b4e0d40b4e478ce497ca46da322441e2da443ee (diff)
Format readme with indent-region
Diffstat (limited to 'readme.org')
-rw-r--r--readme.org543
1 files changed, 271 insertions, 272 deletions
diff --git a/readme.org b/readme.org
index 214cf7f..d6d866b 100644
--- a/readme.org
+++ b/readme.org
@@ -12,52 +12,52 @@ some default bindings to change in the future.
** Goals
-1. Reduce context switching: As soon as "moving around" gets hardwired
- to ~<hjkl>~, it becomes frustratingly inefficient not to have it everywhere.
+ 1. Reduce context switching: As soon as "moving around" gets hardwired
+ to ~<hjkl>~, it becomes frustratingly inefficient not to have it everywhere.
-2. Community work: setting up bindings is tremendous work and joining force can
- only save hours for all of Evil users out there. While not everyone may agree
- on the chosen bindings, it helps to have something to start with rather than
- nothing at all. In the end, users are free to override a subset of the proposed
- bindings to best fit their needs.
+ 2. Community work: setting up bindings is tremendous work and joining force can
+ only save hours for all of Evil users out there. While not everyone may agree
+ on the chosen bindings, it helps to have something to start with rather than
+ nothing at all. In the end, users are free to override a subset of the proposed
+ bindings to best fit their needs.
-3. Consistency: Having all bindings defined in one place allows for enforcing
- consistency across special modes and coordinating the community work to define a
- reference implementation.
+ 3. Consistency: Having all bindings defined in one place allows for enforcing
+ consistency across special modes and coordinating the community work to define a
+ reference implementation.
** Installation
-- Get the package, either from MELPA:
+ - Get the package, either from MELPA:
-: M-x package-install RET evil-collection RET
+ : M-x package-install RET evil-collection RET
-Or clone / download this repository and modify your ~load-path~:
+ Or clone / download this repository and modify your ~load-path~:
-: (add-to-list 'load-path (expand-file-name "/path/to/evil-collection/" user-emacs-directory))
+ : (add-to-list 'load-path (expand-file-name "/path/to/evil-collection/" user-emacs-directory))
-- Register the bindings, either all at once with ~evil-collection-init~:
+ - Register the bindings, either all at once with ~evil-collection-init~:
-or mode-by-mode, for instance:
+ or mode-by-mode, for instance:
-: (with-eval-after-load 'calendar (require 'evil-collection-calendar) (evil-collection-calendar-setup))
+ : (with-eval-after-load 'calendar (require 'evil-collection-calendar) (evil-collection-calendar-setup))
-The list of supported modes is configured by ~~evil-collection-mode-list~~.
+ The list of supported modes is configured by ~~evil-collection-mode-list~~.
-~evil-collection~ assumes ~evil-want-integration~ is set to nil before loading ~evil~ and ~evil-collection.~
+ ~evil-collection~ assumes ~evil-want-integration~ is set to nil before loading ~evil~ and ~evil-collection.~
-For example:
+ For example:
-#+begin_src emacs-lisp :tangle yes
+ #+begin_src emacs-lisp :tangle yes
(setq evil-want-integration nil)
(require 'evil)
(when (require 'evil-collection nil t)
(evil-collection-init))
-#+end_src
+ #+end_src
-Here's another full TLDR ~use-package~ example.
+ Here's another full TLDR ~use-package~ example.
-#+begin_src emacs-lisp :tangle yes
+ #+begin_src emacs-lisp :tangle yes
(use-package evil
:ensure t
:init
@@ -70,10 +70,10 @@ Here's another full TLDR ~use-package~ example.
:ensure t
:config
(evil-collection-init))
-#+end_src
+ #+end_src
-NOTE: If you don't like surprises but still want to use ~evil-collection-init~, setting ~evil-collection-mode-list~ to nil
-and adding each mode manually might be a better option.
+ NOTE: If you don't like surprises but still want to use ~evil-collection-init~, setting ~evil-collection-mode-list~ to nil
+ and adding each mode manually might be a better option.
** Configuration
@@ -100,259 +100,258 @@ and adding each mode manually might be a better option.
** Guidelines
-The following rules serve as guiding principles to define the set of standard
-Evil bindings for various modes. Since special modes are by definition
-structurally incomparable, those rules cannot be expected to be applied
-universally.
-
-The rules are more-or-less sorted by priority.
+ The following rules serve as guiding principles to define the set of standard
+ Evil bindings for various modes. Since special modes are by definition
+ structurally incomparable, those rules cannot be expected to be applied
+ universally.
-0. Don't bind anything to ~:~ nor ~<escape>~.
+ The rules are more-or-less sorted by priority.
-1. Keep the movement keys when possible and sensible.
+ 0. Don't bind anything to ~:~ nor ~<escape>~.
- - ~h~, ~j~, ~k~, ~l~
- - ~w~, ~W~, ~b~, ~B~, ~e~, ~E~, ~ge~, ~gE~
- - ~f~, ~F~, ~t~, ~T~, ~;~, =,=
- - ~gg~, ~G~
- - ~|~
- - ~(~, ~)~
- - ~{~, ~}~
- - ~%~
- - ~+~, ~-~, ~0~, ~^~, ~$~
- - ~C-i~, ~C-o~
+ 1. Keep the movement keys when possible and sensible.
-2. Keep the yanking and register keys when possible and sensible.
+ - ~h~, ~j~, ~k~, ~l~
+ - ~w~, ~W~, ~b~, ~B~, ~e~, ~E~, ~ge~, ~gE~
+ - ~f~, ~F~, ~t~, ~T~, ~;~, =,=
+ - ~gg~, ~G~
+ - ~|~
+ - ~(~, ~)~
+ - ~{~, ~}~
+ - ~%~
+ - ~+~, ~-~, ~0~, ~^~, ~$~
+ - ~C-i~, ~C-o~
- - ~y~, ~Y~
- - ="=
+ 2. Keep the yanking and register keys when possible and sensible.
-3. Keep the search keys when possible and sensible.
+ - ~y~, ~Y~
+ - ="=
- - ~/~, ~?~
- - ~#~, ~*~
+ 3. Keep the search keys when possible and sensible.
-4. Keep the mark keys when possible and sensible.
+ - ~/~, ~?~
+ - ~#~, ~*~
- - ~m~
- - ='=, =~=
+ 4. Keep the mark keys when possible and sensible.
-5. Keep the windowing keys when possible and sensible.
+ - ~m~
+ - ='=, =~=
- - ~H~, ~L~, ~M~
- - ~C-e~, ~C-y~
- - ~C-f~, ~C-b~
- - ~C-d~, ~C-u~
- - ~C-w~-prefixed bindings.
- - Some ~z~-prefixed bindings (see below).
+ 5. Keep the windowing keys when possible and sensible.
-6. The following keys are free when insert state does not make sense in the
- current mode:
+ - ~H~, ~L~, ~M~
+ - ~C-e~, ~C-y~
+ - ~C-f~, ~C-b~
+ - ~C-d~, ~C-u~
+ - ~C-w~-prefixed bindings.
+ - Some ~z~-prefixed bindings (see below).
- - ~a~, ~A~, ~i~, ~I~
- - ~c~, ~C~, ~r~, ~R~, ~s~, ~S~
- - ~d~, ~D~, ~x~, ~X~
- - ~o~, ~O~
- - ~p~, ~P~
- - ~=~, ~<~, ~>~
- - ~J~
- - =~=
+ 6. The following keys are free when insert state does not make sense in the
+ current mode:
- Any of those keys can be set to be a prefix key.
+ - ~a~, ~A~, ~i~, ~I~
+ - ~c~, ~C~, ~r~, ~R~, ~s~, ~S~
+ - ~d~, ~D~, ~x~, ~X~
+ - ~o~, ~O~
+ - ~p~, ~P~
+ - ~=~, ~<~, ~>~
+ - ~J~
+ - =~=
-7. Prefix keys: ~g~ and ~z~ are the ubiquitous prefix keys.
+ Any of those keys can be set to be a prefix key.
- - ~g~ generally stands for "go" and is best used for movements.
- - ~z~ is used for scrolling, folding, spell-checking and more.
+ 7. Prefix keys: ~g~ and ~z~ are the ubiquitous prefix keys.
-8. Macro and action keys
+ - ~g~ generally stands for "go" and is best used for movements.
+ - ~z~ is used for scrolling, folding, spell-checking and more.
- - ~@~, ~q~
- - ~.~
+ 8. Macro and action keys
+ - ~@~, ~q~
+ - ~.~
** Rationale
-Many special modes share the same set of similar actions. Those actions should
-share the same bindings across all modes whenever feasible.
+ Many special modes share the same set of similar actions. Those actions should
+ share the same bindings across all modes whenever feasible.
*** Motion (~[~, ~]~, ~{~, ~}~, ~(~, ~)~, ~gj~, ~gk~, ~C-j~, ~C-k~)
-- ~[~ and ~]~: Use ~[-~ and ~]-~ prefixed keys for navigation between sections.
+ - ~[~ and ~]~: Use ~[-~ and ~]-~ prefixed keys for navigation between sections.
- If the mode makes no difference between the end of a section and the beginning
- of the next, use ~[~ and ~]~.
+ If the mode makes no difference between the end of a section and the beginning
+ of the next, use ~[~ and ~]~.
-- ~gj~ and ~gk~: synonym for ~[~ and ~]~. That's what [[evilmagit][evil-magit]] does.
+ - ~gj~ and ~gk~: synonym for ~[~ and ~]~. That's what [[evilmagit][evil-magit]] does.
-*Question:* Should ~gj~ / ~gk~ rather be synonyms for ~C-j~ / ~C-k~? They cannot
-emulate the behaviour of ~[]~ or ~][~.
+ *Question:* Should ~gj~ / ~gk~ rather be synonyms for ~C-j~ / ~C-k~? They cannot
+ emulate the behaviour of ~[]~ or ~][~.
-- ~C-j~, ~C-k~: If there is granularity, i.e. subsections, use ~C-j~ and ~C-k~
- to browse them. This reflects [[evilmagit][evil-magit]] and [[evilmu4e][evil-mu4e]] default
- bindings.
+ - ~C-j~, ~C-k~: If there is granularity, i.e. subsections, use ~C-j~ and ~C-k~
+ to browse them. This reflects [[evilmagit][evil-magit]] and [[evilmu4e][evil-mu4e]] default
+ bindings.
-- ~{~, ~}~: If there is no paragraph structure, ~{~ and ~}~ can be used for sub-sectioning.
+ - ~{~, ~}~: If there is no paragraph structure, ~{~ and ~}~ can be used for sub-sectioning.
-- ~(~, ~)~: If there is no sentence structure, ~(~ and ~)~ can be used for sub-sectioning.
+ - ~(~, ~)~: If there is no sentence structure, ~(~ and ~)~ can be used for sub-sectioning.
-- ~HJKL~: ~hjkl~ can be used for atomic movements, but ~HJKL~ can usually not be used
- because ~H~, ~K~ and ~L~ are all universal (~J~ is ~evil-join~ and usually
- does not make sense in special modes).
+ - ~HJKL~: ~hjkl~ can be used for atomic movements, but ~HJKL~ can usually not be used
+ because ~H~, ~K~ and ~L~ are all universal (~J~ is ~evil-join~ and usually
+ does not make sense in special modes).
-- ~C-h~ should not be remapped: Since we have ~C-j~ and ~C-k~ for vertical motion, it would
- make sense to use ~C-h~ and ~C-l~ for horizontal motion. There are some
- shortcomings though:
+ - ~C-h~ should not be remapped: Since we have ~C-j~ and ~C-k~ for vertical motion, it would
+ make sense to use ~C-h~ and ~C-l~ for horizontal motion. There are some
+ shortcomings though:
- - In Vim, ~C-h~ works as backspace, but Evil does not follow that behaviour.
+ - In Vim, ~C-h~ works as backspace, but Evil does not follow that behaviour.
- - In Emacs, it is a prefix key for all help-related commands, and so is ~<f1>~.
+ - In Emacs, it is a prefix key for all help-related commands, and so is ~<f1>~.
- - Most importantly, ~C-h~ is too widespread and ubiquitous to be replaced.
- So we don't.
+ - Most importantly, ~C-h~ is too widespread and ubiquitous to be replaced.
+ So we don't.
-- ~C-l~: As a consequence of the former point, ~C-l~ is available.
+ - ~C-l~: As a consequence of the former point, ~C-l~ is available.
-- ~M-<hjkl>~: Those keys are usually free in Evil but still bound to their Emacs
- default (e.g. ~M-l~ is ~downcase-word~). Besides, if ~C-j~ and ~C-k~ are
- already used, having ~M-j~ and ~M-k~ might add up to the confusion.
+ - ~M-<hjkl>~: Those keys are usually free in Evil but still bound to their Emacs
+ default (e.g. ~M-l~ is ~downcase-word~). Besides, if ~C-j~ and ~C-k~ are
+ already used, having ~M-j~ and ~M-k~ might add up to the confusion.
*** Quitting (~q~, ~ZQ~, ~ZZ~)
-In Vim, ~q~ is for recording macros. Vim quits with ~ZZ~ or ~ZQ~. In most
-Emacs special modes, it stands for quitting while macros are recorded/played
-with ~<f3>~ and ~<f4>~.
+ In Vim, ~q~ is for recording macros. Vim quits with ~ZZ~ or ~ZQ~. In most
+ Emacs special modes, it stands for quitting while macros are recorded/played
+ with ~<f3>~ and ~<f4>~.
-A good rule of thumb would be:
+ A good rule of thumb would be:
-- Always bind ~ZZ~ and ~ZQ~ to the quitting function(s), ~evil-quit~ if nothing
- else makes sense.
+ - Always bind ~ZZ~ and ~ZQ~ to the quitting function(s), ~evil-quit~ if nothing
+ else makes sense.
-- Bind ~q~ to ~evil-quit~ if macros don't make sense in current mode.
+ - Bind ~q~ to ~evil-quit~ if macros don't make sense in current mode.
-- If macros don't make sense in current mode, then ~@~ is available.
+ - If macros don't make sense in current mode, then ~@~ is available.
*** Refreshing / Reverting (~gr~)
-- ~gr~ is used for refreshing in [[evilmagit][evil-magit]], [[evilmu4e][evil-mu4e]], and some Spacemacs
- configurations (org-agenda and neotree among others).
+ - ~gr~ is used for refreshing in [[evilmagit][evil-magit]], [[evilmu4e][evil-mu4e]], and some Spacemacs
+ configurations (org-agenda and neotree among others).
-~C-l~ is traditionally used to refresh the terminal screen. Since there does
-not seem to be any existing use of it, we leave the binding free for other uses.
+ ~C-l~ is traditionally used to refresh the terminal screen. Since there does
+ not seem to be any existing use of it, we leave the binding free for other uses.
*** Marking
-~m~ defaults to ~evil-set-marker~ which might not be very useful in special
-modes.
-='= can still be used as it can jump to other buffers.
+ ~m~ defaults to ~evil-set-marker~ which might not be very useful in special
+ modes.
+ ='= can still be used as it can jump to other buffers.
-- ~m~: Mark or toggle mark, depending on what the mode offers.
- In visual mode, always mark.
- With a numeric argument, toggle mark on that many following lines.
+ - ~m~: Mark or toggle mark, depending on what the mode offers.
+ In visual mode, always mark.
+ With a numeric argument, toggle mark on that many following lines.
-- ~u~: Unmark current selection.
+ - ~u~: Unmark current selection.
-- ~U~: Unmark all.
+ - ~U~: Unmark all.
-- =~=: Toggle all marks. This mirrors the "invert-char" Vim command bound to =~=
- by default.
+ - =~=: Toggle all marks. This mirrors the "invert-char" Vim command bound to =~=
+ by default.
-- ~M~: Mark all, if available. Otherwise use =U~=.
+ - ~M~: Mark all, if available. Otherwise use =U~=.
-- ~*~: Mark-prefix or mark all if current mode has no prefix. ~*~ is traditionally a wildcard.
+ - ~*~: Mark-prefix or mark all if current mode has no prefix. ~*~ is traditionally a wildcard.
-- ~%~: Mark regexp.
+ - ~%~: Mark regexp.
-- ~x~: Execute action on marks. This mirrors Dired's binding of ~x~.
+ - ~x~: Execute action on marks. This mirrors Dired's binding of ~x~.
-If ~*~ is used for marking, then ~#~ is free.
+ If ~*~ is used for marking, then ~#~ is free.
-Also note that Emacs inconsistently uses ~u~ and ~U~ to unmark.
+ Also note that Emacs inconsistently uses ~u~ and ~U~ to unmark.
*** Selecting / Filtering / Narrowing / Searching
-- ~s~ and ~S~ seem to be used in some places like [[mu4e][mu4e]].
+ - ~s~ and ~S~ seem to be used in some places like [[mu4e][mu4e]].
- - ~s~: [s]elect/[s]earch/filter candidates according to a pattern.
+ - ~s~: [s]elect/[s]earch/filter candidates according to a pattern.
- - ~S~: Remove filter and select all.
+ - ~S~: Remove filter and select all.
-- ~=~ is usually free and its significance is obvious. It's taken for zooming though.
+ - ~=~ is usually free and its significance is obvious. It's taken for zooming though.
-- ~|~ is not free but the pipe symbolic is very tantalizing.
+ - ~|~ is not free but the pipe symbolic is very tantalizing.
*** Sorting
-- ~o~: Change the sort [o]rder.
-- ~O~: Sort in reverse order.
+ - ~o~: Change the sort [o]rder.
+ - ~O~: Sort in reverse order.
-There is no real consensus around which key to bind to sorting. What others do by default:
+ There is no real consensus around which key to bind to sorting. What others do by default:
-- ~package-menu~ uses ~S~.
+ - ~package-menu~ uses ~S~.
-- ~M-x proced~ and Dired use ~s~.
+ - ~M-x proced~ and Dired use ~s~.
-- ~profiler~ uses ~A~ and ~D~.
+ - ~profiler~ uses ~A~ and ~D~.
-- [[mu4e][mu4e]] uses ~O~.
+ - [[mu4e][mu4e]] uses ~O~.
-- [[http://www.nongnu.org/ranger/][ranger]] uses ~o~, inspired from [[http://mutt.org][Mutt]].
+ - [[http://www.nongnu.org/ranger/][ranger]] uses ~o~, inspired from [[http://mutt.org][Mutt]].
*** Go to definition (~gd~, ~gD~)
-- ~gd~: [g]o to [d]efinition. This is mostly for programming modes.
- If there's a corresponding 'pop' action, use ~C-t~.
+ - ~gd~: [g]o to [d]efinition. This is mostly for programming modes.
+ If there's a corresponding 'pop' action, use ~C-t~.
*** Go to current entity
-- ~.~: go to current entity (day for calendar, playing track for [[EMMS][EMMS]]).
- Bind only if more relevant than ~evil-repeat~.
+ - ~.~: go to current entity (day for calendar, playing track for [[EMMS][EMMS]]).
+ Bind only if more relevant than ~evil-repeat~.
*** Open thing at point (~RET~, ~S-RET~, ~M-RET~, ~go~, ~gO~)
-- ~RET~, ~S-RET~, ~M-RET~: Open thing at point in current window, open in other
- window and display in other window respectively. The latter is like the
- former with the focus remaining on the current window.
+ - ~RET~, ~S-RET~, ~M-RET~: Open thing at point in current window, open in other
+ window and display in other window respectively. The latter is like the
+ former with the focus remaining on the current window.
-- ~go~, ~gO~: When available, same as ~S-RET~ and ~M-RET~ respectively. This is
- useful in terminals where ~S-RET~ and ~M-RET~ might not work.
+ - ~go~, ~gO~: When available, same as ~S-RET~ and ~M-RET~ respectively. This is
+ useful in terminals where ~S-RET~ and ~M-RET~ might not work.
*** Emacs-style jumping (~J~)
-- ~J~: [[mu4e][mu4e]] has ~j~ and [[evil-mu4e][evil-mu4e]] uses ~J~, so we use ~J~ too.
+ - ~J~: [[mu4e][mu4e]] has ~j~ and [[evil-mu4e][evil-mu4e]] uses ~J~, so we use ~J~ too.
-Some special modes like [[mu4e][mu4e]] and ibuffer offer to to "jump" to a different
-buffer. This sometimes depends on the thing at point.
+ Some special modes like [[mu4e][mu4e]] and ibuffer offer to to "jump" to a different
+ buffer. This sometimes depends on the thing at point.
-This is not related to Evil jumps like ~C-i~ and ~C-o~, nor to "go to
-definition".
+ This is not related to Evil jumps like ~C-i~ and ~C-o~, nor to "go to
+ definition".
*** Browse URL (~gx~)
-~gx~: go to URL. This is a default Vim binding.
+ ~gx~: go to URL. This is a default Vim binding.
*** Help (~?~)
-- ~g?~ : is the standard key for help related commands.
-- ~?~ in places where backward search is not very useful.
+ - ~g?~ : is the standard key for help related commands.
+ - ~?~ in places where backward search is not very useful.
*** History browsing (~C-n~, ~C-p~)
-~C-n~ and ~C-p~ are standard bindings to browse the history elements.
+ ~C-n~ and ~C-p~ are standard bindings to browse the history elements.
*** Bookmarking
-?
+ ?
*** REPL (~gz~)
If the mode has a Go To REPL-type command, set it to ~gz~.
*** Zooming (~+~, ~-~, ~=~, ~0~)
-- ~+~ and ~-~ have obvious meanings.
+ - ~+~ and ~-~ have obvious meanings.
-- ~0~ has a somewhat intuitive meaning, plus it is next to ~+~ and ~-~ on QWERTY.
+ - ~0~ has a somewhat intuitive meaning, plus it is next to ~+~ and ~-~ on QWERTY.
-- ~=~ is useful as a synonym for ~+~ because it is the unshifted key of ~+~ on QWERTY.
+ - ~=~ is useful as a synonym for ~+~ because it is the unshifted key of ~+~ on QWERTY.
*** Debugging
When debugging is on, debugger keys takes the most precedence.
@@ -396,19 +395,19 @@ definition".
~ESC~ will exit editable state.
** Key Translation
-~evil-collection-translate-key~ allows binding a key to the definition of
-another key in the same keymap (comparable to how Vim's keybindings work). Its
-arguments are the ~states~ and ~keymaps~ to bind/look up the key(s) in followed
-optionally by keyword arguments (currently only ~:destructive~) and
-key/replacement pairs. ~states~ should be nil for non-evil keymaps, and both
-~states~ and ~keymaps~ can be a single symbol or a list of symbols.
-
-This function can be useful for making key swaps/cycles en masse. For example,
-someone who uses an alternate keyboard layout may want to retain the ~hjkl~
-positions for directional movement in dired, the calendar, etc.
-
-Here's an example for Colemak of making swaps in a single keymap:
-#+begin_src emacs-lisp
+ ~evil-collection-translate-key~ allows binding a key to the definition of
+ another key in the same keymap (comparable to how Vim's keybindings work). Its
+ arguments are the ~states~ and ~keymaps~ to bind/look up the key(s) in followed
+ optionally by keyword arguments (currently only ~:destructive~) and
+ key/replacement pairs. ~states~ should be nil for non-evil keymaps, and both
+ ~states~ and ~keymaps~ can be a single symbol or a list of symbols.
+
+ This function can be useful for making key swaps/cycles en masse. For example,
+ someone who uses an alternate keyboard layout may want to retain the ~hjkl~
+ positions for directional movement in dired, the calendar, etc.
+
+ Here's an example for Colemak of making swaps in a single keymap:
+ #+begin_src emacs-lisp
(evil-collection-translate-key nil 'evil-motion-state-map
;; colemak hnei is qwerty hjkl
"n" "j"
@@ -418,11 +417,11 @@ Here's an example for Colemak of making swaps in a single keymap:
"j" "e"
"k" "n"
"l" "i")
-#+end_src
+ #+end_src
-Here's an example of using ~evil-collection-setup-hook~ to cycle the keys for
-all modes in ~evil-collection-mode-list~:
-#+begin_src emacs-lisp
+ Here's an example of using ~evil-collection-setup-hook~ to cycle the keys for
+ all modes in ~evil-collection-mode-list~:
+ #+begin_src emacs-lisp
(defun my-hjkl-rotation (_mode mode-keymaps &rest _rest)
(evil-collection-translate-key 'normal mode-keymaps
"n" "j"
@@ -436,16 +435,16 @@ all modes in ~evil-collection-mode-list~:
(add-hook 'evil-collection-setup-hook #'my-hjkl-rotation)
(evil-collection-init)
-#+end_src
-
-A more common use case of ~evil-collection-translate-key~ would be for keeping
-the functionality of some keys that users may bind globally. For example, ~SPC~,
-~[~, and ~]~ are bound in some modes. If you use these keys as global prefix
-keys that you never want to be overriden, you'll want to give them higher
-priority than other evil keybindings (e.g. those made by ~(evil-define-key
-'normal some-map ...)~). To do this, you can create an "intercept" map and bind
-your prefix keys in it instead of in ~evil-normal-state-map~:
-#+begin_src emacs-lisp
+ #+end_src
+
+ A more common use case of ~evil-collection-translate-key~ would be for keeping
+ the functionality of some keys that users may bind globally. For example, ~SPC~,
+ ~[~, and ~]~ are bound in some modes. If you use these keys as global prefix
+ keys that you never want to be overriden, you'll want to give them higher
+ priority than other evil keybindings (e.g. those made by ~(evil-define-key
+ 'normal some-map ...)~). To do this, you can create an "intercept" map and bind
+ your prefix keys in it instead of in ~evil-normal-state-map~:
+ #+begin_src emacs-lisp
(defvar my-intercept-mode-map (make-sparse-keymap)
"High precedence keymap.")
@@ -464,10 +463,10 @@ your prefix keys in it instead of in ~evil-normal-state-map~:
(evil-define-key 'normal my-intercept-mode-map
(kbd "SPC f") 'find-file)
;; ...
-#+end_src
+ #+end_src
-You can then define replacement keys:
-#+begin_src emacs-lisp
+ You can then define replacement keys:
+ #+begin_src emacs-lisp
(defun my-prefix-translations (_mode mode-keymaps &rest _rest)
(evil-collection-translate-key 'normal mode-keymaps
"C-SPC" "SPC"
@@ -480,102 +479,102 @@ You can then define replacement keys:
(add-hook 'evil-collection-setup-hook #'my-prefix-translation)
(evil-collection-init)
-#+end_src
-
-By default, the first invocation of ~evil-collection-translate-key~ will make a
-backup of the keymap. Each subsequent invocation will look up keys in the backup
-instead of the original. This means that a call to
-~evil-collection-translate-key~ will always have the same behavior even if
-evaluated multiple times. When ~:destructive t~ is specified, keys are looked up
-in the keymap as it is currently. This means that a call to
-~evil-collection-translate-key~ that swapped two keys would continue to
-swap/unswap them with each call. Therefore when ~:destructive t~ is used, all
-cycles/swaps must be done within a single call to
-~evil-collection-translate-key~. To make a comparison to Vim keybindings,
-~:destructive t~ is comparable to Vim's ~map~, and ~:destructive nil~ is
-comparable to Vim's ~noremap~ (where the "original" keybindings are those that
-existed in the keymap when ~evil-collection-translate-key~ was first called).
-You'll almost always want to use the default behavior (especially in your init
-file). The limitation of ~:destructive nil~ is that you can't translate a key to
-another key that was defined after the first ~evil-collection-translate-key~, so
-~:destructive t~ may be useful for interactive experimentation.
-
-~evil-collection-swap-key~ is also provided as a wrapper around
-~evil-colletion-translate-key~ that allows swapping keys:
-#+begin_src emacs-lisp
+ #+end_src
+
+ By default, the first invocation of ~evil-collection-translate-key~ will make a
+ backup of the keymap. Each subsequent invocation will look up keys in the backup
+ instead of the original. This means that a call to
+ ~evil-collection-translate-key~ will always have the same behavior even if
+ evaluated multiple times. When ~:destructive t~ is specified, keys are looked up
+ in the keymap as it is currently. This means that a call to
+ ~evil-collection-translate-key~ that swapped two keys would continue to
+ swap/unswap them with each call. Therefore when ~:destructive t~ is used, all
+ cycles/swaps must be done within a single call to
+ ~evil-collection-translate-key~. To make a comparison to Vim keybindings,
+ ~:destructive t~ is comparable to Vim's ~map~, and ~:destructive nil~ is
+ comparable to Vim's ~noremap~ (where the "original" keybindings are those that
+ existed in the keymap when ~evil-collection-translate-key~ was first called).
+ You'll almost always want to use the default behavior (especially in your init
+ file). The limitation of ~:destructive nil~ is that you can't translate a key to
+ another key that was defined after the first ~evil-collection-translate-key~, so
+ ~:destructive t~ may be useful for interactive experimentation.
+
+ ~evil-collection-swap-key~ is also provided as a wrapper around
+ ~evil-colletion-translate-key~ that allows swapping keys:
+ #+begin_src emacs-lisp
(evil-collection-swap-key nil 'evil-motion-state-map
";" ":")
;; is equivalent to
(evil-collection-translate-key nil 'evil-motion-state-map
";" ":"
":" ";")
-#+end_src
+ #+end_src
** Modes left behind
-Some modes might still remain unsupported by this package. Should you be
-missing your ~<hjkl>~, feel free to file an issue or even a pull request.
+ Some modes might still remain unsupported by this package. Should you be
+ missing your ~<hjkl>~, feel free to file an issue or even a pull request.
** Third-party packages
-Third-party packages are provided by several parties:
+ Third-party packages are provided by several parties:
-- [[https://github.com/emacs-evil/evil-ediff][evil-ediff]]
-- [[https://github.com/emacs-evil/evil-magit][evil-magit]]
-- [[https://github.com/JorisE/evil-mu4e][evil-mu4e]]
-- Lispy: [[https://github.com/noctuid/lispyville][lispyville]] or [[https://github.com/sp3ctum/evil-lispy][evil-lispy]]
-- Org-mode: https://github.com/GuiltyDolphin/org-evil or https://github.com/Somelauw/evil-org-mode
+ - [[https://github.com/emacs-evil/evil-ediff][evil-ediff]]
+ - [[https://github.com/emacs-evil/evil-magit][evil-magit]]
+ - [[https://github.com/JorisE/evil-mu4e][evil-mu4e]]
+ - Lispy: [[https://github.com/noctuid/lispyville][lispyville]] or [[https://github.com/sp3ctum/evil-lispy][evil-lispy]]
+ - Org-mode: https://github.com/GuiltyDolphin/org-evil or https://github.com/Somelauw/evil-org-mode
-Should you know any suitable package not mentioned in this list, let us know and
-file an issue.
+ Should you know any suitable package not mentioned in this list, let us know and
+ file an issue.
-Other references:
+ Other references:
-- [[https://github.com/syl20bnr/spacemacs/blob/master/doc/CONVENTIONS.org#key-bindings-conventions][Spacemacs]]
-- [[https://github.com/hlissner/doom-emacs/blob/master/modules/private/hlissner/%2Bbindings.el][Doom Emacs]]
+ - [[https://github.com/syl20bnr/spacemacs/blob/master/doc/CONVENTIONS.org#key-bindings-conventions][Spacemacs]]
+ - [[https://github.com/hlissner/doom-emacs/blob/master/modules/private/hlissner/%2Bbindings.el][Doom Emacs]]
** FAQ
-- Making SPC work similarly to [[https://github.com/syl20bnr/spacemacs][spacemacs]].
-
- ~evil-collection~ binds over SPC in many packages. To use SPC as a leader
- key with the [[https://github.com/noctuid/general.el][general]] library:
-
- #+begin_src emacs-lisp :tangle yes
- (use-package general
- :ensure t
- :config
- (setq general-override-states '(insert
- emacs
- hybrid
- normal
- visual
- motion
- operator
- replace))
- (general-override-mode)
- (general-define-key
- :states '(normal visual motion)
- :keymaps 'override
- "SPC" 'hydra-space/body))
- #+end_src
-
- See [[https://github.com/noctuid/evil-guide][noctuid's evil guide]] for other approaches.
-
- This should also be accomplishable using key translation from [[https://github.com/noctuid/general.el][general]].
+ - Making SPC work similarly to [[https://github.com/syl20bnr/spacemacs][spacemacs]].
+
+ ~evil-collection~ binds over SPC in many packages. To use SPC as a leader
+ key with the [[https://github.com/noctuid/general.el][general]] library:
+
+ #+begin_src emacs-lisp :tangle yes
+ (use-package general
+ :ensure t
+ :config
+ (setq general-override-states '(insert
+ emacs
+ hybrid
+ normal
+ visual
+ motion
+ operator
+ replace))
+ (general-override-mode)
+ (general-define-key
+ :states '(normal visual motion)
+ :keymaps 'override
+ "SPC" 'hydra-space/body))
+ #+end_src
+
+ See [[https://github.com/noctuid/evil-guide][noctuid's evil guide]] for other approaches.
+
+ This should also be accomplishable using key translation from [[https://github.com/noctuid/general.el][general]].
** Contributing
-Please do!
+ Please do!
-We welcome any additional modes that are not already supported.
+ We welcome any additional modes that are not already supported.
-All bindings in ~evil-collection~ are still open to change so if there's
-a better or more consistent binding, please [[https://github.com/emacs-evil/evil-collection/issues][open an issue]] or [[https://github.com/emacs-evil/evil-collection/pulls][submit a pull request]].
+ All bindings in ~evil-collection~ are still open to change so if there's
+ a better or more consistent binding, please [[https://github.com/emacs-evil/evil-collection/issues][open an issue]] or [[https://github.com/emacs-evil/evil-collection/pulls][submit a pull request]].
-Follow [[https://github.com/bbatsov/emacs-lisp-style-guide/][The Emacs Lisp Style Guide]] for coding conventions.
+ Follow [[https://github.com/bbatsov/emacs-lisp-style-guide/][The Emacs Lisp Style Guide]] for coding conventions.
-[[https://github.com/erlang/otp/wiki/writing-good-commit-messages][Erlang/OTP]] has a good read for helpful commit messages.
+ [[https://github.com/erlang/otp/wiki/writing-good-commit-messages][Erlang/OTP]] has a good read for helpful commit messages.
-#+LINK: EMMS https://www.gnu.org/software/emms/
-#+LINK: evilmagit https://github.com/emacs-evil/evil-magit
-#+LINK: evilmu4e https://github.com/JorisE/evil-mu4e
-#+LINK: mu4e https://www.djcbsoftware.nl/code/mu/mu4e.html
+ #+LINK: EMMS https://www.gnu.org/software/emms/
+ #+LINK: evilmagit https://github.com/emacs-evil/evil-magit
+ #+LINK: evilmu4e https://github.com/JorisE/evil-mu4e
+ #+LINK: mu4e https://www.djcbsoftware.nl/code/mu/mu4e.html