在 2013年10月17日星期四UTC+8下午10时11分28秒,ZyX写道:
> On Oct 17, 2013 5:50 PM, "Yggdroot Chen" <archof...@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.
>
But for my vim7.4.0, ctrl-c can still raise KeyboardInterrupt, then the program stop running. I don't understand what you said that Interrupt signals are already ignored. Because I have not tried Vim 7.4.052.
I want to ignore the KeyboardInterrupt, but signal.signal(signal.SIGINT, signal.SIG_IGN) takes no effect, so I tried the code as mentioned to do nothing when ctrl-c is pressed, then the issue occurs.
--
--
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.
Thursday, October 17, 2013
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment