Локальные переменные каталога
Каталог может задавать значения локальных переменных, общие для всех файлов в этом каталоге; Emacs использует их для создания буферно-локальных привязок для этих переменных в буферах, посещающих любой файл в этом каталоге. Это полезно, когда файлы в каталоге принадлежат какому-то проекту и, следовательно, разделяют одни и те же локальные переменные.
Существует два разных метода задания локальных переменных каталога: путём размещения их в специальном файле или путём определения класса проекта для данного каталога.
- Константа: dir-locals-file
Эта константа — имя файла, где Emacs ожидает найти переменные, локальные для каталога. Имя файла — .dir-locals.el11. Файл с таким именем в каталоге заставляет Emacs применять его настройки к любому файлу в этом каталоге или любому из его подкаталогов (при необходимости, вы можете исключить подкаталоги; см. ниже). Если некоторые подкаталоги имеют свои файлы .dir-locals.el, Emacs использует настройки из самого глубокого файла, который он находит, начиная с каталога файла и двигаясь вверх по дереву каталогов. Эта константа также используется для получения имени второго файла dir-locals — .dir-locals-2.el. Если этот второй файл dir-locals присутствует, то он загружается дополнительно к .dir-locals.el. Это полезно, когда .dir-locals.el находится под управлением системы контроля версий в общем репозитории и не может быть использован для персональных настроек. Файл определяет локальные переменные в виде специального списка; см. Персональные переменные каталога в Руководстве пользователя GNU Emacs для получения более подробной информации.
- Функция: hack-dir-local-variables
Эта функция считывает файл
.dir-locals.elи хранит локальные переменные каталога вfile-local-variables-alist, которые являются локальными для буфера, посещающего любой файл в каталоге, без применения. Она также сохраняет настройки локального каталога вdir-locals-class-alist, где определяет специальный класс для каталога, в котором был найден файл .dir-locals.el. Эта функция работает, вызываяdir-locals-set-class-variablesиdir-locals-set-directory-class, описанные ниже.
- Функция: hack-dir-local-variables-non-file-buffer
Эта функция ищет локальные переменные каталога и немедленно применяет их в текущем буфере. Она предназначена для вызова в командах режима для буферов, не связанных с файлами, таких как буферы Dired, чтобы позволить им подчиняться настройкам локальных переменных каталога. Для буферов, не связанных с файлами, Emacs ищет локальные переменные каталога в
default-directoryи его родительских каталогах.
- Функция: dir-locals-set-class-variables переменные класса
-
Эта функция определяет набор настроек переменных для указанного класса, который представляет собой символ. Позже вы можете назначить класс одному или нескольким каталогам, и Emacs будет применять эти настройки переменных ко всем файлам в этих каталогах. Список в переменных может быть одного из двух видов:
(major-mode . alist)или(directory . list). В первом случае, если буфер файла включает режим, производный от major-mode, то все переменные в соответствующем списке применяются; список должен иметь вид(name . value). Особое значениеnilдля major-mode означает, что настройки применимы к любому режиму. В списке вы можете использовать специальное имя:subdirs. Если соответствующее значение равноnil, список применяется только к файлам в соответствующем каталоге, а не к файлам в подкаталогах.При втором виде переменных, если каталог является начальным подстрокой каталога файла, то список применяется рекурсивно, следуя приведенным выше правилам; список должен иметь один из двух видов, принятых этой функцией в переменных.
- Функция: dir-locals-set-directory-class класс каталога &опционально mtime
-
Эта функция назначает класс всем файлам в
directoryи его подкаталогам. После этого все настройки переменных, указанные для класса, будут применяться к любому посещаемому файлу в каталоге и его потомкам. класс должен быть уже определен функциейdir-locals-set-class-variables.Emacs использует эту функцию в своей работе при загрузке переменных каталога из файла
.dir-locals.el. В этом случае необязательный аргумент mtime содержит время изменения файла (как возвращаетfile-attributes). Emacs использует это время, чтобы проверить, остаются ли сохранённые локальные переменные действительными. Если вы назначаете класс непосредственно, а не через файл, этот аргумент должен бытьnil.
- Переменная: dir-locals-class-alist
Этот список содержит символы классов и соответствующие настройки переменных. Он обновляется функцией
dir-locals-set-class-variables.
- Переменная: dir-locals-directory-cache
Этот список содержит имена каталогов, их назначенные имена классов и время изменения соответствующего файла локальных переменных каталога (если он есть). Функция
dir-locals-set-directory-classобновляет этот список.
- Переменная: enable-dir-local-variables
Если
nil, локальные переменные каталога игнорируются. Эта переменная может быть полезной для режимов, которые хотят игнорировать локальные переменные каталога, при этом соблюдая локальные переменные файла (см. Локальные переменные файла).
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/Directory-Local-Variables.html