summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/ChangeLog7
-rw-r--r--lisp/rect.el25
2 files changed, 24 insertions, 8 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index ae489d200d0..b02b137b63c 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,10 @@
+2006-04-08 Michael Cadilhac <michael.cadilhac@lrde.org> (tiny change)
+
+ * rect.el (kill-rectangle): Don't barf if `kill-read-only-ok' is set.
+ (delete-extract-rectangle-line): Use `filter-buffer-substring'
+ instead of `buffer-substring' and `delete-region'. (Most of the
+ code actually copied from `kill-region'.)
+
2006-04-08 Ryan Yeske <rcyeske@gmail.com>
* rcirc.el (rcirc-default-server): Rename from rcirc-server.
diff --git a/lisp/rect.el b/lisp/rect.el
index 63979cb967c..be3a65ccd6a 100644
--- a/lisp/rect.el
+++ b/lisp/rect.el
@@ -141,8 +141,7 @@ the function is called."
;; else
(setq pt (point))
(move-to-column endcol t)
- (setcdr lines (cons (buffer-substring pt (point)) (cdr lines)))
- (delete-region pt (point)))
+ (setcdr lines (cons (filter-buffer-substring pt (point) t) (cdr lines))))
))
;; ### NOTE: this is actually the only function that needs to do complicated
@@ -233,12 +232,22 @@ When called from a program the rectangle's corners are START and END.
You might prefer to use `delete-extract-rectangle' from a program.
With a prefix (or a FILL) argument, also fill lines where nothing has to be
-deleted."
- (interactive "*r\nP")
- (when buffer-read-only
- (setq killed-rectangle (extract-rectangle start end))
- (barf-if-buffer-read-only))
- (setq killed-rectangle (delete-extract-rectangle start end fill)))
+deleted.
+
+If the buffer is read-only, Emacs will beep and refrain from deleting
+the rectangle, but put it in the kill ring anyway. This means that
+you can use this command to copy text from a read-only buffer.
+\(If the variable `kill-read-only-ok' is non-nil, then this won't
+even beep.)"
+ (interactive "r\nP")
+ (condition-case nil
+ (setq killed-rectangle (delete-extract-rectangle start end fill))
+ ((buffer-read-only text-read-only)
+ (setq killed-rectangle (extract-rectangle start end))
+ (if kill-read-only-ok
+ (progn (message "Read only text copied to kill ring") nil)
+ (barf-if-buffer-read-only)
+ (signal 'text-read-only (list (current-buffer)))))))
;; this one is untouched --dv
;;;###autoload