2009-12-01 5 views
2

J'utilise généralement 4 espaces blancs pour mettre en retrait des programmes C, mais afin de rester cohérent avec certains projets open source, je dois parfois passer à l'indentation 2 espaces blancs.Définition de différents c-basic-offs pour différents projets

Actuellement, mon style est attribué dans indenter mon emacs fichier avec

(setq c-basic-offset 4) 

Et quand je veux travailler sur ces projets indentations 2-blanc-espace. Je dois fermer mes Emacs, modifier la valeur et recommencer. Y a-t-il un moyen plus simple de le faire?

Merci beaucoup.


PS. Configurer la variable c-basic-offset chaque fois que j'ouvre un fichier source est trop de travail, est-il possible de choisir une valeur différente selon le répertoire de travail?

Répondre

9

Créer un fichier dans le répertoire que vous voulez personnaliser le nom .dir-locals.el, et de le modifier à contenir:

((c-mode . ((c-basic-offset . 4)))) 

Note: Ce est une nouvelle fonctionnalité dans Emacs 23.1.

Ceci tire profit du Per-Directory Local Variables. De la documentation dans le lien:

Le fichier doit .dir-locals.el tenir une liste spécialement construite. Cette liste mappe les noms de mode Emacs (symboles) aux alists; chaque valeur spécifie des valeurs pour les variables à utiliser lorsque le mode respectif est activé. Le nom de mode spécial «néant» signifie que son alist s'applique à n'importe quel mode. Au lieu d'un nom de mode, vous pouvez spécifier une chaîne qui est le nom d'un sous-répertoire du répertoire du projet; puis l'alister correspondant s'applique à tous les fichiers de ce sous-répertoire .

Voici un exemple d'un fichier .dir-locals.el:

((nil . ((indent-tabs-mode . t) 
      (tab-width . 4) 
      (fill-column . 80))) 
    (c-mode . ((c-file-style . "BSD"))) 
    (java-mode . ((c-file-style . "BSD"))) 
    ("src/imported" 
    . ((nil . ((change-log-default-name . "ChangeLog.local")))))) 
+0

+1 pour le lien –

+0

C'est très utile, merci. – ZelluX

Questions connexes