Thursday, October 17, 2013

Re: vim.command() always throw exception after KeyboardInterrupt


On Oct 17, 2013 5:50 PM, "Yggdroot Chen" <archofortune@gmail.com> wrote:
>
> I encounter a critical issue when writing vim script using python, for example the code is as below:
>
> def func():
>     try:
>         while 1:
>             xxx
>             xxx
>     except KeyboardInterrupt:
>         pass
>
>     vim.command("xxxx")
>
> I press ctrl-c to interrupt the program, after KeyboardInterrupt is raised, vim.command() always throw an exception,which is KeyboardInterrupt in vim7.3 and vim.error in vim7.4.
>
> I want to use "signal.signal(signal.SIGINT, signal.SIG_IGN)" to ignore SIGINT,but it doesn't work.

Interrupt signals are already ignored.

vim.command is now "wrapped in a try-catch block" (it is really a pair of C functions). All vim exceptions are transformed into python ones, with vim.error class, and Vim:Interrupt is one of them. Code that was used to transform exceptions did change. You should now catch vim.error and match against error string: got_int apparently is not set inside :try/:catch because interrupts are transformed into exceptions thus code (present in VimTryEnd) that should be preferring raising KeyboardInterrupts over vim.error is useless.

And note that it is currently not possible to interrupt python code in most cases: signals are ignored and input is not polled when running python code.

> Any one knows this issue?
>
> --
> --
> 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@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.

--
--
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@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

No comments: