Spec-Zone.ru › Elisp

Локальные переменные каталога

Каталог может задавать значения локальных переменных, общие для всех файлов в этом каталоге; 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

Spec-Zone.ru

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