From f13e84fa4b4c387a05aef02648e6754093e13e61 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Mon, 19 Nov 2001 06:21:11 +0000 Subject: [PATCH] (delete-selection-pre-hook): Handle and resignal file-supersession errors to interact properly with userlock.el. --- lisp/delsel.el | 43 +++++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/lisp/delsel.el b/lisp/delsel.el index 4301e69b61d..9488e94061e 100644 --- a/lisp/delsel.el +++ b/lisp/delsel.el @@ -84,24 +84,31 @@ any selection." (not buffer-read-only)) (let ((type (and (symbolp this-command) (get this-command 'delete-selection)))) - (cond ((eq type 'kill) - (delete-active-region t)) - ((eq type 'yank) - ;; Before a yank command, - ;; make sure we don't yank the same region - ;; that we are going to delete. - ;; That would make yank a no-op. - (when (string= (buffer-substring-no-properties (point) (mark)) - (car kill-ring)) - (current-kill 1)) - (delete-active-region)) - ((eq type 'supersede) - (let ((empty-region (= (point) (mark)))) - (delete-active-region) - (unless empty-region - (setq this-command 'ignore)))) - (type - (delete-active-region)))))) + (condition-case data + (cond ((eq type 'kill) + (delete-active-region t)) + ((eq type 'yank) + ;; Before a yank command, + ;; make sure we don't yank the same region + ;; that we are going to delete. + ;; That would make yank a no-op. + (when (string= (buffer-substring-no-properties (point) (mark)) + (car kill-ring)) + (current-kill 1)) + (delete-active-region)) + ((eq type 'supersede) + (let ((empty-region (= (point) (mark)))) + (delete-active-region) + (unless empty-region + (setq this-command 'ignore)))) + (type + (delete-active-region))) + (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)) + (signal 'file-supersession (cdr data))))))) (put 'self-insert-command 'delete-selection t) (put 'self-insert-iso 'delete-selection t) -- 2.39.2