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

Reply via email to