J'aime l'idée de .dir-locals.el
. J'ai mon propre .dir-locals.el
fichier 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.el
plus 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.c
la variable indent-tabs-mode
est définie sur t
et l' c-basic-offset
est 8
.
(describe-variable 'c-basic-offset)
dans ce fichier me dit qu'il est réglé sur à 8
partir 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-variable
ajouté:
(("dev/school"
(indent-tabs-mode)
(c-basic-offset . 4)))
Malheureusement, aucun de ceux-ci ne fonctionne non plus.
add-dir-local-variable
et il a été ajouté à~/.dir-locals.el
la syntaxe même plus courte que je la question:("dev/test" (indent-tabs-mode))
. Mais ça ne marche toujours pas.("dev/test" . ((spec1 ...) (spec2 ...) ...))
((org-mode . ((org-indent-mode . t))) ("subdir" . ((nil . ((org-indent-mode . nil))))
et cela a fonctionné correctement (invité à définir la variable locale sur nil). Essayez peut-être de placer les racines au-dessus des spécifications des sous-répertoires dans la liste, il est possible qu'il les définisse sur la dernière valeur trouvée.