.dir-locals.el
es mi método preferido cuando es posible, especialmente porque se aplica a todos los usuarios de Emacs que trabajan en ese proyecto.
Para proyectos que son hostiles para los usuarios de Emacs o que de otro modo no desean .dir-locals.el
archivos, o si desea tener preferencias personales (presumiblemente no sangría) que no deberían aplicarse a otras personas, si usa un sistema de control de versiones distribuido, una opción es para trabajar siempre en ramas personales que tengan tu .dir-locals.el
. Sin embargo, no conozco una forma de usar un DCVS que lo haga indoloro.
Otra opción es no registrar los .dir-locals.el
archivos. Por ejemplo, con git, agréguelo a .git/info/exclude
. Eso es doloroso cuando tienes muchos pagos de un proyecto, por supuesto.
Lo que hice donde .dir-locals.el
no era una opción es agregar un gancho que busca buffer-file-name
valores conocidos.
(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)
(Advertencia: código escrito directamente en mi navegador ya que no tengo acceso a mi código real en este momento).
Gilles 'SO- deja de ser malvado'
fuente
.dir-locals.el
. ¿Pueden ser compañeros de trabajo les gustaría esta idea?