On 9/3/2013 3:09 PM, Ernie Rael wrote:
The discussion "Asynchronous functions (settimeout, setinterval, and
cancelinterval)" reminded me of some past discussion on interrupting a
looping python. I don't remember the details; my recollection is that
vim checks the input character (rather than catching the signal) and
if it is the interrupt character then the running vim operation is
stopped. If there is a looping python, then vim's main loop can not
process the input character queue and there is no way to notify python
to stop. There may also be a vim versus gvim issue.
It seems that if the SIGINT is always caught/handled and only used to
set a flag such as: interrupt_pending = TRUE, then vim's main loop
could do something like
if(interrupt_pending == TRUE) {
interrupt_pending = FALSE;
/* do vim's process interrupt stuff */
}
which should preserve existing behavior by doing the interrupt
handling in the main loop.
Then for handling the python situation, vim's interrupt processing
would have to invoke something in the python interface that in turn
invokes PyErr_SetInterrupt() if python is running.
Doh! Vim's main loop doesn't run, so vim's interrupt processing would
never run; the previous sentence is nonsense. For python support for
handling interrupt, the signal handler would have to invoke the python
interface and that would only work if PyErr_SetInterrupt() does no more
than sets a flag that is noticed by the python interpreters main loop.
I'm not familiar with any of this code (vim or python interface) but I
wanted to put this out so I could drop it from my mental list.
-ernie
--
--
You received this message from the "vim_dev" 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_dev" 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.