# HG changeset patch # User Jim Blandy # Date 728605877 0 # Node ID 9a1f696c173465d53ef918da855d2e43ef370bec # Parent ce05243e2491dabb21244110ebb510114236c2f3 * simple.el (kill-region): If the buffer is read-only, do beep, but also put the region in the kill ring. Doc fix. diff -r ce05243e2491 -r 9a1f696c1734 lisp/simple.el --- 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))))