Loading ...
Sorry, an error occurred while loading the content.
 

Re: Call a function in insertmode without triggering InsertLeave

Expand Messages
  • EinfachToll
    ... Thank you. Will see if I use your suggested solution. -- -- You received this message from the vim_use maillist. Do not top-post! Type your reply below
    Message 1 of 3 , Jun 21, 2013
      Am Donnerstag, 20. Juni 2013 17:24:27 UTC+2 schrieb Ben Fritz:
      > On Thursday, June 20, 2013 3:46:33 AM UTC-5, EinfachToll wrote:
      > > I want to have some stuff executed when I press Escape, so I set an autocommand InsertLeave which works fine. But I don't want to execute it when Vim goes to normal mode during a mapping. So I changed
      > >
      > > :imap key <Esc>:call function()<CR>
      > >
      > > to
      > >
      > > :imap key <C-c>:call function()<CR>
      > >
      > > because the help says that <C-c> doesn't trigger the InsertLeave command. This is true when I type <C-c> manually, but not when I use it in a mapping. The autocommand is still executed. Is it a bug or a feature?
      > >
      >
      > It sure doesn't look like it is acting as documented but maybe I'm missing something. I can reproduce with a specific simple example on Windows 7 gvim 7.3.822, and also on Solaris with gvim 7.3.1169:
      >
      > gvim -N -u NONE -i NONE
      > let g:test = 0
      > au InsertLeave * let g:test+=1 | echomsg g:test "events"
      > imap <F1> <Esc>
      > imap <F2> <C-C>
      >
      > a<Esc> outputs "1 events"
      > a<C-C> doesn't output anything
      > a<F1> outputs "2 events"
      > a<F2> outputs "3 events"
      >
      > As a workaround, you could use an <expr> mapping that returns "\<C-c>:call function()\<CR>". But before returning, it would set eventignore to include InsertLeave. Then in your function called by the mapping, you could restore eventignore.
      >
      > But if you have plugins or autocmds which rely on balanced InsertLeave/InsertEnter events, they may break in unexpected ways.
      >
      > I can't find anything in the help that would explain the different behavior of <C-C> in a mapping (I did a :helpgrep CTRL-C).
      >
      > There is this nugget in todo.txt:
      > 8 Give a warning when using CTRL-C in the lhs of a mapping. It will never
      > (?) work.

      Thank you. Will see if I use your suggested solution.

      --
      --
      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

      ---
      You received this message because you are subscribed to the Google Groups "vim_use" group.
      To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
      For more options, visit https://groups.google.com/groups/opt_out.
    Your message has been successfully submitted and would be delivered to recipients shortly.