Jak zachować lokalne zmienne dir podczas przełączania trybów głównych?

Zobowiązuję się do projektu, w którym standardowe wcięcia i zakładki są 3-znakowe i używają kombinacji HTML, PHP i JavaScript. Ponieważ używam Emacsa do wszystkiego i chcę tylko 3-znakowego wcięcia dla tego projektu, ustawiłem plik „.dir-locals.el” w katalogu głównym projektu, aby zastosować go do wszystkich plików / wszystkich trybów pod nim:

; 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)
         ))
 )

Co działa dobrze po pierwszym otwarciu pliku. Problem pojawia się podczas przełączania trybów głównych - na przykład w celu pracy nad fragmentem dosłownego HTML wewnątrz pliku PHP. Potem tracę wszystkie zmienne lokalne dir.

Próbowałem też jawnie podać wszystkie tryby, których używam w „.dir-locals.el” i dodając do mojego pliku .emacs „dir-locals-set-class-variables / dir-locals-set-directory-class „ Cieszę się, że wszyscy zachowują się konsekwentnie, początkowo ustawiając lokalne zmienne dir, a następnie tracąc je, gdy przełączam tryb główny.

Używam GNU Emacs 24.3.1.

Jaki jest elegancki sposób przeładowywania zmiennych lokalnych dir po przełączeniu trybu głównego bufora?

- edit - Dziękujemy za doskonałe odpowiedzi i komentarze zarówno Aaron jak i phils! Po opublikowaniu tutaj pomyślałem, że „pachnie” jak błąd, więc wpisanie raportu do GNU- wyśle ​​im odniesienie do tych dyskusji.

questionAnswers(3)

yourAnswerToTheQuestion