diff options
| author | Karl Heuer | 1994-02-02 04:39:22 +0000 |
|---|---|---|
| committer | Karl Heuer | 1994-02-02 04:39:22 +0000 |
| commit | b1fa544fda46cbf18b599ba3ede88b1ec797aa7e (patch) | |
| tree | a4339c358c5facb39a92eb5e82c9054270086f76 | |
| parent | 1892807a4da003baad3b890cc25c458502f74e36 (diff) | |
| download | emacs-b1fa544fda46cbf18b599ba3ede88b1ec797aa7e.tar.gz emacs-b1fa544fda46cbf18b599ba3ede88b1ec797aa7e.zip | |
Fix file-relative-name to allow for ancestors as well as descendants.
| -rw-r--r-- | lisp/files.el | 16 |
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. |