Hi Stefan, When I try to apply the patch you provided, I get error messages ("Hunk #1 FAILED at 931. Hunk #2 FAILED at 946. Hunk #3 FAILED at 960. Hunk #4 FAILED at 973. Hunk #5 FAILED at 1100."). I'm not sure why. Could you send me the patched flyspell.el file directly? thanks, --Ben ----------------------------------------------------------------------------------------------------- Dr Benjamin Slade Dept. of Linguistics & TESOL - University of Texas at Arlington 132E Hammond Hall | Office Hours: tba [http://ling.uta.edu/~ben/ ] Stæfcræft & Vyākaraṇa (lingblog) - http://staefcraeft.blogspot.com The Babbage Files (techblog) - http://babbagefiles.blogspot.com ----------------------------------------------------------------------------------------------------- Ongietan sceal gleaw hæle hu gæstlic bið, þonne ealre þisse worulde wela weste stondeð. --*The Wanderer*, ll. 73-4. On 14 September 2011 14:15, Stefan Monnier wrote: > > Using Emacs 24.0.50.1 with the flyspell package generates a (constantly > > repeating and annoying) message "blocking call to accept-process-output > with > > quit inhibited!!". It doesn't actually seem to "block" anything as > flyspell > > still functions as expected, but it's annoying. > > The message simply indicates that the code waits for some external event > (in this case answer from ispell) while quit is inhibited, which implies > that if ispell decides to take its time, Emacs will hang. > I.e. it indicates of a latent bug in flyspell.el. > > > Or something which can be fixed/hacked in Flyspell? > > Can you try the patch below? > > > Stefan > > > === modified file 'lisp/textmodes/flyspell.el' > --- lisp/textmodes/flyspell.el 2011-09-11 02:14:10 +0000 > +++ lisp/textmodes/flyspell.el 2011-09-14 19:14:21 +0000 > @@ -931,9 +931,10 @@ > ;;* previous word nor the current word */ > ;;*---------------------------------------------------------------------*/ > (defun flyspell-post-command-hook () > - "The `post-command-hook' used by flyspell to check a word in-the-fly." > + "The `post-command-hook' used by flyspell to check a word on-the-fly." > (interactive) > (when flyspell-mode > + (with-local-quit > (let ((command this-command) > ;; Prevent anything we do from affecting the mark. > deactivate-mark) > @@ -946,6 +947,7 @@ > (if (flyspell-check-word-p) > (progn > '(flyspell-debug-signal-word-checked) > + ;; FIXME: This should be asynchronous! > (flyspell-word) > ;; we remember which word we have just checked. > ;; this will be used next time we will check a word > @@ -960,7 +962,8 @@ > (setq flyspell-pre-pre-point nil) > ;; when a word is not checked because of a delayed command > ;; we do not disable the ispell cache. > - (if (and (symbolp this-command) (get this-command > 'flyspell-delayed)) > + (if (and (symbolp this-command) > + (get this-command 'flyspell-delayed)) > (progn > (setq flyspell-word-cache-end -1) > (setq flyspell-word-cache-result '_))))) > @@ -973,7 +976,7 @@ > (goto-char start) > (flyspell-word))) > (setq flyspell-changes (cdr flyspell-changes)))) > - (setq flyspell-previous-command command)))) > + (setq flyspell-previous-command command))))) > > ;;*---------------------------------------------------------------------*/ > ;;* flyspell-notify-misspell ... */ > @@ -1100,14 +1103,10 @@ > ;; we mark the ispell process so it can be killed > ;; when emacs is exited without query > (set-process-query-on-exit-flag ispell-process nil) > - ;; Wait until ispell has processed word. Since this > - ;; code is often executed from post-command-hook but > - ;; the ispell process may not be responsive, it's > - ;; important to make sure we re-enable C-g. > - (with-local-quit > + ;; Wait until ispell has processed word. > (while (progn > (accept-process-output ispell-process) > - (not (string= "" (car ispell-filter)))))) > + (not (string= "" (car ispell-filter))))) > ;; (ispell-send-string "!\n") > ;; back to terse mode. > ;; Remove leading empty element > > --