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.