1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-21 03:52:16 -08:00

(delete-selection-pre-hook): Handle and resignal file-supersession

errors to interact properly with userlock.el.
This commit is contained in:
Richard M. Stallman 2002-01-17 00:20:17 +00:00
parent 2e038f5b66
commit 3e0050d151
2 changed files with 30 additions and 18 deletions

View file

@ -1,3 +1,8 @@
2001-01-16 Richard M. Stallman <rms@gnu.org>
* delsel.el (delete-selection-pre-hook): Handle and resignal
file-supersession errors to interact properly with userlock.el.
2002-01-16 Andreas Schwab <schwab@suse.de>
* mail/feedmail.el (feedmail): Fix :link spec.

View file

@ -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)