As recommended by the Vim help (`:h <nomodeline>`):
After applying the autocommands the modelines are
processed, so that their settings overrule the
settings from autocommands, like what happens when
editing a file. This is skipped when the <nomodeline>
argument is present. You probably want to use
<nomodeline> for events that are not used when loading
a buffer, such as |User|.
Fixes: https://github.com/SirVer/ultisnips/issues/542
This ensure that we are actually testing against the python version that
we want to test again. A few weeks ago we still had the problem that all
our python3 tests ran against system python3 which was always 3.2. This
has been fixed a while ago, but this change makes sure we do not
regress.
Also fixes a couple of NOCOM comments that I left over in one of the
last commits.
- Remove support for python 3.2 to reduce number of test cases and because
it actually fails with Neovim. It is not a supported version anyways.
- Due to Neovim not handling fast typing through the console properly
(https://github.com/neovim/neovim/issues/2454), the typing is actually
simulated through the Python client. We need to differentiate now if a
keystroke is meant for the terminal or for the Vim session. Using
neovim.input() introduces additional chances for races since inputs
are not buffered but processed right away. This results in more
retries for some tests.
- Neovim needs more parameters and configuration passed in through the
test script. Added command line arguments for these.
- Skip an extra test under Neovim due to
https://github.com/neovim/python-client/issues/128.
It can be useful to set up mappings that apply only during expansion of
a snippet. UltiSnips does this internally with the `_setup_inner_state`
and `_teardown_inner_state` methods.
This commit adds some `User` autocommands so that users of UltiSnips can
set up their own mappings and tear them down at the same time as
`_setup_inner_state` and `_teardown_inner_state`.
This is particularly useful for people who are writing their own
expansion and jump functions using `UltiSnips#JumpForwards` and
`UltiSnips#ExpandSnippet()` and friends. Here's an example from my own
dotfiles:
- 0664b627e7
- 3740c248ee
Using this approach I've been able to get rid of Supertab and have a
more nuanced autocompletion experience that works exactly as I'd like
with YouCompleteMe.
The python module is now pulled in autoload/UltiSnips.vim. This means
that parsing of the .vimrc will only map the keys and set some options -
very cheap.
Unfortunately, the autocommands set up in plugin/UltiSnips.vim pulls in
the python code basically immediately still.