Как сохранить dir-local переменные при переключении основных режимов?

Я принимаю участие в проекте, где стандартные отступы и вкладки имеют ширину 3 символа, и это 'с использованием смеси HTML, PHP и JavaScript. Поскольку я использую Emacs для всего, и для этого проекта я хочу использовать только 3-символьный отступ, я настроил ".dir-locals.el» файл в корне проекта для применения ко всем файлам / всем режимам в нем:

; Match projets's default indent of 3 spaces per level- and don't add tabs
(
 (nil .
        (
         (tab-width . 3)
         (c-basic-offset . 3)
         (indent-tabs-mode . nil)
         ))
 )

Что отлично работает, когда я впервые открываю файл. Проблема возникает при переключении основных режимов - например, для работы с фрагментом буквального HTML внутри файла PHP. Затем я теряю все локальные переменные dir.

Я также пытался явно указать все режимы, которые я использую в ".dir-locals.el»и добавление в мой файл .emacs "dir-locals-set-class-variable / dir-locals-set-directory-class ", Я'Я рад сказать, что все они ведут себя согласованно, сначала устанавливая локальные переменные dir, а затем теряя их, когда я переключаю основной режим.

используя GNU Emacs 24.3.1.

Какие'элегантный способ перезагрузки локальных переменных dir при переключении буфераосновной режим?

- edit - Спасибо за отличные ответы и комментарии как Аарона, так и Филса! После публикации здесь я подумалпахло» Как ошибка, поэтому введенный отчет в GNU - отправит им ссылку на эти обсуждения.

Ответы на вопрос(3)

Ваш ответ на вопрос