On 09/29/2011 08:15 AM, Christian Brabandt wrote:
On Thu, September 29, 2011 1:52 pm, AK wrote:
On 09/29/2011 01:58 AM, Benjamin R. Haskell wrote:
On Wed, 28 Sep 2011, AK wrote:
Hi, I'm trying to write a small function that is called when I press
tab key and checks if current line is empty; if it is, it should
insert a tab, and if not, it should call two other functions. Here's
the example of what I came up with, which does not work right:
Wanting to either insert something or run another function is a good
case for<expr> mappings. It depends a bit on how TriggerSnippet works,
the following might be all you need:
fun! DoTab()
if getline('.') =~ '^\s*$'
return "\<tab>"
else
call CloseMenu()
return TriggerSnippet()
endif
endfun
ino<expr> <tab> DoTab()
I get 'E523: not allowed here' in TriggerSnippet. I tried :set secure ,
but that did not help.
I think what happens is, that one of your functions triggers an
action, that is not allowed inside an expr-mapping. If you need to do
something like this, you need to have the functions return the
commands, that will do that.
See :h :map-<expr>
and look at the third paragraph.
I would like to avoid changing trigger snippet function because it's
complicated and to be able to upgrade it later. The issue is,
I want to call the function using a mapping to <c-o>:call myfunc()<cr>
and then I want it to do the check, and to insert a literal tab without
any side effects if current line is empty; if line is not empty, I need
it to run CloseMenu and then trigger snippet.
When this line runs:
call feedkeys("\<tab>", 'n') | return ''
TriggerSnippet is triggered.. and I don't understand why that happens, I
thought this should input a literal tab?
-ak
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php