在 2013年10月17日星期四UTC+8下午10时11分28秒,ZyX写道: > On Oct 17, 2013 5:50 PM, "Yggdroot Chen" <[email protected]> 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 [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
