- ;; In presence of symlinks, switch to cleaner form of default directory.
- (if (and (not (eq system-type 'vax-vms))
- (getenv "PWD"))
- (setq default-directory (file-name-as-directory (getenv "PWD"))))
- (let ((tail directory-abbrev-alist))
- (while tail
- (if (string-match (car (car tail)) default-directory)
- (setq default-directory
- (concat (cdr (car tail))
- (substring default-directory (match-end 0)))))
- (setq tail (cdr tail))))
+ (if (not (eq system-type 'vax-vms))
+ (progn
+ ;; If the PWD environment variable isn't accurate, delete it.
+ (let ((pwd (getenv "PWD")))
+ (and (stringp pwd)
+ ;; Use FOO/., so that if FOO is a symlink, file-attributes
+ ;; describes the directory linked to, not FOO itself.
+ (or (equal (file-attributes
+ (concat (file-name-as-directory pwd) "."))
+ (file-attributes
+ (concat (file-name-as-directory default-directory)
+ ".")))
+ (setq process-environment
+ (delete (concat "PWD=" pwd)
+ process-environment)))))))
+ (setq default-directory (abbreviate-file-name default-directory))