116 Commits

Author SHA1 Message Date
Stanislav Seletskiy
b50c5c86c3 pass all args to snip.expand_anon 2015-07-29 20:08:49 +06:00
Stanislav Seletskiy
9649f15a9e fix buffer edits from jump action 2015-07-29 20:08:49 +06:00
Stanislav Seletskiy
5a663116f5 edge case: anon snip in pre-action 2015-07-29 20:08:49 +06:00
Stanislav Seletskiy
1e771de603 fix tests 2015-07-29 20:08:49 +06:00
Stanislav Seletskiy
ba774c39ca review fixes 2015-07-29 20:08:49 +06:00
Stanislav Seletskiy
8958b71341 add docs to the buffer proxy object 2015-07-29 20:08:49 +06:00
Stanislav Seletskiy
bc29e23226 VimBufferHelper -> VimBufferProxy 2015-07-29 20:08:49 +06:00
Stanislav Seletskiy
972305725f fix expan_anon in pre-action, snip object, fixes 2015-07-29 20:08:49 +06:00
Stanislav Seletskiy
191ebd8e8b migrate to snip.* namespace 2015-07-29 20:08:34 +06:00
Stanislav Seletskiy
7ead6fa178 detect buffer changes via changedtick 2015-07-29 20:08:34 +06:00
Stanislav Seletskiy
760fd25e47 fix python3 compatibility 2015-07-29 20:08:34 +06:00
Stanislav Seletskiy
1ca82f76f7 pre/post-expand and post-jump actions 2015-07-29 20:08:34 +06:00
Holger Rapp
67fbdb2ad8 Handle $0 in a default text like any other tabstop.
Also change timing for testing again.

Fixes #356.
2015-07-27 17:11:35 +02:00
Holger Rapp
300156642c Support $n tabstops for snipMate snippets.
Before, only ${n} tabstops were supported. Apparently snipMate changed
this behavior though, so now we support that too.

Fixes #533.
2015-07-20 15:01:49 +02:00
Holger Rapp
cd0e60bc0f Remove no longer needed langmap translation.
Vim now has the 'langnoremap' option that handles issues with mapping
much more canonical.
2015-07-18 17:33:27 +02:00
Greg Hurrell
c4ee3ecf10 Fire autocommands when setting up and tearing down inner state
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.
2015-07-13 07:11:39 +02:00
Holger Rapp
29d7080d64 Do not set up inner state if it is already setup.
This makes _(setup|teardown)_inner_state symmetric.
2015-07-12 20:05:33 +02:00
Holger Rapp
324a4f8ffc Support regexp trigger ending in whitespace.
Fixes #178.
2015-07-11 18:11:19 +02:00
Holger Rapp
6b12b11411 Only set autocommands when there are snippets.
This speeds up cursor movement when there is no snippet activated.

Fixes #518.
2015-07-11 17:11:04 +02:00
Holger Rapp
becab789a8 Remove bootstrap.vim. Simplify startup.
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.
2015-07-11 16:17:50 +02:00
Daniel Hahler
8c257e24e0 VimBuffer: use vim.current.buffer.number instead of vim.eval
This should be more performant.
2015-06-27 18:23:46 +02:00
Holger Rapp
d6098193ef Merge pull request #446 from seletskiy/context-snippets
New feature: Context-aware snippets
2015-05-01 14:35:19 +02:00
Stanislav Seletskiy
463e68a611 fix for correct error reporting 2015-05-01 18:03:21 +06:00
Stanislav Seletskiy
099d3bcfbc Add more precise undo levels (expanding, jumping)
Breaking undo achieved through re-setting &undolevel:

    Setting the value of 'undolevels' also breaks undo. Even when the new
    value is equal to the old value.

    [:h :undoj]
