J'aime l'idée de .dir-locals.el. J'ai mon propre .dir-locals.elfichier dans mon répertoire personnel qui devrait définir toutes les variables pour les répertoires / fichiers que j'ouvre à moins qu'il n'y ait .dir-locals.elplus près du répertoire dans lequel j'ouvre le fichier. Cependant, même si le fichier est reconnu, les variables de répertoire pour les sous-répertoires ne sont pas appliqué aux fichiers ouverts.
C'est mon ~/.dir-locals.el:
(("dev/school" .
((indent-tabs-mode . nil)
(c-basic-offset . 4)))
("dev/test" .
((indent-tabs-mode . nil)
(c-basic-offset . 4)))
(c-mode .
((c-file-style . "linux")
(c-basic-offset . 8))))
Lorsque j'ouvre un fichier, ~/dev/test/test.cla variable indent-tabs-modeest définie sur tet l' c-basic-offsetest 8.
(describe-variable 'c-basic-offset)dans ce fichier me dit qu'il est réglé sur à 8partir de ~/.dir-locals.el.
(describe-variable 'indent-tabs-mode)dans ce fichier indique que sa valeur ( t) est juste dans son état par défaut.
Puis-je en quelque sorte atteindre le comportement souhaité? Qu'est-ce que je fais mal? Comment les chemins d'accès aux fichiers sont-ils mappés aux sous-répertoires dans ~/.dir-locals.el?
Éditer:
Comme Jonathan l'a suggéré , j'ai également essayé:
(;; dev/school subdir
("dev/school" .
;; dev/school specification for all modes
(nil . ((indent-tabs-mode . nil)
(c-basic-offset . 4)))))
et même ce qui a add-dir-local-variableajouté:
(("dev/school"
(indent-tabs-mode)
(c-basic-offset . 4)))
Malheureusement, aucun de ceux-ci ne fonctionne non plus.