Add "s" snippet option which, if set, will cause trailing whitespace to
be stripped from lines before jumping to the next tab stop.
When used with a snippet like the following this will allow the text
from the $1 tabstop to be removed and have the space in front of that
automatically deleted when the user jumps to $2. This will work even if
using the same key for snippet expansion and jumping to the next
tabstop, whereas if the space was manually removed the key would cause
the snippet to be expanded again.
snippet do "do block" s
do `!p snip.rv = "|" if t[1] else""`${1:args}`!p snip.rv = "|" if t[1] else""`
$2
end
$0
endsnippet
When a Snippet object creates a SnippetInstance it should pass itself as
an argument, so that the instance can later get additional information
about the snippet.
Encapsulate the fact that options are stored as the original string that
was pulled from the definition. This will simplify things if that ever
needs to be changed.
There's no need to use different code to create a SnippetInstance based
on whether or not there's a parent. The arguments passed either way are
the same.
The 'sh' filetype in Vim covers sh, bash and ksh. This function looks
for declared variables that results from Vim's own test. The global
variables are checked first since they are typically specifed by the
user in .vimrc
Modify new_scratch_buffer method to leave the created buffer in command
rather than insert mode. Currently the only use of this method is for
showing stack traces for errors, when that happens it's much more likely
that the user will want to use command mode to move around than to use
insert mode to add text to the beginning of the buffer.
Exercise changes from commit 7335225, to check that the problem fixed by
that doesn't recur.
I've run all tests including this one both with and without the
previously mentioned commit, the new test only passes if that commit is
included. All other tests pass in either case.
Debian unstable currently has a pre-release version of screen 4.1.0.
This version changes the "stuff" command so that special characters get
parsed, breaking many of the tests.
Detect if the version of screen being used to run tests does this
parsing, and if so do additional escaping of characters so that tests
again work.
With this change, all tests pass with both old and new versions of
screen.
Put the code that instructs vim to write its buffer to a temporary file
and then reads that file into a python string into the VimInterface
class. This will allow that to be done by code outside of tests.
Create classes for interacting with vim, a base class with common
methods, a class for interacting via screen, and one for interacting on
Windows.
At startup time an instance of one of these classes is created, and that
object is passed to all of the tests instead of the session.
I haven't been able to get UltiSnips working in vim on Windows to really
test this, but I have verified that vim interactions still work.