]> git.eshelyaron.com Git - emacs.git/commitdiff
(dabbrev--substitute-expansion):
authorRichard M. Stallman <rms@gnu.org>
Sun, 30 Mar 1997 19:06:27 +0000 (19:06 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sun, 30 Mar 1997 19:06:27 +0000 (19:06 +0000)
Change criterion for copying expansion's case pattern.
Do this now if expansion case varies after the first char.

lisp/dabbrev.el

index ed6ef3e92a4e21844814206fcc83bc34114abbae..2c28b39c4d14699f621ecc04098140863359b2fb 100644 (file)
@@ -765,15 +765,21 @@ See also `dabbrev-abbrev-char-regexp' and \\[dabbrev-completion]."
     (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
+    ;; If the expansion has mixed case
+    ;; and it is not simply a capitalized word,
+    ;; or if the abbrev has mixed case,
+    ;; and if the given abbrev's case pattern
     ;; matches the start of the expansion,
     ;; copy the expansion's case
     ;; instead of downcasing all the rest.
-    (if (and (string= abbrev
-                     (substring expansion 0 (length abbrev)))
-            (not (string= abbrev (downcase abbrev)))
-            (not (string= abbrev (upcase abbrev))))
-       (setq use-case-replace nil))
+    (let ((expansion-rest (substring expansion 1)))
+      (if (and (not (and (or (string= expansion-rest (downcase expansion-rest))
+                            (string= expansion-rest (upcase expansion-rest)))
+                        (or (string= abbrev (downcase abbrev))
+                            (string= abbrev (upcase abbrev)))))
+              (string= abbrev
+                       (substring expansion 0 (length abbrev))))
+         (setq use-case-replace nil)))
     (if (equal abbrev " ")
        (setq use-case-replace nil))
     (if use-case-replace