Mercurial > emacs
changeset 41254:2538b11fc837
(delete-selection-pre-hook): Handle and resignal
file-supersession errors to interact properly with userlock.el.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Mon, 19 Nov 2001 06:21:11 +0000 |
parents | 87ae7a37e076 |
children | 719d61cbaf9f |
files | lisp/delsel.el |
diffstat | 1 files changed, 25 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/delsel.el Mon Nov 19 06:08:38 2001 +0000 +++ b/lisp/delsel.el Mon Nov 19 06:21:11 2001 +0000 @@ -84,24 +84,31 @@ (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)