aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarl Heuer1994-02-02 04:39:22 +0000
committerKarl Heuer1994-02-02 04:39:22 +0000
commitb1fa544fda46cbf18b599ba3ede88b1ec797aa7e (patch)
treea4339c358c5facb39a92eb5e82c9054270086f76
parent1892807a4da003baad3b890cc25c458502f74e36 (diff)
downloademacs-b1fa544fda46cbf18b599ba3ede88b1ec797aa7e.tar.gz
emacs-b1fa544fda46cbf18b599ba3ede88b1ec797aa7e.zip
Fix file-relative-name to allow for ancestors as well as descendants.
-rw-r--r--lisp/files.el16
1 files changed, 5 insertions, 11 deletions
diff --git a/lisp/files.el b/lisp/files.el
index 8eb4ff490e2..f5aad139dd1 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -1382,22 +1382,16 @@ Value is a list whose car is the name for the backup file
1382 "Return number of names file FILENAME has." 1382 "Return number of names file FILENAME has."
1383 (car (cdr (file-attributes filename)))) 1383 (car (cdr (file-attributes filename))))
1384 1384
1385(defun file-relative-name-1 (directory)
1386 (cond ((string= directory "/")
1387 filename)
1388 ((string-match (concat "^" (regexp-quote directory))
1389 filename)
1390 (substring filename (match-end 0)))
1391 (t
1392 (file-relative-name-1
1393 (file-name-directory (substring directory 0 -1))))))
1394
1395(defun file-relative-name (filename &optional directory) 1385(defun file-relative-name (filename &optional directory)
1396 "Convert FILENAME to be relative to DIRECTORY (default: default-directory)." 1386 "Convert FILENAME to be relative to DIRECTORY (default: default-directory)."
1397 (setq filename (expand-file-name filename) 1387 (setq filename (expand-file-name filename)
1398 directory (file-name-as-directory (expand-file-name 1388 directory (file-name-as-directory (expand-file-name
1399 (or directory default-directory)))) 1389 (or directory default-directory))))
1400 (file-relative-name-1 directory)) 1390 (let ((ancestor ""))
1391 (while (not (string-match (concat "^" (regexp-quote directory)) filename))
1392 (setq directory (file-name-directory (substring directory 0 -1))
1393 ancestor (concat "../" ancestor)))
1394 (concat ancestor (substring filename (match-end 0)))))
1401 1395
1402(defun save-buffer (&optional args) 1396(defun save-buffer (&optional args)
1403 "Save current buffer in visited file if modified. Versions described below. 1397 "Save current buffer in visited file if modified. Versions described below.