update readme

This commit is contained in:
Jean-Philippe Bernardy 2017-07-30 22:39:07 +02:00
parent 2b7a41491d
commit d45fecf0ac

View file

@ -65,27 +65,26 @@ searching. The bottom row gives access to regular Emacs stuff (C-x
Emacs Integration: Reusable Modules Emacs Integration: Reusable Modules
----------------------------------- -----------------------------------
Boon is designed as a stack of layers. Each layer is customizable and Boon is designed as set of modules, largely independent of each
provides reusable components, in full agreement with the Emacs other. Each module is customizable and provides reusable components,
spirit. This means that even if you disagree with the design choices in full agreement with the Emacs spirit. This means that even if you
explained above, you may still want to use some parts of Boon. The disagree with the design choices explained above, you may still want
structure of Boon is as follows: to use some parts of Boon. The structure of Boon is as follows:
1. boon-moves.el and boon-search.el provide a set of move and search 1. boon-moves.el and boon-search.el provide a set of move and search
commands. These work the same way as standard Emacs commands --- commands. These work the same way as standard Emacs commands ---
they are merely (sometimes) more powerful. Frontends typically bind they are merely more powerful (or just have different
these commands (and more) in boon-moves-map, which is active in emphasis). Frontends typically bind these commands (in addition to
'command mode'. standard ones) in the boon keymaps.
2. boon-arguments.el provides a set of selectors to define 2. boon-arguments.el provides a set of selectors to define
regions. (These selectors are the equivalent of vim 'text regions. (These selectors are the equivalent of vim 'text
objects'.) Selectors include plain regions (words, lines, objects'). Selectors include plain regions (words, lines,
paragraphs, ...), but also region transformers (think: exclude paragraphs, ...), but also region transformers (think: exclude
borders, just borders, including spaces, foreach, borders, just borders, including spaces, each, etc.). Additionally
etc.). Additionally every move command in the boon-moves-map keymap every move command (in the boon-moves-map keymap) can be used as a
can be used as a selector. The selectors are regular interactive selector which means that they are easily customized. On top of it
functions, which means that they are easily customized. On top of all, the system supports multiple-cursors (multiple regions will be
it all, the system supports multiple-cursors (multiple regions will returned when multiple cursors are active).
be returned when multiple cursors are active).
3. boon-core.el provides an infrastructure for modal editing. The 3. boon-core.el provides an infrastructure for modal editing. The
implementation is very much inspired from evil-core, but heavily implementation is very much inspired from evil-core, but heavily
simplified. simplified.
@ -102,7 +101,7 @@ Installation
------------ ------------
REQUIREMENTS REQUIREMENTS
- Emacs version >= 24.5 - Emacs version >= 25.1
- Qwerty or Colemak layout (workman version partially implemented). - Qwerty or Colemak layout (workman version partially implemented).
Install Boon (perhaps using Install Boon (perhaps using
@ -110,8 +109,8 @@ Install Boon (perhaps using
and add the following to your configuration: and add the following to your configuration:
(require 'boon-colemak) (require 'boon-colemak)
;; (require 'boon-qwerty) ;; for qwerty port (alpha quality) ;; (require 'boon-qwerty) ;; for qwerty port
(require 'boon-powerline) (require 'boon-powerline)
(boon-powerline-theme) ;; if you want use powerline with Boon (boon-powerline-theme) ;; if you want use powerline with Boon
Then Then
@ -142,8 +141,8 @@ Configuration
The main variables to configure are: The main variables to configure are:
- boon-select-map, boon-moves-map, boon-command-map. Those are keymaps. - boon-select-map, boon-moves-map, boon-command-map. (Those are keymaps.)
- boon-enclosures, which can be customized. - boon-enclosures (can be `custom`ized.)
Comparison with other modal layers for Emacs Comparison with other modal layers for Emacs
--------------------------------------------- ---------------------------------------------
@ -152,24 +151,20 @@ Comparison with other modal layers for Emacs
Evil is a (quite) complete vi emulation layer for Emacs. Evil is a (quite) complete vi emulation layer for Emacs.
In Boon, quite a bit of Emacs structure and user experience is In contrast, in Boon, much of Emacs structure is leveraged and user
retained. Examples: the x key gives the C-x prefix map. The usual experience is retained. Examples: the `x` key gives the `C-x` prefix
Emacs (interactive) arguments are used for text objects. Thus most of map. The usual Emacs (interactive) arguments are used for text
Boon remains usable even if one does not wish to use modal editing. objects. Thus most of Boon remains usable even if one does not wish
to use modal editing.
Besides, Emacs is already customizable enough as it is: the core of Besides, Evil use vi bindings (by default at least), which do not
Boon is just 300 lines or so. Figuring out all the ins and outs of
Evil to do what I want would probably have required more effort than
implementing Boon.
Finally, evil use vi bindings (by default at least), which do not
feature the best ergonomics. feature the best ergonomics.
- Xah Fly Keys http://ergoemacs.org/misc/ergoemacs_vi_mode.html - Xah Fly Keys http://ergoemacs.org/misc/ergoemacs_vi_mode.html
Like boon, Xah Fly Keys aims at providing a layout whose design is Like boon, Xah Fly Keys aims at providing a layout whose design is
ergonomic. As far as I understand it follows the spirit of Xah's ergonomic. As far as I understand it follows the spirit of Xah's
ErgoEmacs package. As I understand it ErgoEmacs makes most design ErgoEmacs package. As I understand ErgoEmacs makes most design
decisions differently from boon. I have not made an in-depth decisions differently from boon. I have not made an in-depth
comparison of ergonomics yet. comparison of ergonomics yet.
@ -181,6 +176,24 @@ Comparison with other modal layers for Emacs
is compatible with Boon concepts and could (and probably should) be is compatible with Boon concepts and could (and probably should) be
implemented as a Boon 'frontend'. implemented as a Boon 'frontend'.
- Modalka https://github.com/mrkkrp/modalka
Modalka is an engine to "introduce native modal editing of your own
design". Thus its purpose is similar to `boon-core.el`. It could be
possible in the future to replace parts of boon-core with a
dependency on Modalka. However at the moment it does not seem
suitable. The main issue is that modalka does not support several
states; it can only be either activated or not.
- RYO modal mode https://github.com/Kungsgeten/ryo-modal
RYO modal has the same purpose as Modalka and boon-core. Compared to
Modalka, it provides support for repeating a coentirely
deactivated.mmand. However RYO modal's method is incompatible with
Emacs' repeat (and consequently also with boon complex commands)
Additionally it suffers from the same drawback as Modalka: it has a
single state.
- God-mode https://github.com/chrisdone/god-mode - God-mode https://github.com/chrisdone/god-mode
God-mode is similar to "sticky modifier keys" in principle. Its God-mode is similar to "sticky modifier keys" in principle. Its
@ -188,13 +201,8 @@ Comparison with other modal layers for Emacs
lacks the main benefit of a true modal layer: text operators. (what lacks the main benefit of a true modal layer: text operators. (what
vi fans call a "language for text edition"). vi fans call a "language for text edition").
- Modal Mode http://retroj.net/modal-mode - Modal Mode http://retroj.net/modal-mode (Last updated in 2014)
Another modal layer for Emacs, which is also lightweight and aims to Another modal layer for Emacs, which is also lightweight and aims to
integrate with Emacs. However, as far as I can see, there is no integrate with Emacs. However, as far as I can see, there is no
special attention paid to ergonomics. special attention paid to ergonomics.
- Modal Emacs https://github.com/joelmccracken/modal-emacs
Modal Emacs does not appear to be complete.