Функция find-file-noselect использует две важные подпрограммы,
которые иногда полезны в пользовательском Lisp-коде: create-file-buffer
и after-find-file. В этом разделе объясняется, как их использовать.
Эта функция создает буфер с подходящим именем для посещения filename и возвращает его. Она использует filename (без каталога) в качестве имени, если это имя свободно; в противном случае она добавляет строку, например, ‘<2>’, чтобы получить неиспользуемое имя. См. также Создание буферов. Обратите внимание, что библиотека uniquify влияет на результат этой функции. См. Uniquify в Руководстве GNU Emacs.
Обратите внимание: create-file-buffer не
ассоциирует новый буфер с файлом и не выбирает буфер.
Он также не использует основной режим по умолчанию.
(create-file-buffer "foo")
⇒ #<buffer foo>
(create-file-buffer "foo")
⇒ #<buffer foo<2>>
(create-file-buffer "foo")
⇒ #<buffer foo<3>>
Эта функция используется find-file-noselect.
Она использует generate-new-buffer (см. Создание буферов).
Эта функция устанавливает основной режим буфера и анализирует локальные переменные
(см. Как Emacs выбирает основной режим). Она вызывается
find-file-noselect и функцией по умолчанию для отката (см. Откат).
Если чтение файла выдало ошибку из-за того, что файл не существует, но
его каталог существует, вызывающая сторона должна передать не-nil значение
для error. В этом случае after-find-file выдает предупреждение:
‘(Новый файл)’. При более серьезных ошибках вызывающая сторона обычно
не должна вызывать after-find-file.
Если warn не-nil, то эта функция выдает предупреждение,
если существует файл автосохранения и он новее посещенного файла.
Если noauto не-nil, это означает, что не следует включать или отключать
режим автосохранения. Режим остается включенным, если он был включен ранее.
Если after-find-file-from-revert-buffer не-nil, это означает, что этот
вызов был сделан из revert-buffer. Это не имеет прямого
влияния, но некоторые функции режима и хук-функции проверяют значение этой переменной.
Если nomodes не-nil, это означает, что не следует изменять
основной режим буфера, не обрабатывать спецификации локальных переменных в файле
и не вызывать find-file-hook. Эта функция используется
revert-buffer в некоторых случаях.
Последнее, что делает after-find-file, — это вызывает все функции
в списке find-file-hook.