(defun parent-directory (dir)
(unless (equal "/" dir)
(file-name-directory (directory-file-name dir))))
(defun find-file-in-heirarchy (current-dir fname)
"Search for a file named FNAME upwards through the directory hierarchy, starting from CURRENT-DIR"
(let ((file (concat current-dir fname))
(parent (parent-directory (expand-file-name current-dir))))
(if (file-exists-p file)
file
(when parent
(find-file-in-heirarchy parent fname)))))
Se il risultato non è pari a zero, è possibile estrarre directory del file utilizzando file-name-directory
, in questo modo:
(let ((file (find-file-in-heirarchy (buffer-file-name) "baz")))
(when file
(file-name-directory file)))
fonte
2012-12-31 02:08:36
"Primo" è ambiguo, non in questo esempio, ma in generale. Se ci sono multipli, dovremmo preferire un bambino, un genitore o uno dei nodi fratelli? – tripleee