Mercurial > emacs
changeset 1834:9a1f696c1734
* simple.el (kill-region): If the buffer is read-only, do beep,
but also put the region in the kill ring. Doc fix.
author | Jim Blandy <jimb@redhat.com> |
---|---|
date | Mon, 01 Feb 1993 22:31:17 +0000 |
parents | ce05243e2491 |
children | 0aa8e261f174 |
files | lisp/simple.el |
diffstat | 1 files changed, 15 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/simple.el Mon Feb 01 22:19:52 1993 +0000 +++ b/lisp/simple.el Mon Feb 01 22:31:17 1993 +0000 @@ -969,6 +969,9 @@ The text is deleted but saved in the kill ring. The command \\[yank] can retrieve it from there. \(If you want to kill and then yank immediately, use \\[copy-region-as-kill].) +If the buffer is read-only, Emacs will beep and refrain from deleting +the text, but put the text in the kill ring anyway. This means that +you can use the killing commands to copy text from a read-only buffer. This is the primitive for programs to kill text (as opposed to deleting it). Supply two arguments, character numbers indicating the stretch of text @@ -977,12 +980,18 @@ If the previous command was also a kill command, the text killed this time appends to the text killed last time to make one entry in the kill ring." - (interactive "*r") + (interactive "r") (cond - ;; If the buffer was read-only, we used to just do a - ;; copy-region-as-kill. This was never what I wanted - usually I - ;; was making a mistake and trying to edit a file checked into RCS - - ;; so I've taken the code out. + + ;; If the buffer is read-only, we should beep, in case the person + ;; just isn't aware of this. However, there's no harm in putting + ;; the region's text in the kill ring, anyway. + (buffer-read-only + (copy-region-as-kill beg end) + (ding)) + + ;; In certain cases, we can arrange for the undo list and the kill + ;; ring to share the same string object. This code does that. ((not (or (eq buffer-undo-list t) (eq last-command 'kill-region) (eq beg end))) @@ -993,6 +1002,7 @@ ;; and put it in the kill-ring. (kill-new (car (car buffer-undo-list))) (setq this-command 'kill-region))) + (t (copy-region-as-kill beg end) (delete-region beg end))))