branch: elpa/devil
commit d98018356c5a40f97cf8e3349e794b3ecd6940e2
Author: Susam Pal <[email protected]>
Commit: Susam Pal <[email protected]>
Add section to compare Devil mode with God mode
---
README.md | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 56 insertions(+)
diff --git a/README.md b/README.md
index 782a8a886f..9fd1962280 100644
--- a/README.md
+++ b/README.md
@@ -35,6 +35,7 @@ Contents
* [Custom Devil Key](#custom-devil-key)
* [Multiple Devil Keys](#multiple-devil-keys)
* [Why?](#why)
+* [Comparison with God Mode](#comparison-with-god-mode)
* [Support](#support)
* [Channels](#channels)
* [More](#more)
@@ -541,6 +542,61 @@ mode, just in case, there is someone out there who might
find this
useful too.
+Comparison with God Mode
+------------------------
+
+God mode provides a modal editing experience but Devil does not. Devil
+has the same underlying philosophy as that of God mode, i.e., the user
+should not have to learn new key bindings. However, Devil does not
+have a hard separation between insert mode and command mode like God
+mode has. Instead, Devil waits for an activation key (`,` by default)
+and as soon as it is activated, it intercepts and translates keys,
+runs the corresponding command, and then gets out of the way. So Devil
+tries to retain the modeless editing experience of vanilla Emacs as
+much as possible.
+
+Now it is worth mentioning that some of this modeless editing
+experience can be reproduced in god-mode too using its
+`god-execute-with-current-bindings` function. Here is an example:
+
+```elisp
+(global-set-key (kbd ",") #'god-execute-with-current-bindings)
+```
+
+With this configuration, God mode translates `, x f` to `C-x C-f`.
+Similarly `, g x` invokes `M-x` and `, G s` invokes `C-M-x`. This
+provides a modeless editing experience in God mode too. However, this
+experience does not extend seamlessly to minibuffers. Devil does
+extend its Devil key translation to minibuffers.
+
+Further note that in God mode the <kbd>ctrl</kbd> modifier has sticky
+behaviour, i.e., the modifier remains active automatically for the
+entire key sequence. Therefore in the above example, we type `,` only
+once while typing `, x f` to invoke `C-x C-f`. However, this sticky
+behaviour implies that we need some way to disambiguate between key
+sequences like `C-x C-o` (delete blank lines) and `C-x o` (other
+window). God mode solves this by introducing `SPC` to deactivate the
+modifier, e.g., `, x o` translates to `C-x C-o` but `, x SPC o`
+translates to `C-x o`. Devil does not treat the modifier key as sticky
+which leads to simpler key sequences at the cost of a little
+additional typing, i.e., `, x , o` translates to `C-x C-o` and `, x o`
+translates to `C-x o`.
+
+To summarize, there are primarily three things that Devil does
+differently:
+
+ - Provide a modeless editing experience from the outset.
+ - Seamlessly extend the same editing experience to minibuffer,
+ incremental search, etc.
+ - Translate key sequences using string replacements. This allows for
+ arbitrary and sophisticated key translations for the adventurous.
+ - Choose non-sticky behaviour for the modifier keys.
+
+These differences could make Devil easier to use than God mode for
+some people but clumsy for other people. It depends on one's tastes
+and preferences.
+
+
Support
-------