В этом разделе объясняется, как искать файл в списке директорий (в пути), или исполняемый файл в стандартном списке директорий исполняемых файлов.
Чтобы найти конфигурационный файл, специфичный для пользователя, см. Стандартные имена файлов, для функции locate-user-emacs-file.
Эта функция ищет файл, имя которого равно filename, в
списке директорий, указанном в path, пробуя суффиксы в
suffixes. Если она находит такой файл, она возвращает
абсолютное имя файла (см. Абсолютные и относительные имена файлов); в противном случае возвращает
nil.
Необязательный аргумент suffixes предоставляет список
суффиксов имен файлов, которые добавляются к filename при
поиске. locate-file пробует каждую возможную директорию
с каждым из этих суффиксов. Если suffixes равен nil или (""), то суффиксов нет, и filename используется как есть. Типичные значения для suffixes — это exec-suffixes (см. Функции, создающие подпроцессы), load-suffixes, load-file-rep-suffixes и возвращаемое значение функции get-load-suffixes (см. Суффиксы загрузки).
Типичные значения для path — это exec-path (см. Функции, создающие подпроцессы) при поиске исполняемых программ, или load-path (см. Поиск библиотек) при поиске файлов Lisp. Если filename является абсолютным, path не имеет значения, но суффиксы в suffixes все равно проверяются.
Необязательный аргумент predicate, если он не равен nil, указывает
функцию-предикат для проверки пригодности кандидата в файл.
Предикат передается кандидату в файл в качестве единственного аргумента. Если predicate равен nil или опущен,
locate-file использует file-readable-p в качестве предиката.
См. Различение типов файлов для других полезных предикатов, например,
file-executable-p и file-directory-p.
Эта функция обычно пропускает директории, поэтому, если вы хотите, чтобы она
находила директории, убедитесь, что функция predicate возвращает
dir-ok для них. Например:
(locate-file "html" '("/var/www" "/srv") nil
(lambda (f) (if (file-directory-p f) 'dir-ok)))
Для совместимости predicate также может быть одним из символов
executable, readable, writable, exists или
списком одного или нескольких из этих символов.
Эта функция ищет исполняемый файл указанной
program и возвращает абсолютное имя исполняемого файла,
включая его расширения, если таковые имеются. Она возвращает nil, если
файл не найден. Функция ищет во всех директориях в exec-path и пробует все расширения имен файлов в
exec-suffixes (см. Функции, создающие подпроцессы).
Если remote не равен nil, и default-directory является
удаленной директорией, program ищется на соответствующем удаленном хосте.