changeset 97180:3b02590c0c04

(abbreviate-file-name): When replacing $HOME with ~, turn off case-fold-search.
author Chong Yidong <cyd@stupidchicken.com>
date Thu, 31 Jul 2008 21:09:05 +0000
parents e99e1b5c726e
children d4e518422a97
files lisp/files.el
diffstat 1 files changed, 9 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/files.el	Thu Jul 31 21:07:11 2008 +0000
+++ b/lisp/files.el	Thu Jul 31 21:09:05 2008 +0000
@@ -1417,14 +1417,18 @@
 	     (file-exists-p (file-name-directory
 			     (substring filename (1- (match-end 0))))))
 	(setq filename (substring filename (1- (match-end 0)))))
-    (let ((tail directory-abbrev-alist))
+    ;; Avoid treating /home/foo as /home/Foo during `~' substitution.
+    ;; To fix this right, we need a `file-name-case-sensitive-p'
+    ;; function, but we don't have that yet, so just guess.
+    (let ((case-fold-search 
+	   (memq system-type '(ms-dos windows-nt darwin cygwin))))
       ;; If any elt of directory-abbrev-alist matches this name,
       ;; abbreviate accordingly.
-      (while tail
-	(if (string-match (car (car tail)) filename)
+      (dolist (dir-abbrev directory-abbrev-alist)
+	(if (string-match (car dir-abbrev) filename)
 	    (setq filename
-		  (concat (cdr (car tail)) (substring filename (match-end 0)))))
-	(setq tail (cdr tail)))
+		  (concat (cdr dir-abbrev)
+			  (substring filename (match-end 0))))))
       ;; Compute and save the abbreviated homedir name.
       ;; We defer computing this until the first time it's needed, to
       ;; give time for directory-abbrev-alist to be set properly.