Commit b1fa544f authored by Karl Heuer's avatar Karl Heuer
Browse files

Fix file-relative-name to allow for ancestors as well as descendants.

parent 1892807a
...@@ -1382,22 +1382,16 @@ Value is a list whose car is the name for the backup file ...@@ -1382,22 +1382,16 @@ Value is a list whose car is the name for the backup file
"Return number of names file FILENAME has." "Return number of names file FILENAME has."
(car (cdr (file-attributes filename)))) (car (cdr (file-attributes filename))))
(defun file-relative-name-1 (directory)
(cond ((string= directory "/")
filename)
((string-match (concat "^" (regexp-quote directory))
filename)
(substring filename (match-end 0)))
(t
(file-relative-name-1
(file-name-directory (substring directory 0 -1))))))
(defun file-relative-name (filename &optional directory) (defun file-relative-name (filename &optional directory)
"Convert FILENAME to be relative to DIRECTORY (default: default-directory)." "Convert FILENAME to be relative to DIRECTORY (default: default-directory)."
(setq filename (expand-file-name filename) (setq filename (expand-file-name filename)
directory (file-name-as-directory (expand-file-name directory (file-name-as-directory (expand-file-name
(or directory default-directory)))) (or directory default-directory))))
(file-relative-name-1 directory)) (let ((ancestor ""))
(while (not (string-match (concat "^" (regexp-quote directory)) filename))
(setq directory (file-name-directory (substring directory 0 -1))
ancestor (concat "../" ancestor)))
(concat ancestor (substring filename (match-end 0)))))
(defun save-buffer (&optional args) (defun save-buffer (&optional args)
"Save current buffer in visited file if modified. Versions described below. "Save current buffer in visited file if modified. Versions described below.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment