changeset 64989:6b11882571cb

(cua-delete-region): Return t if deleted region was non-empty. (cua-replace-region): Inhibit overwrite-mode for self-insert-command if replaced region was non-empty. (cua--explicit-region-start, cua--status-string): Make them buffer-local at top-level... (cua-mode): ...rather than when mode is enabled.
author Kim F. Storm <storm@cua.dk>
date Mon, 15 Aug 2005 14:10:39 +0000
parents 94244c068735
children 31195f42e486
files lisp/emulation/cua-base.el
diffstat 1 files changed, 11 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emulation/cua-base.el	Mon Aug 15 13:54:37 2005 +0000
+++ b/lisp/emulation/cua-base.el	Mon Aug 15 14:10:39 2005 +0000
@@ -575,6 +575,7 @@
 
 ;; Current region was started using cua-set-mark.
 (defvar cua--explicit-region-start nil)
+(make-variable-buffer-local 'cua--explicit-region-start)
 
 ;; Latest region was started using shifted movement command.
 (defvar cua--last-region-shifted nil)
@@ -585,6 +586,7 @@
 
 ;; status string for mode line indications
 (defvar cua--status-string nil)
+(make-variable-buffer-local 'cua--status-string)
 
 (defvar cua--debug nil)
 
@@ -759,14 +761,19 @@
 	  (cons (current-buffer)
 		(and (consp buffer-undo-list)
 		     (car buffer-undo-list))))
-    (cua--deactivate)))
+    (cua--deactivate)
+    (/= start end)))
 
 (defun cua-replace-region ()
   "Replace the active region with the character you type."
   (interactive)
-  (cua-delete-region)
-  (unless (eq this-original-command this-command)
-    (cua--fallback)))
+  (let ((not-empty (cua-delete-region)))
+    (unless (eq this-original-command this-command)
+      (let ((overwrite-mode
+	     (and overwrite-mode
+		  not-empty
+		  (not (eq this-original-command 'self-insert-command)))))
+	(cua--fallback)))))
 
 (defun cua-copy-region (arg)
   "Copy the region to the kill ring.
@@ -1359,8 +1366,6 @@
   :link '(emacs-commentary-link "cua-base.el")
   (setq mark-even-if-inactive t)
   (setq highlight-nonselected-windows nil)
-  (make-variable-buffer-local 'cua--explicit-region-start)
-  (make-variable-buffer-local 'cua--status-string)
 
   (unless cua--keymaps-initalized
     (cua--init-keymaps)