Function: hpath:relative-to
hpath:relative-to is a byte-compiled function defined in hpath.el.
Signature
(hpath:relative-to PATH &optional DEFAULT-DIR)
Documentation
Return PATH relative to optional DEFAULT-DIR or default-directory.
Expand any other valid path. Return PATH unchanged when it is not a valid path.
Source Code
;; Defined in ~/.emacs.d/elpa/hyperbole-20260414.325/hpath.el
(defun hpath:relative-to (path &optional default-dir)
"Return PATH relative to optional DEFAULT-DIR or `default-directory'.
Expand any other valid path. Return PATH unchanged when it is not a
valid path."
(cond ((not (and (stringp path)
(not (hypb:object-p path))))
path)
((and (setq path (hpath:trim path))
(not (hpath:is-p path)))
path)
(t
(setq default-dir
(expand-file-name
(file-name-as-directory (or default-dir default-directory)))
path (expand-file-name path))
(and path default-dir
(if (string-equal "/" default-dir)
path
(let ((end-dir (min (length path) (length default-dir))))
(cond
((string-equal (substring path 0 end-dir) default-dir)
(concat "./" (substring path end-dir)))
((progn (setq default-dir (file-name-directory (directory-file-name default-dir))
end-dir (min (length path) (length default-dir)))
(string-equal (substring path 0 end-dir) default-dir))
(concat "../" (substring path end-dir)))
((progn (setq default-dir (file-name-directory (directory-file-name default-dir))
end-dir (min (length path) (length default-dir)))
(string-equal (substring path 0 end-dir) default-dir))
(concat "../../" (substring path end-dir)))
(t path))))))))