Commit graph

52 commits

Author SHA1 Message Date
syl20bnr b697571021 Revert default value of hybrid-mode-default-state to normal 2016-03-17 17:43:10 -04:00
syl20bnr 50ff429f81 Set hybrid-mode-default-state default value to hybrid 2016-03-16 23:41:45 -04:00
syl20bnr ca5b8be90b New hybrid mode variable hybrid-mode-enable-evilified-state
When non nil then evilified buffer use evilified state, otherwise
they use the emacs state (may put the hybrid state if users get
confused).
2016-03-16 23:34:20 -04:00
syl20bnr 2d61e5304e core: add support for :variables keyword in dotspacemacs-editing-style
Add variable `hybrid-mode-enable-hjkl-bindings` to enable hjkl
navigation in hybrid mode.

example:

dotspacemacs-editing-style '(hybrid :variables
                                     hybrid-mode-enable-hjkl-bindings t
                                     hybrid-mode-default-state 'normal)
2016-03-16 22:43:50 -04:00
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
justbur f6b82ee90d helm/ivy: Use hook to update hjkl navigation
Introduce hjkl-completion-navigation-functions to hold the functions to
disable and enable hjkl navigation for ivy and/or helm. The hook is run
with args to indicate whether to enable or disable.
2016-02-16 23:53:43 -05:00
justbur 18874c9a3e hybrid-mode: Simplify implementation
Make use of new evil variable evil-disable-insert-state-bindings. This
is better because we are not copying evil code to get hybrid state to
work. We should not need to worry about tracking upstream evil changes
with this version of hybrid mode.

