[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/devil d98018356c 22/49: Add section to compare Devil mode
|
From: |
ELPA Syncer |
|
Subject: |
[nongnu] elpa/devil d98018356c 22/49: Add section to compare Devil mode with God mode |
|
Date: |
Mon, 15 May 2023 12:59:32 -0400 (EDT) |
branch: elpa/devil
commit d98018356c5a40f97cf8e3349e794b3ecd6940e2
Author: Susam Pal <susam@susam.net>
Commit: Susam Pal <susam@susam.net>
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
-------
- [nongnu] elpa/devil 0c69796f26 02/49: Replace contractions with uncontracted forms, (continued)
- [nongnu] elpa/devil 0c69796f26 02/49: Replace contractions with uncontracted forms, ELPA Syncer, 2023/05/15
- [nongnu] elpa/devil deddb5cade 04/49: Remove stray message call, ELPA Syncer, 2023/05/15
- [nongnu] elpa/devil e03a679297 06/49: Fix typos, spelling, and punctuation, ELPA Syncer, 2023/05/15
- [nongnu] elpa/devil 943578f33f 07/49: Use a smaller screenshot to show Devil smiley, ELPA Syncer, 2023/05/15
- [nongnu] elpa/devil c11dd68394 08/49: Use the term activation to describe the Devil key, ELPA Syncer, 2023/05/15
- [nongnu] elpa/devil e52262afdd 01/49: Add Devil, ELPA Syncer, 2023/05/15
- [nongnu] elpa/devil 7bf4345acc 05/49: Use <kbd> instead of <code> for "ctrl", ELPA Syncer, 2023/05/15
- [nongnu] elpa/devil 4924f32560 12/49: Describe how multiple Devil keys can be configured, ELPA Syncer, 2023/05/15
- [nongnu] elpa/devil 331bf12bb2 17/49: Add more examples of repeatable keys to README, ELPA Syncer, 2023/05/15
- [nongnu] elpa/devil b32ded26d4 19/49: Add command devil-show-version, ELPA Syncer, 2023/05/15
- [nongnu] elpa/devil d98018356c 22/49: Add section to compare Devil mode with God mode,
ELPA Syncer <=
- [nongnu] elpa/devil aaee73457d 23/49: Remove load calls in configuration examples, ELPA Syncer, 2023/05/15
- [nongnu] elpa/devil 2cc21ac252 26/49: Set version to 0.2.0, ELPA Syncer, 2023/05/15
- [nongnu] elpa/devil 83e96bcfce 15/49: Fix typo in function name: s/repetable/repeatable/, ELPA Syncer, 2023/05/15
- [nongnu] elpa/devil 2ccbcb04f4 27/49: * devil.el: Update header with more information, ELPA Syncer, 2023/05/15
- [nongnu] elpa/devil 483ce72f48 35/49: Convert .md files to .org files, ELPA Syncer, 2023/05/15
- [nongnu] elpa/devil 5ae5957fc5 37/49: Improve package description, ELPA Syncer, 2023/05/15
- [nongnu] elpa/devil 98064ffed4 49/49: Remove superfluous exclamation mark, ELPA Syncer, 2023/05/15
- [nongnu] elpa/devil 1cee55eaa3 41/49: Use sharp-quotes consistently for function names, ELPA Syncer, 2023/05/15
- [nongnu] elpa/devil c6db405df4 14/49: Address code review comments offered on MELPA, ELPA Syncer, 2023/05/15
- [nongnu] elpa/devil f57adb4860 03/49: Set version to 0.1.0, ELPA Syncer, 2023/05/15