быстрый вопрос на тот случай, если кто-то сделал это раньше:
Я пытаюсь помешать Emacs попытаться рекурсивно открыть .dir-locals.el
во всех родительских подкаталогах при открытии файла.Я нашел, как полностью остановить его (принудительно заставив все файлы быть удаленными - противоположность этому: В Emacs, как использовать локальные переменные каталога для удаленных проектов? ), но я хотел бы разрешить доступпо крайней мере, .dir-locals.el
в текущем каталоге файла, который Emacs редактирует, или реализуйте решение, аналогичное переменной GIT_CEILING_DIRECTORIES
(где git прекращает поиск .git
после достижения определенного каталога, определенного в этой переменной).
К сожалению, у меня нет опыта работы с Emacs.
РЕДАКТИРОВАТЬ: Образец из strace
, когда я запускаю emacs testfile
в /tmp/test/a/b/c/d
.
stat("/tmp/test/a/b/c/d/.dir-locals.el", 0x7ffe15dd1ee0) = -1 ENOENT (No such file or directory)
stat("/tmp/test/a/b/c/.dir-locals.el", 0x7ffe15dd1ee0) = -1 ENOENT (No such file or directory)
stat("/tmp/test/a/b/.dir-locals.el", 0x7ffe15dd1ee0) = -1 ENOENT (No such file or directory)
stat("/tmp/test/a/.dir-locals.el", 0x7ffe15dd1ee0) = -1 ENOENT (No such file or directory)
stat("/tmp/test/.dir-locals.el", 0x7ffe15dd1ee0) = -1 ENOENT (No such file or directory)
stat("/tmp/.dir-locals.el", 0x7ffe15dd1ee0) = -1 ENOENT (No such file or directory)
stat("/.dir-locals.el", 0x7ffe15dd1ee0) = -1 ENOENT (No such file or directory)
Это не происходит, например, в /home/user/a/b/c/d
, и он перестает смотреть, когда достигает /home/user
.
EDIT2: Еще немного информации о том, почему я ищу решение этой проблемы:
каталог /mnt/groups/
- это каталоги для автоматического монтирования, такие как /mnt/groups/project1
, /mnt/groups/workA
, /mnt/groups/final_presentation
, где пользователиразрешено работать.Когда пользователь запускает Emacs внутри, например, /mnt/groups/project1/documentation
, Emacs ищет .dir-locals.el
, .bzr
, .git
, _MTN
и т. Д. Через каждый родительский подкаталог, пока не достигнет /
.Я использовал vc-ignore-dir-regexp
(в файле в site-start.d
, поэтому он будет применяться глобально), чтобы он не мог искать каталоги, связанные с контролем версий после /mnt/groups
, но я не могу помешать ему сделать то же самое для .dir-locals.el
,Хотя я занесен в черный список .dir-locals.el
в автомонтире (так что решение для моей проблемы частично найдено), я бы предпочел полностью запретить Emacs проходить через все родительские подкаталоги.Я попытался установить locate-dominating-stop-dir-regexp
, но, похоже, это не повлияло на поиск .dir-locals.el
, если только он не конфликтует с vc-ignore-dir-regexp
.К сожалению, как я уже говорил, у меня нет опыта работы с Emacs (я сам им не пользуюсь), поэтому я не смог понять, как программировать что-то более продвинутое.