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
