Thursday, September 29, 2011

Re: Insert a tab or call a function

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:
>>
>> function! DoTab()
>> if match(getline('.'), '^\s*$') != -1
>> call feedkeys("\<tab>") | return ''
>> else
>> call CloseMenu()
>> call feedkeys("\<c-r>=TriggerSnippet()\<cr>") | return ''
>> endif
>> endfu
>> ino <silent> <tab> <c-o>:call DoTab()<CR>
>>
>> CloseMenu is another function I have that closes a popup menu if it's
>> open, TriggerSnippet is a snipmate function that expands current snippet.
>
> 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.

-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

No comments:

Post a Comment