Commit graph

19 commits

Author SHA1 Message Date
syl20bnr
c2296f71f8 Put back holy and hybrid in spacemacs base layer
They are not optional
Also fixes some bugs like toggling hybrid mode from holy mode and
toggling off the hybrid mode.
2016-03-16 21:59:44 -04:00
syl20bnr
82fdd9a511 Use evil in holy-mode
Motivation

While disabling Evil in holy-mode makes its implementation shorter and
sounds elegant on the paper, in practice it puts a big burden on the
configuration parts which need to know if Evil is enable or not. This is
a bad separation of concerns and the bunch of fixes that we were forced
to do in the past weeks shows this issue. Those fixes were about
removing the knowledge of the activation of Evil by implementing new
dispatching functions to be used by layers, this is cumbersome and makes
Spacemacs layer configuration more subtle which is not good. There was
additional bad consequences of the removal of Evil state like the
impossibility to use Evil lisp state or iedit states, or we would have
been forced to implement a temporary activation of Evil which is
awkward.

Instead I reintroduce Evil as the central piece of Spacemacs design thus
Evil is now re-enabled in holy-mode. It provides the abstraction we need
to isolate editing styles and be able to grow the Spacemacs
configuration coverage sanely. Layers don't need to check whether the
holy mode is active or not and they don't need to know if Evil is
available (it is always available). We also don't need to write
additional dispatching functions, this is the job of Evil, and I think
it provides everything for this. Ideally configuration layer should be
implemented with only Evil in mind and the holy-mode (and hybrid-mode)
should magically make it work for Emacs style users, for instance we can
freely use `evil-insert-state` anywhere in the code without any guard.

Evil is now even more part of Spacemacs, we can really say that
Spacemacs is Emacs+Evil which is now an indivisible pair. Spacemacs
needed this stable API to continue on the right track.

While these changes should be rather transparent to the user, I'm sorry
for this experimental period, I failed to see all the implications of
such a change, I was just excited about the possibility to make Evil
optional. The reality is that Spacemacs has to embrace it and keep its
strong position on being Emacs+Evil at the core.

Implementation

- insert, motion and normal states are forced to emacs state using an
advice on `evil-insert-state`, `evil-motion-state` and
`evil-normal-state` respectively. These functions can be used freely in
the layer configuration.
- A new general hook `spacemacs-editing-style-hook` allow to hook any
code that need to be configured based on the editing style. Functions
hooked to this hook takes the current style as parameter, this
basically generalize the hook used to setup hjkl navigation bindings.
- ESC has been removed from the emacs state map.
- Revert unneeded changes
  - Revert "evil: enter insert-state only from normal-state"
    commit bdd702dfbe.
  - Revert "avoid being evil in deft with emacs editing style"
    commit f3a16f49ed.

Additional changes

All editing style packages have been moved to a layer called
`spacemacs-editing-styles`

Notes

I did not have time to attack hybrid mode, I should be able to do it
later.
2016-03-13 21:16:55 -04:00
justbur
d28537ec86 evilified: Remove stray bind-map declaration
It looks like it was not removed when the other one in the file was
added.
2016-03-03 20:53:42 +01:00
Diego Berrocal
e7e7f75d3f Add evil-scroll-line bindings to evilified state
Unless there is a valid reason why these shouldn't be included I think
we should keep them. after all we can yank with `v y` right?

squash! Add documentation
2016-01-17 23:56:56 -05:00
syl20bnr
046d86800c Clean copyrights and update for year 2016 2016-01-11 21:42:17 -05:00
justbur
1c94c84c09 bind-map: Add evilified state to evil major-mode keys
Fixes problem referred to in #4495
2016-01-08 20:52:53 +01:00
justbur
0b02475772 Use built-in evil functions to set default states
evil-set-initial-state is safer than manually adding and deleting from
the lists, because it knows about all available states and ensures that
the mode only shows up in one list. If it is in multiple list the
initial state depends on which is checked first, which we don't want.
2015-12-21 00:22:18 -05:00
syl20bnr
88fba59879 evilified-state: normalize modified evil keymaps
on visual state entry
also remove ESC key binding in evilified state
2015-12-20 00:49:52 -05:00
syl20bnr
17fae46f8b evilified state: fix visual state bindings
Clear the normal state keymap when in visual state
2015-12-14 00:38:02 -05:00
syl20bnr
dac714cdd6 evilified-state: allow back and forth between normal and evilified
using ESC.
2015-12-11 21:24:33 -05:00
syl20bnr
30e9a294d9 evilified-state: use a copy of evilified-state
instead of the map itself.
2015-12-08 02:08:50 -05:00
syl20bnr
0438ee43cf evilified-state: better tag for evilified state 2015-12-06 01:06:41 -05:00
syl20bnr
6fd2af2af3 evilified-state: support for magit remap entries in section maps
Add :pre-bindings keyword argument used to restore explicit key binding
in section maps.
2015-12-06 01:04:13 -05:00
syl20bnr
085d8f150a evilified state: fix visual state
reintroduce the pre-command hook which is required for visual state
borrow code from evil-magit to fix ESC bug in visual state in magit buffers
2015-12-05 23:13:40 -05:00
Allen Li
4321fccb05 Fix issue #3978
Duplicate prefix maps when evilifying maps to fix prefix binding getting
shared and overwritten between maps.
2015-12-01 01:18:01 -05:00
syl20bnr
97ae903317 evilified-state: remove unnecessary pre-command-hook 2015-12-01 00:46:19 -05:00
syl20bnr
1e6e4023e8 evilified-state: handle minibuffer
Fix isearch not working with evilified keys.
Requires last version (3.11 or above) of evil-escape to be fully
functional.
2015-11-30 11:30:18 -05:00
justbur
ee6a486d4c core: Add new set-key functions to core-keybindings
Set up to use bind-map instead of evil-leader for leader key
functionality.

Alias evil-leader funcs and remove package
2015-11-21 18:18:01 +01:00
syl20bnr
e3df025eff evilified-state: fix tests and rename library to evil-evilified-state 2015-11-19 00:24:27 -05:00