Subject: bug#12161: 24.1.50; delete-selection mode vs ask-user-about-supersession-threat

From: Matthew Woodcraft <[email-masked]>
Date: Wed, 08 Aug 2012 23:49:16 +0100

The following code in delsel.el doesn't seem to be working any more:

	(file-supersession
	 ;; If ask-user-about-supersession-threat signals an error,
	 ;; stop safe_run_hooks from clearing out pre-command-hook.
	 (and (eq inhibit-quit 'pre-command-hook)
	      (setq inhibit-quit 'delete-selection-dummy))

I think it hasn't been adjusted for the changes in Emacs 24 which make
safe_run_hooks remove a single function from the hook, rather than
clearing out the hook altogether.

If I change the (eq inhibit-quit 'pre-command-hook) to
(equal inhibit-quit '(pre-command-hook . delete-selection-pre-hook))
then it works again for me.

Full recipe to reproduce:

echo 12345 > /tmp/testfile
emacs -Q /tmp/testfile
M-x delete-selection-mode
  (in another console: touch /tmp/testfile)
C-M-h
DEL
At the prompt 'testfile changed on disk; really edit the buffer?', enter 'n'
The prompt appears a second time; enter 'n' (or 'y')

Now Emacs thinks it is in delete-selection-mode, but the pre-command-hook has
mysteriously evaporated.

-----

In GNU Emacs 24.1.50.2 (i486-pc-linux-gnu, GTK+ Version 3.4.2)
 of 2012-08-08 on golux, modified by Debian
 (emacs-snapshot package, version 2:20120807-1mjw1)