.dir-locals.el
ist meine bevorzugte Methode, wenn dies möglich ist, insbesondere, da sie für alle Emacs-Benutzer gilt, die an diesem Projekt arbeiten.
Für Projekte, die Emacs-Benutzern feindlich gegenüberstehen oder auf andere Weise keine .dir-locals.el
Dateien oder persönliche Einstellungen (vermutlich keine Einrückung) haben möchten, die für andere Personen nicht gelten sollten, ist eine Option, wenn Sie ein verteiltes Versionskontrollsystem verwenden um immer an persönlichen Zweigen zu arbeiten, die deine .dir-locals.el
. Ich kenne keine Möglichkeit, ein DCVS zu verwenden, das dies jedoch schmerzlos macht.
Eine andere Möglichkeit ist, die .dir-locals.el
Dateien nicht einzuchecken . Zum Beispiel, mit git, füge es hinzu .git/info/exclude
. Das ist natürlich schmerzhaft, wenn Sie viele Kassen eines Projekts haben.
Was ich getan habe, wo .dir-locals.el
keine Option war, ist das Hinzufügen eines Hakens, der nach buffer-file-name
bekannten Werten sucht .
(defvar guessed-project nil)
(make-variable-buffer-local 'guessed-project)
(defun guess-project-from-file-name ()
(save-match-data
(setq guessed-project
(cond
((string-match "/linux-kernel/" buffer-file-name)
'linux-kernel)
((string-match "/gnu/" buffer-file-name)
'gnu)
; etc.
))))
(defun c-my-project-hook ()
(guess-project-from-file-name)
(case guessed-project
((gnu) (c-sty-style 'gnu))
((linux-kernel) (c-sty-style 'linux))
))
(add-hook 'c-mode-hook 'c-my-project-hook)
(Warnung: Code wurde direkt in meinen Browser eingegeben, da ich momentan keinen Zugriff auf meinen echten Code habe.)
.dir-locals.el
. Mögen Kollegen diese Idee mögen?