To install this package, run in Emacs:
M-x package-install RET devil RET
Devil mode trades your comma key in exchange for a modifier-free editing experience in Emacs. Yes, the comma key! The key you would normally wield for punctuation in nearly every corner of text. Yes, this is twisted! It would not be called the Devil otherwise, would it? If it were any more rational, we might call it something divine, like, uh, the God mode? But alas, there is nothing divine to be found here. Welcome, instead, to the realm of the Devil! You will be granted the occasional use of the comma key for punctuation, but only if you can charm the Devil. But beware, for in this sinister domain, you must relinquish your comma key and embrace an editing experience that whispers wicked secrets into your fingertips!
Devil is available in MELPA as well as NonGNU ELPA. If you are using
Emacs 28.1 or a more recent version of Emacs, you can get the latest
stable version of Devil by typing M-x package-install RET devil RET
.
Otherwise, you need to add MELPA or NonGNU ELPA to your list of
package archives and then install MELPA. More details on the
installation procedure is provided in the manual.
By default, Devil mode rebinds the comma key to activate Devil. Once activated, Devil reads a so-called Devil key sequence from you. As you type your Devil key sequence, Devil translates the key sequence to a regular Emacs key sequence. If any command is bound to the translated Emacs key sequence, Devil runs that command and then deactivates itself.
By default, each comma in the Devil key sequence is translated to "C-". For example, if you type ", x , f", Devil translates it to "C-x C-f". Similarly ", m" is translated to "M-". If you type ", m x", Devil translates it to "M-x". Further ", m m" is translated to "C-M-". If you type ", m m f" Devil translates it to "C-M-f". There are several other translations available in the default translation rules that let you enjoy working with Emacs while avoiding modifier keys. Further, the Devil activation key, translation rules, etc. are customisable. Thus if you do not like the default choices made in this package, you can customise it easily to suit your preferences.
Read the manual to learn how to install, use, and customise Devil.
The author of this project hangs out at the following places online:
You are welcome to subscribe to, follow, or join one or more of the above channels to receive updates from the author or ask questions about this project.
To report bugs, suggest improvements, or ask questions, create issues.
Thanks to:
Some amusing reactions to this project collected from various corners of the world wide web:
Every bit of this horrifies me, and I can't believe you've done it. Outstanding. Well done! – @kstrauser
This is insane. I am going to try it immediately. – @jrockway
Will defiantly check this out. – @strings
Defiantly! – @oantolin
😈 – @SequentialDesign
devil-0.5.0.tar.lz | 2023-Jun-15 | 25.8 KiB |
devil-0.4.0.tar.lz | 2023-May-27 | 22.8 KiB |
devil-0.3.0.tar.lz | 2023-May-15 | 13.5 KiB |
, m
now translates to M-
instead of C-M-
., m z
now translates to M-
instead of C-M-
., m ,
now translates to M-,
instead of C-M-,
., m m
now translates to C-M-
instead of M-
., m m f
changed to , m f
., m m b
changed to , m b
., m m y
changed to , m y
., m m ^
changed to , m ^
.m z
to M-
.m m
to m
.m
to M-
.devil-set-key
to set a new Devil key and update the
mode's keymap.devil-version
since it is useful in determining
the source version conveniently. It helps during troubleshooting
the package when installed from MELPA which sets the package version
to a version derived from the current date and time.devil-describe-key
to describe Devil key sequences.devil-toggle-logging
to toggle logging., h , k
to execute devil-describe-key
., h , l
to execute devil-toggle-logging
.devil-key
also updates the mode's keymap.local-function-key-map
and execute any command bound to the
fallback key sequence. For example, when the Devil key sequence ,
x <tab>
is converted to C-x <tab>
, since no command is bound to
this key sequence, it is further translated to C-x TAB
and the
command indent-rigidly
bound to it is executed.%k
to %r
.isearch-mode
because typing special keys like , ,
and , SPC
in
isearch-mode
inserted the literal characters in the buffer as
opposed to appending these characters to the search pattern. The
default special key sequences now invoke devil-execute-key
instead
which carefully look up the current binding for the current special
key and executes it. This produces the correct behaviour of special
keys even in isearch-mode
., <return>
which was broken by the
previous release of version 0.4.0., ,
in isearch-mode
.devil-all-keys-repeatable
that makes all
Devil key sequences repeatable when set to t
., s
to the default list of repeatable keys., d
to the default list of repeatable keys., m m ^
to the default list of repeatable keys.m m
to m
to support typing key sequences like C-c m
.m z
to M-
to support typing key sequences like C-c
M-m
and C-M-m
.C-M-V
is
translated to C-M-S-v
.(kbd
"<left>")
, <tab>
, , <backspace>
, etc. For example, earlier , <tab>
translated to C-TAB
and caused "undefined" error even if there was
a command bound to C-<tab>
. With this fix, , <tab>
is now
translated to C-<tab>
and invokes the command bound to it, if any.… …