Spec-Zone.ru › Elisp

Заполнение имени файла

В этом разделе описываются низкоуровневые подпрограммы для заполнения имени файла. Для функций более высокого уровня см. Чтение имён файлов.

Функция: file-name-all-completions partial-filename directory

Эта функция возвращает список всех возможных дополнений для файла, имя которого начинается с partial-filename в каталоге directory. Порядок дополнений соответствует порядку файлов в каталоге, что непредсказуемо и не несёт полезной информации.

Аргумент partial-filename должен быть именем файла, не содержащим части каталога и слешей (или обратных слешей в некоторых системах). Текущий каталог буфера добавляется к directory, если directory не является абсолютным.

В следующем примере предположим, что ~rms/lewis — текущий каталог по умолчанию и в нём есть пять файлов, имена которых начинаются с 'f': foo, file~, file.c, file.c.~1~ и file.c.~2~.

(file-name-all-completions "f" "")
     ⇒ ("foo" "file~" "file.c.~2~"
                "file.c.~1~" "file.c")
(file-name-all-completions "fo" "")
     ⇒ ("foo")
Функция: file-name-completion filename directory &optional predicate

Эта функция дополняет имя файла filename в каталоге directory. Она возвращает самое длинное общее префиксное совпадение для всех имён файлов в каталоге directory, которые начинаются с filename. Если predicate не nil, то она игнорирует возможные дополнения, которые не удовлетворяют predicate, после вызова этой функции с одним аргументом, расширенным абсолютным именем файла.

Если существует только одно совпадение и filename точно совпадает с ним, функция возвращает t. Функция возвращает nil если каталог directory не содержит имени, начинающегося с filename.

В следующем примере предположим, что текущий каталог по умолчанию имеет пять файлов, имена которых начинаются с 'f': foo, file~, file.c, file.c.~1~ и file.c.~2~.

(file-name-completion "fi" "")
     ⇒ "file"
(file-name-completion "file.c.~1" "")
     ⇒ "file.c.~1~"
(file-name-completion "file.c.~1~" "")
     ⇒ t
(file-name-completion "file.c.~3" "")
     ⇒ nil
Пользовательский параметр: completion-ignored-extensions

file-name-completion обычно игнорирует имена файлов, которые заканчиваются любой строкой из этого списка. Она не игнорирует их, когда все возможные дополнения заканчиваются одним из этих суффиксов. Эта переменная не влияет на file-name-all-completions.

Типичное значение может выглядеть так:

completion-ignored-extensions
     ⇒ (".o" ".elc" "~" ".dvi")

Если элемент completion-ignored-extensions заканчивается слешем '/', это сигнализирует о каталоге. Элементы, которые не заканчиваются слешем, никогда не будут соответствовать каталогу; таким образом, вышеуказанное значение не будет фильтровать каталог с именем foo.elc.

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/File-Name-Completion.html

Spec-Zone.ru

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