changeset 15751:022815791330

(dabbrev--search): Don't downcase the result here. (dabbrev-completion): Bind completion-ignore-case. (dabbrev--substitute-expansion): Downcase the expansion here, but not if case pattern matches start of original expansion.
author Richard M. Stallman <rms@gnu.org>
date Sun, 21 Jul 1996 23:45:15 +0000
parents 347aa710b4a9
children c994927cede4
files lisp/dabbrev.el
diffstat 1 files changed, 16 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/dabbrev.el	Sun Jul 21 19:49:45 1996 +0000
+++ b/lisp/dabbrev.el	Sun Jul 21 23:45:15 1996 +0000
@@ -340,7 +340,8 @@
 	(setq dabbrev--last-abbreviation abbrev)
 	;; Find all expansion
 	(let ((completion-list
-	       (dabbrev--find-all-expansions abbrev ignore-case-p)))
+	       (dabbrev--find-all-expansions abbrev ignore-case-p))
+	      (completion-ignore-case ignore-case-p))
 	  ;; Make an obarray with all expansions
 	  (setq my-obarray (make-vector (length completion-list) 0))
 	  (or (> (length my-obarray) 0)
@@ -749,6 +750,19 @@
     (and nil use-case-replace
 	 (setq old (concat abbrev (or old "")))
 	 (setq expansion (concat abbrev expansion)))
+    ;; If the given abbrev is mixed case and its case pattern
+    ;; matches the start of the expansion,
+    ;; copy the expansion's case
+    ;; instead of downcasing all the rest.
+    (if (and (string= (or old abbrev)
+		      (substring expansion 0 (length (or old abbrev))))
+	     (not (string= (or old abbrev)
+			   (downcase (or old abbrev))))
+	     (not (string= (or old abbrev)
+			   (upcase (or old abbrev)))))
+	(setq use-case-replace nil)
+      (if use-case-replace
+	  (setq expansion (downcase expansion))))
     (if old
 	(save-excursion
 	  (search-backward old))
@@ -830,7 +844,7 @@
 	      (setq dabbrev--last-table
 		    (cons found-string dabbrev--last-table))
 	      (if (and ignore-case (eval dabbrev-case-replace))
-		  (downcase result)
+		  result
 		result)))))))
 
 (provide 'dabbrev)