diff options
author | Chong Yidong <cyd@gnu.org> | 2012-07-29 12:45:48 +0800 |
---|---|---|
committer | Chong Yidong <cyd@gnu.org> | 2012-07-29 12:45:48 +0800 |
commit | 2549c068e14ab1ddfb1f1ea38ca7736c16db7296 (patch) | |
tree | dd718a18c5ea030f16f373e4020049634274ea88 /lisp/register.el | |
parent | d8efda90aa36b6bea5cca9bd6765cbb76571d933 (diff) | |
download | emacs-2549c068e14ab1ddfb1f1ea38ca7736c16db7296.tar.gz |
Deactivate the mark on more copy operations, and indicate the copied region.
* lisp/simple.el (indicate-copied-region): New function.
(kill-ring-save): Split off from here.
* lisp/rect.el (copy-rectangle-as-kill): Call indicate-copied-region.
(kill-rectangle): Set deactivate-mark to t on read-only error.
* lisp/register.el (copy-to-register, copy-rectangle-to-register):
Deactivate the mark, and use indicate-copied-region.
(append-to-register, prepend-to-register): Call
Fixes: debbugs:10056
Diffstat (limited to 'lisp/register.el')
-rw-r--r-- | lisp/register.el | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/lisp/register.el b/lisp/register.el index 52c236e49be..2816c9831de 100644 --- a/lisp/register.el +++ b/lisp/register.el @@ -336,7 +336,11 @@ Called from program, takes four args: REGISTER, START, END and DELETE-FLAG. START and END are buffer positions indicating what to copy." (interactive "cCopy to register: \nr\nP") (set-register register (filter-buffer-substring start end)) - (if delete-flag (delete-region start end))) + (setq deactivate-mark t) + (cond (delete-flag + (delete-region start end)) + ((called-interactively-p 'interactive) + (indicate-copied-region)))) (defun append-to-register (register start end &optional delete-flag) "Append region to text in register REGISTER. @@ -350,7 +354,10 @@ START and END are buffer positions indicating what to append." register (cond ((not reg) text) ((stringp reg) (concat reg text)) (t (error "Register does not contain text"))))) - (if delete-flag (delete-region start end))) + (cond (delete-flag + (delete-region start end)) + ((called-interactively-p 'interactive) + (indicate-copied-region)))) (defun prepend-to-register (register start end &optional delete-flag) "Prepend region to text in register REGISTER. @@ -364,7 +371,10 @@ START and END are buffer positions indicating what to prepend." register (cond ((not reg) text) ((stringp reg) (concat text reg)) (t (error "Register does not contain text"))))) - (if delete-flag (delete-region start end))) + (cond (delete-flag + (delete-region start end)) + ((called-interactively-p 'interactive) + (indicate-copied-region)))) (defun copy-rectangle-to-register (register start end &optional delete-flag) "Copy rectangular region into register REGISTER. @@ -374,10 +384,15 @@ To insert this register in the buffer, use \\[insert-register]. Called from a program, takes four args: REGISTER, START, END and DELETE-FLAG. START and END are buffer positions giving two corners of rectangle." (interactive "cCopy rectangle to register: \nr\nP") - (set-register register - (if delete-flag - (delete-extract-rectangle start end) - (extract-rectangle start end)))) + (let ((rectangle (if delete-flag + (delete-extract-rectangle start end) + (extract-rectangle start end)))) + (set-register register rectangle) + (when (and (null delete-flag) + (called-interactively-p 'interactive)) + (setq deactivate-mark t) + (indicate-copied-region (length (car rectangle)))))) + (provide 'register) ;;; register.el ends here |