summaryrefslogtreecommitdiff
path: root/lisp/dired.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/dired.el')
-rw-r--r--lisp/dired.el6
1 files changed, 5 insertions, 1 deletions
diff --git a/lisp/dired.el b/lisp/dired.el
index f9a77431393..85a71315702 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -2953,7 +2953,11 @@ Optional arg GLOBAL means to replace all matches."
If DIR is omitted or nil, it defaults to `default-directory'.
If FILE is not in the directory tree of DIR, return FILE
unchanged."
- (setq dir (expand-file-name (or dir default-directory)))
+ (or dir (setq dir default-directory))
+ ;; This case comes into play if default-directory is set to
+ ;; use ~.
+ (if (string-match-p "\\(\\`\\|:\\)~" dir)
+ (setq dir (expand-file-name dir)))
(if (string-match (concat "^" (regexp-quote dir)) file)
(substring file (match-end 0))
file))