Spec-Zone.ru › Elisp

Поиск файлов в стандартных местах

В этом разделе объясняется, как искать файл в списке каталогов (путь) или исполняемый файл в стандартном списке каталогов исполняемых файлов.

Чтобы найти файл конфигурации, относящийся к пользователю, см. Стандартные имена файлов, для функции locate-user-emacs-file.

Функция: locate-file filename path &optional suffixes predicate

Эта функция ищет файл с именем 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, или списком одного или нескольких из этих символов.

Функция: executable-find program &optional remote

Эта функция ищет исполняемый файл с именем program и возвращает абсолютное имя исполняемого файла, включая его расширения, если они есть. Она возвращает nil если файл не найден. Функция ищет во всех каталогах в exec-path, и пробует все расширения имен файлов в exec-suffixes (см. Создание дочерних процессов).

Если remote не nil, и default-directory является удалённым каталогом, program ищется на соответствующем удалённом хосте.

Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Locating-Files.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API