Indicate success or failure of expansions and jumps
Patch by Jorge Rodrigues.
This commit is contained in:
parent
5fe09b8e3a
commit
1690986d23
@ -11,6 +11,7 @@ UltiSnips *snippet* *snippets* *UltiSnips*
|
|||||||
3. Settings & Commands |UltiSnips-settings|
|
3. Settings & Commands |UltiSnips-settings|
|
||||||
3.1 Commands |UltiSnips-commands|
|
3.1 Commands |UltiSnips-commands|
|
||||||
3.2 Triggers |UltiSnips-triggers|
|
3.2 Triggers |UltiSnips-triggers|
|
||||||
|
3.2.1 Using your own trigger functions |UltiSnips-trigger-functions|
|
||||||
3.3 Snippet Search Path |UltiSnips-snippet-search-path|
|
3.3 Snippet Search Path |UltiSnips-snippet-search-path|
|
||||||
3.4 Warning About Select Mode Mappings |UltiSnips-warning-smappings|
|
3.4 Warning About Select Mode Mappings |UltiSnips-warning-smappings|
|
||||||
3.5 Functions |UltiSnips-functions|
|
3.5 Functions |UltiSnips-functions|
|
||||||
@ -223,6 +224,50 @@ vimrc file. >
|
|||||||
let g:UltiSnipsJumpForwardTrigger="<tab>"
|
let g:UltiSnipsJumpForwardTrigger="<tab>"
|
||||||
let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
|
let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
|
||||||
|
|
||||||
|
3.2.1 Using your own trigger functions *UltiSnips-trigger-functions*
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
For advanced users there are four functions that you can map directly to a
|
||||||
|
key and that correspond to some of the triggers previously defined:
|
||||||
|
g:UltiSnipsExpandTrigger <--> UltiSnips_ExpandSnippet
|
||||||
|
g:UltiSnipsJumpForwardTrigger <--> UltiSnips_JumpForwards
|
||||||
|
g:UltiSnipsJumpBackwardTrigger <--> UltiSnips_JumpBackwards
|
||||||
|
|
||||||
|
If you have g:UltiSnipsExpandTrigger and g:UltiSnipsJumpForwardTrigger set
|
||||||
|
to the same value then when the function you are actually going to use is
|
||||||
|
UltiSnips_ExpandSnippetOrJump.
|
||||||
|
|
||||||
|
Each time any of the functions UltiSnips_ExpandSnippet,
|
||||||
|
UltiSnips_ExpandSnippet, UltiSnips_JumpBackwards or UltiSnips_JumpBackwards is
|
||||||
|
called a global variable is set that contains the corresponding return value
|
||||||
|
of the corresponding function.
|
||||||
|
|
||||||
|
The corresponding variables and functions are:
|
||||||
|
UltiSnips_ExpandSnippet --> g:ulti_expand_res (0: fail, 1: success)
|
||||||
|
UltiSnips_ExpandSnippetOrJump --> g:ulti_expand_or_jump_res (0: fail,
|
||||||
|
1: expand, 2: jump)
|
||||||
|
UltiSnips_JumpForwards --> g:ulti_jump_forwards_res (0: fail, 1: success)
|
||||||
|
UltiSnips_JumpBackwards --> g:ulti_jump_backwards_res (0: fail, 1: success)
|
||||||
|
|
||||||
|
To see how these return values may come in handy suppose that you want to map
|
||||||
|
a key to expand or jump, but if none of these actions is successful you want
|
||||||
|
to call another function. Ultisnips already does this automaticall for supertab, but
|
||||||
|
this allows you individual fine tuning of your tab key usage.
|
||||||
|
|
||||||
|
Usage is as follows: You define a function >
|
||||||
|
|
||||||
|
let g:ulti_expand_or_jump_res = 0 "default value, just set once
|
||||||
|
function! Ulti_ExpandOrJump_and_getRes()
|
||||||
|
call UltiSnips_ExpandSnippetOrJump()
|
||||||
|
return g:ulti_expand_or_jump_res
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
then you define your mapping as >
|
||||||
|
|
||||||
|
inoremap <NL> <C-R>=(Ulti_ExpandOrJump_and_getRes() > 0)?"":IMAP_Jumpfunc('', 0)<CR>
|
||||||
|
|
||||||
|
and if the you can't expand or jump from the current location then the
|
||||||
|
alternative function IMAP_Jumpfunc('', 0) is called.
|
||||||
|
|
||||||
3.3 Snippet Search Path *UltiSnips-snippet-search-path*
|
3.3 Snippet Search Path *UltiSnips-snippet-search-path*
|
||||||
-----------------------
|
-----------------------
|
||||||
@ -1164,7 +1209,6 @@ bug tracker where you can report bugs and issues.
|
|||||||
This project aims to be the one-for-all solution for Snippets for Vim. If you
|
This project aims to be the one-for-all solution for Snippets for Vim. If you
|
||||||
miss a feature or find a bug, please contact me or file a support ticket.
|
miss a feature or find a bug, please contact me or file a support ticket.
|
||||||
|
|
||||||
|
|
||||||
=============================================================================
|
=============================================================================
|
||||||
7. Contributors *UltiSnips-contributors*
|
7. Contributors *UltiSnips-contributors*
|
||||||
|
|
||||||
@ -1200,7 +1244,8 @@ Contributors listed in chronological order:
|
|||||||
lucapette
|
lucapette
|
||||||
Psycojoker - Laurent Peuch
|
Psycojoker - Laurent Peuch
|
||||||
aschrab - Aaron Schrab
|
aschrab - Aaron Schrab
|
||||||
NagatoPain (stardiviner)
|
stardiviner - NagatoPain
|
||||||
|
skeept - Jorge Rodrigues
|
||||||
|
|
||||||
|
|
||||||
7.2 Snippets *UltiSnips-contrisnippets*
|
7.2 Snippets *UltiSnips-contrisnippets*
|
||||||
@ -1216,7 +1261,7 @@ Contributors listed in chronological order:
|
|||||||
Georgi Valkov (gvalkov)
|
Georgi Valkov (gvalkov)
|
||||||
Miek Gieben (miek)
|
Miek Gieben (miek)
|
||||||
Aldis Berjoza (graudeejs)
|
Aldis Berjoza (graudeejs)
|
||||||
Jorge (skeept)
|
Jorge Rodrigues (skeept)
|
||||||
Martin Grenfell (scrooloose)
|
Martin Grenfell (scrooloose)
|
||||||
Laughedelic
|
Laughedelic
|
||||||
Anthony Wilson (anthonywilson)
|
Anthony Wilson (anthonywilson)
|
||||||
|
@ -526,17 +526,23 @@ class SnippetManager(object):
|
|||||||
|
|
||||||
@err_to_scratch_buffer
|
@err_to_scratch_buffer
|
||||||
def jump_forwards(self):
|
def jump_forwards(self):
|
||||||
|
_vim.command("let g:ulti_jump_forwards_res = 1")
|
||||||
if not self._jump():
|
if not self._jump():
|
||||||
|
_vim.command("let g:ulti_jump_forwards_res = 0")
|
||||||
return self._handle_failure(self.forward_trigger)
|
return self._handle_failure(self.forward_trigger)
|
||||||
|
|
||||||
@err_to_scratch_buffer
|
@err_to_scratch_buffer
|
||||||
def jump_backwards(self):
|
def jump_backwards(self):
|
||||||
|
_vim.command("let g:ulti_jump_backwards_res = 1")
|
||||||
if not self._jump(True):
|
if not self._jump(True):
|
||||||
|
_vim.command("let g:ulti_jump_backwards_res = 0")
|
||||||
return self._handle_failure(self.backward_trigger)
|
return self._handle_failure(self.backward_trigger)
|
||||||
|
|
||||||
@err_to_scratch_buffer
|
@err_to_scratch_buffer
|
||||||
def expand(self):
|
def expand(self):
|
||||||
|
_vim.command("let g:ulti_expand_res = 1")
|
||||||
if not self._try_expand():
|
if not self._try_expand():
|
||||||
|
_vim.command("let g:ulti_expand_res = 0")
|
||||||
self._handle_failure(self.expand_trigger)
|
self._handle_failure(self.expand_trigger)
|
||||||
|
|
||||||
@err_to_scratch_buffer
|
@err_to_scratch_buffer
|
||||||
@ -566,10 +572,13 @@ class SnippetManager(object):
|
|||||||
expansion and forward jumping. It first tries to expand a snippet, if
|
expansion and forward jumping. It first tries to expand a snippet, if
|
||||||
this fails, it tries to jump forward.
|
this fails, it tries to jump forward.
|
||||||
"""
|
"""
|
||||||
|
_vim.command('let g:ulti_expand_or_jump_res = 1')
|
||||||
rv = self._try_expand()
|
rv = self._try_expand()
|
||||||
if not rv:
|
if not rv:
|
||||||
|
_vim.command('let g:ulti_expand_or_jump_res = 2')
|
||||||
rv = self._jump()
|
rv = self._jump()
|
||||||
if not rv:
|
if not rv:
|
||||||
|
_vim.command('let g:ulti_expand_or_jump_res = 0')
|
||||||
self._handle_failure(self.expand_trigger)
|
self._handle_failure(self.expand_trigger)
|
||||||
|
|
||||||
@err_to_scratch_buffer
|
@err_to_scratch_buffer
|
||||||
|
Loading…
Reference in New Issue
Block a user