(setq dirfile (directory-file-name dir))
;; If these are equal, we have the (or a) root directory.
(or (string= dir dirfile)
- (and (memq system-type '(windows-nt ms-dos cygwin nacl))
+ (and (file-name-case-insensitive-p dir)
(eq (compare-strings dir 0 nil dirfile 0 nil t) t))
;; If this is the same dir we last got the truename for,
;; save time--don't recalculate.
(substring filename (1- (match-end 0))))))
(setq filename (substring filename (1- (match-end 0)))))
;; 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))))
+ (let ((case-fold-search (file-name-case-insensitive-p filename)))
;; If any elt of directory-abbrev-alist matches this name,
;; abbreviate accordingly.
(dolist (dir-abbrev directory-abbrev-alist)
(unless done
(if buffer-file-name
(let ((name buffer-file-name)
- (remote-id (file-remote-p buffer-file-name)))
+ (remote-id (file-remote-p buffer-file-name))
+ (case-insensitive-p (file-name-case-insensitive-p
+ buffer-file-name)))
;; Remove backup-suffixes from file name.
(setq name (file-name-sans-versions name))
;; Remove remote file name identification.
(while name
;; Find first matching alist entry.
(setq mode
- (if (memq system-type '(windows-nt cygwin))
- ;; System is case-insensitive.
+ (if case-insensitive-p
+ ;; Filesystem is case-insensitive.
(let ((case-fold-search t))
(assoc-default name auto-mode-alist
'string-match))
- ;; System is case-sensitive.
+ ;; Filesystem is case-sensitive.
(or
;; First match case-sensitively.
(let ((case-fold-search nil))
(setq filename (expand-file-name filename))
(let ((fremote (file-remote-p filename))
(dremote (file-remote-p directory))
- (fold-case (or (memq system-type '(ms-dos cygwin windows-nt))
+ (fold-case (or (file-name-case-insensitive-p filename)
read-file-name-completion-ignore-case)))
(if ;; Conditions for separate trees
(or