Mercurial > emacs
changeset 14507:ec4424facc98
(text-read-only): New error symbol.
(kill-region): Use it when text has read-only text property.
(yank-pop): Turn on inhibit-read-only.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Tue, 06 Feb 1996 23:56:47 +0000 |
parents | bddd8114eaa9 |
children | 87b0d4b7577a |
files | lisp/simple.el |
diffstat | 1 files changed, 10 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/simple.el Tue Feb 06 23:48:06 1996 +0000 +++ b/lisp/simple.el Tue Feb 06 23:56:47 1996 +0000 @@ -1182,6 +1182,10 @@ (defvar kill-read-only-ok nil "*Non-nil means don't signal an error for killing read-only text.") +(put 'text-read-only 'error-conditions + '(text-read-only buffer-read-only error)) +(put 'text-read-only 'error-message "Text is read-only") + (defun kill-region (beg end) "Kill between point and mark. The text is deleted but saved in the kill ring. @@ -1211,7 +1215,10 @@ (if kill-read-only-ok (message "Read only text copied to kill ring") (setq this-command 'kill-region) - (barf-if-buffer-read-only))) + ;; Signal an error if the buffer is read-only. + (barf-if-buffer-read-only) + ;; If the buffer isn't read-only, the text is. + (signal 'text-read-only (list (current-buffer))))) ;; In certain cases, we can arrange for the undo list and the kill ;; ring to share the same string object. This code does that. @@ -1313,7 +1320,8 @@ (if (not (eq last-command 'yank)) (error "Previous command was not a yank")) (setq this-command 'yank) - (let ((before (< (point) (mark t)))) + (let ((inhibit-read-only t) + (before (< (point) (mark t)))) (delete-region (point) (mark t)) (set-marker (mark-marker) (point) (current-buffer)) (insert (current-kill arg))