There are many stuff that we have in spacemacs which are creating new
layers and also creating micro-states. This Snippets try to help with
the process (the micro-state is a work in progress).
I also set the binding `C-s-/` to `(yas-next-field-or-maybe-expand)`
because `tab` doesn't have the behaviour I quite want (to be able to
expand a snippet like (defun) inside the new-package snippet and still
be able to continue in the outer snippet afterwards. With `tab` this
is *not* possible, but with `C-M-/` it *is*.
Changed variable name
Changed keybinding
Renamed snip-dir to spacemacs-snippets-dir
Moved `setq` outsidde of inizialization function, and the keybindning
too
yas-global-mode is always enabled to ensure snippets are loaded
properly, but to use the snippets, a major mode must have yas-minor-mode
enabled. This commit ensure such condition happen.
By checking if the yas-minor-mode is enabled. If so, load yasnippet. We
must do so because some package might load yasnippet and make
yas-minor-mode definition available, thus prevent Spacemacs to load
yasnippet properly. By checking yas-global-mode variable, we can assure
that yas-global-mode is enabled properly.
Also exclude yasnippet from eshell.
This is because the list of snippet dirs had our
~/.emacs.d/private/snippets at the end so it doesn't guess that.
Something must have changed upstream. Also it's better to have our own
custom snippets to be first so as to override the default ones if we
pleased.
It is reported in this issue: https://github.com/company-mode/company-mode/issues/180
that company has distorted completion popup with fci-mode turned on.
Company maintainer proposed a fix for this issue that is added in this
commit.
Currently by default company knows when to flip the popup. However, when
the above option is set to t, it causes a strange behaviour: when the
tooltip is flipped, press down (i.e. M-n or arrow key) go up and press
up (i.e. M-p or arrow key) go down.
- RET is not used anymore
- TAB complete the common prefix and cycle between candidates
- To complete the selection use C-l or `jk` pressed quickly
- Yasnippet expand uses hippie-expand and M-/ or C-p
It is important to define the buffer local backend variables
in a config.el otherwise it is not available in the layer
configuration if the auto-completion layer is removed.
There were also some issues by hiding the explicit
configuration of company inside a macro, for instance
helm-spacemacs is unable to display the company package
configured in a given layer if the auto-completion layer
is removed.
Move company and auto-complete to a common layer.
They are not enabled globally anymore, each mode using them
must explicitly declare a hook.
Only one frontend is supported for a given mode, we have to
choose the best between the two.
Only one key binding to toggle auto-completion on `SPC t a` no
matter if it is company or auto-complete. The lighter in the
mode-line is Ⓐ for both frontends.