В этом разделе описаны низкоуровневые подпрограммы для дополнения имени файла. Для более высокоуровневых функций см. Чтение имен файлов.
Эта функция возвращает список всех возможных дополнений для файла, имя которого начинается с 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")
Эта функция дополняет имя файла 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
file-name-completion обычно игнорирует имена файлов, оканчивающиеся
любой строкой из этого списка. Он не игнорирует их, если все возможные
дополнения оканчиваются одной из этих суффиксаций. Эта переменная не
влияет на file-name-all-completions.
Типичное значение может выглядеть так:
completion-ignored-extensions
⇒ (".o" ".elc" "~" ".dvi")
Если элемент completion-ignored-extensions оканчивается
слэшем «/», он указывает на каталог. Элементы, которые
не оканчиваются слэшем, никогда не будут соответствовать
каталогу; таким образом, вышеуказанное значение не отфильтрует каталог
с именем foo.elc.