Subject: Possible bug in inhibit-quit/abort-recursive-edit

From: E Sabof <[email-masked]>
Date: Wed, 29 Jan 2014 01:07:27 +0000

The previous message was incomplete, and sent by accident. I have a complete
recipe now. Both forms are meant to be evaluated C-M-x, and followed by
abort-recursive-edit, or keyboard-quit.

;; QUIT gets inserted, and a Quit message is displayed.
(condition-case error
    (sleep-for 5)
  (quit (goto-char (point-max))
        (insert "QUIT")))

;; With abort-recursive-edit
;; QUIT doesn't get inserted. Quit isn't displayed in the mini-buffer

;; With keyboard-quit
;; QUIT doesn't get inserted. Quit is displayed in the mini-buffer

(condition-case error
    (let ((inhibit-quit t))
      (sleep-for 5))
  (quit (goto-char (point-max))
        (insert "QUIT")))

I understand why "QUIT" might not be displayed -- the signal is not
guaranteed to be sent immediately after then end of (let). But, shouldn't
abort-recursive-edit also cause Quit to be displayed in the minibuffer?

It so happens that I have abort-recursive-edit bound to C-g, and
((inhibit-quit t)) seems to discard all sent "C-g"s.

Evgeni

GNU Emacs 24.3.1 (x86_64-unknown-linux-gnu, GTK+ Version 3.6.4) of
2013-11-02 on ubuntu