The only effect I can think of with this change is that there is no
longer a distinct hybrid-map, since there is no longer a distinct hybrid
state. This means that, for example, (evil-define-key 'hybrid ...)
will throw an error. You can either use (evil-define-key 'insert ...) or
the preferred (global-set-key ...). The latter is preferred because the
purpose of hybrid mode is to not interfere with Emacs bindings in insert
state.

Use post-init-evil function to load
It's a bit safer than with-eval-after-load, in case evil gets loaded
before its init function is called.

Add entry and exit hooks

Add temporary wrapper to evil-define-key
This is so that calls like (evil-define-key 'hybrid ...) do not fail
after switching over. Instead issue a warning for all such instances and
bind using define-key instead.
Also define evil-hybrid-state-map and make it the parent of
evil-insert-state-map this will prevent calls like (define-key
evil-hybrid-state-map ...) from failing.
These are both temporary and are only intended to smooth the transition
to the new version of hybrid-mode.
2016-02-01 00:20:58 -05: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
syl20bnr ea333f7282 completion: move hjkl function to layers and treat ivy as a package 2016-01-09 15:29:37 -05:00
justbur 32f523e062 spacemacs-helm: New layer
Collect helm configuration from spacemacs and spacemacs-base into one
place. The purpose is to allow choice between this layer and
spacemacs-ivy.
2016-01-09 13:36:03 -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
syl20bnr 2f479eedc3 holy-mode: fix handling of evil-escape 2016-01-05 00:58:05 -05:00
syl20bnr 96a648d1da Update deprecation TODO to 0.106 2016-01-03 22:46:01 -05:00
Eivind Fonn 24d0fe3b7b Set helm-org-format-outline-path to t by default
Also ensure FAQ source works regardless of this setting
2016-01-03 18:30:41 +01:00
Eivind Fonn 9642c35a6a Fix helm-spacemacs FAQ candidates
Yes helm, please do keep changing your API
2015-12-27 13:03:20 +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 5463a370bd holy-mode: fix toggle rule regression
From doc:
SPC t e E toggles between vim and emacs styles (corrected)
SPC t e h toggles between vim and hybrid styles (was correct)
2015-12-21 00:14:46 -05:00
justbur 27fa611af6 holy-mode: Disable certain modes on activation
Includes evil-escape-mode and hybrid-mode for now, but more can be added
to holy-mode-modes-to-disable-alist.
2015-12-21 00:13:34 -05:00
justbur 84a8f124df hybrid-mode: Add option to change default state
Useful for those who want to start in hybrid state with emacs bindings.
2015-12-21 00:13:29 -05:00
justbur 1d05f3887a holy-mode == (evil-mode -1)
The proper holy-mode (IMO). Simply disable evil-mode and reset the
cursor and mode-line settings.
2015-12-20 23:25:48 -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
Eivind Fonn 03c83e169c helm-spacemacs: Fix FAQ source
See commits regarding https://github.com/emacs-helm/helm/issues/1294
2015-12-18 11:27:37 +01: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
Diego Berrocal 8fb3af3e56 Add ability to **add** a layer in helm-spacemacs
I've been introducing tons of people to Spacemacs, and most of them
always think that having to read documentation in how to add a layer is
too much.

I made this modification to make it easier to install layers.
2015-12-11 02:13:17 -05:00
Fabien Dubosson 315528c89f Refactor CONTRIBUTING documentations
This commit merge the `CONTRIBUTING.md` and `doc/CONTRIBUTE.org` file
into a new `CONTRIBUTING.org` file. It also refactors the content to be
more organized and make its navigation more goal-oriented.

Github displays a link to the `CONTRIBUTING.*` file when people are
opening new issues or proposing new PRs. This file is important because
it is the entry-point to contributions guidelines for most of the users.
The current setup is non-optimal, even broken, as it adds a level of
indirection, and points to a contributing file that has broken
links (due to the new documentation format). The possible drawback of
the proposed solution is that I'm not sure if it is possible to include
it into the new online documentation as it is not in `doc/` folder.

The other possibility is to keep a small `CONTRIBUTING.md` file, as it
is now, pointing to the new documentation system (once online), but I'm
preferring the proposed solution for the following reasons:

- People that are willing to contribute will probably open Github
  first (for forking, creating PR, etc), not the online documentation.

- It has one level of indirection less when people click on the
  guidelines guide from a new issue/PR.

- `CONTRIBUTING.*` is by convention a special kind of file on github, so
  it's valid reason to break the rule and not having it in the `doc/`
  folder.
2015-12-11 01:09:09 -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
vijaykiran d6be41a4e8 Fix Latin function name
Apparently ` in-nominus-patris-et-filii-et-sipritus-sancti` should be
`in-nomine-patris-et-filii-et-sipritus-sancti`

See: https://en.wikipedia.org/wiki/Trinitarian_formula
Via: https://twitter.com/PeterHilton/status/672133909795196928
2015-12-03 23:54:15 -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
kr5x 05a40a2ee2 holy-mode: fix #3876 2015-11-19 12:36:03 +01:00
syl20bnr e3df025eff evilified-state: fix tests and rename library to evil-evilified-state 2015-11-19 00:24:27 -05:00
justbur b294461957 evilified-state: Make into local package 2015-11-18 23:35:01 -05:00
Eivind Fonn 88c019d4d6 Fix helm-spacemacs package action 2015-11-12 10:49:31 +01:00
Eivind Fonn a991927288 Beautify helm-spacemacs 2015-11-11 23:01:54 +01:00
Eivind Fonn fa975c4c45 Fix helm-spacemacs with new FAQ.org format 2015-11-02 15:05:39 +01:00
Fabien Dubosson 8d3c59c78f Discard buffer from marker, switch to it when asked 2015-10-09 12:11:24 +02:00
Fabien Dubosson 6442e00b2e Use a temp buffer to read the FAQ in helm-spacemacs
Correct a bug in helm-spacemacs: Whenever a function was needing the
FAQ's candidates in helm-spacemancs (`SPC f e h` and `SPC f e f`), the
`FAQ.org` file was open in a buffer and not closed. This commit corrects
this by loading the content of `FAQ.org` in a temp buffer and switch it
to `org-mode` in order to get the candidates.
2015-10-09 12:11:24 +02:00
Fabien Dubosson 5e3dbd9234 Add FAQ as a source in helm-spacemacs
Add the `FAQ.org` file as a source in helm-spacemacs (`SPC f e h`).
Define a new keybinding for looking directly inside the FAQ with helm:
`SPC f e f`.

With help from TheBB, thanks!
2015-10-07 15:51:38 -04:00
Eivind Fonn 273d6b5d11 helm-spacemacs: action to open readme for editing 2015-10-05 12:16:46 +02:00
syl20bnr 983e569de6 hybrid: redefine evil-insert-state-p
If it has nasty side effects we will just revert it in favor of the
precedent commit.
2015-09-26 00:54:56 -04:00
justbur 90fc25a19c hybrid: Prevent C-SPC toggling visual from hybrid
Redefines the `evil-visual-activate-hook` to add hybrid to the list of
states that don't go into visual state when the mark is activated
2015-09-26 00:45:45 -04:00