2015-04-27 19:30:17 +06:00
Stanislav Seletskiy
904fbdecf5 review fixes 2015-04-25 21:38:22 +06:00
Stanislav Seletskiy
709f8dc93f minor doc fix and new cursor variable 2015-04-19 11:08:14 +06:00
Stanislav Seletskiy
66bc2e8f6e documentation, pull-requests fixes 2015-04-19 11:08:14 +06:00
Stanislav Seletskiy
0beefd4a19 fix context match on False value 2015-04-19 11:06:03 +06:00
Stanislav Seletskiy
ed8cf49115 fix tests 2015-04-19 11:06:03 +06:00
Stanislav Seletskiy
b3aec07053 proof of concept for context snips 2015-04-19 11:04:57 +06:00
Holger Rapp
4b39bf6558 Priority must always be an integer. 2015-04-18 17:32:36 +02:00
Holger Rapp
99eede1bf6 Started to test py2 and py3 on travis now.
I also learned that Vim 7.3 does not seem to be working at all anymore.
Fixes a bug that only happens with python3.
2015-04-18 17:15:05 +02:00
kawing.chiu
f9a22111f0 Fix adjacent tabstop input issue.
Previously, adjacent tabstops like $1$2 were not handled properly.
$2 could be jumped to but no text could be added. See issue #457.
2015-03-13 23:49:45 +08:00
Holger Rapp
09876e0084 Support for m (trim) snippet option. 2015-02-14 14:20:03 +01:00
Dettorer
c1bde18cdf Add support vim's langnoremap new option
This fixes the following issue:
https://github.com/SirVer/ultisnips/issues/431
2015-02-12 16:27:25 +01:00
Stanislav Seletskiy
81a628c6ea Add option 'm' for trimming whitespaces in snippet
Fix #391
2015-02-04 11:55:28 +06:00
Stanislav Seletskiy
b47e686521 do not walk &rtp if abs path to snips specified 2015-01-21 17:57:33 +06:00
Holger Rapp
6a787cdc7b Applied pyformat on entire codebase. 2015-01-20 21:26:03 +01:00
Holger Rapp
e1436a8aeb Accept numbers and text for disabling snipMate. 2015-01-15 08:17:37 +01:00
Holger Rapp
7df82bbe53 Merge pull request #415 from seletskiy/toggle-snipmate
add g:UltiSnipsEnableSnipMate
2014-12-20 18:39:50 +01:00
Stanislav Seletskiy
fc080b4fd5 add g:UltiSnipsEnableSnipMate 2014-12-18 12:05:52 +06:00
Michael Reed
c050d68e5a Check if editor is Neovim when setting snippet_dir 2014-12-06 00:41:13 -05:00
John Szakmeister
e502c9ba84 Fix a couple of typos. 2014-11-24 04:06:31 -05:00
John Szakmeister
8b2115ec26 Fix #171: UltiSnips crashes in new file with text containing 0x80 char
It turns out that vim.eval() will attempt to do Unicode conversion and
can fail when raw bytes are present in the unnamed register.  To avoid
this problem, let's not carry the value across the bridge, and instead
store the cached value in Vim directly.  This successfully sidesteps the
issue entirely, and provides the correct save and restore behavior.

This also adds a test case for the issue.  Since expansion can finish
(despite the errors), the test has to capture the error messages and
examine them for a failure.
2014-11-21 06:09:49 -05:00
John Szakmeister
f4df1bd9e8 Teach _vim_enc to handle UnicodeDecodeErrors.
It's possible that when using _vim_dec with Python 2 that we fail to
convert the string to Unicode and just return the raw string instead.
This could happen, for instance, when there was arbitrary data in the
unnamed register during the save/restore process.  During restoration,
we'd attempt to encode the string, but this may fail with a
UnicodeDecodeError as Python attempts to first convert to Unicode and
then to the requested encoding.

To fix this, let's also catch `UnicodeDecodeError` and return the raw
string if we fail to convert.
2014-11-21 06:09:18 -05:00
Glenn Griffin
482650a009 Use shiftwidth() where available. This allows UltiSnips to work properly when
shiftwidth is zero. Per ":help shiftwidth":

shiftwidth()                                            shiftwidth()
                Returns the effective value of 'shiftwidth'. This is the
                'shiftwidth' value unless it is zero, in which case it is the
                'tabstop' value.  To be backwards compatible in indent
                plugins, use this:
                        if exists('*shiftwidth')
                          func s:sw()
                            return shiftwidth()
                          endfunc
                        else
                          func s:sw()
                            return &sw
                          endfunc
                        endif
                And then use s:sw() instead of &sw.
2014-10-07 17:24:55 -07:00
Holger Rapp
c3660128ac Implements clearsnippets by priority. 2014-08-02 14:55:27 +02:00
cwahbong
0abfc3bece Some refinements.
1. Add docstrings.
2. Re-implement get_deep_extends().
3. Remove all inners.
2014-08-01 14:32:47 +08:00
cwahbong
4784a9e126 Refactor: snippet dictionary does not keep the extend info now. 2014-08-01 14:32:47 +08:00
cwahbong
20f3832ffa Code cleanup.
Full tested and does not break and old tests.
2014-08-01 14:32:47 +08:00