Pregunta:
A menudo me encuentro en la situación en la que me dicen que ponga rutas relativas como variable local del directorio. Por ejemplo cmake-ide 's cmake-ide-project-dir
y cmake-ide-build-dir
. Por supuesto, esto no es muy portátil.
Entonces en lugar de
.dir-locals.el
:
((nil . ((cmake-ide-project-dir . "/home/user/code/project"))))
Quiero algo como
((nil . ((cmake-ide-project-dir . directory-of-current-dir-locals-file))))
¿Cómo puedo definir un directory-of-current-dir-locals-file
? ¿Y cómo podría configurar, por ejemplo, cmake-ide-build-dir
, que normalmente es (concat directory-of-current-dir-locals-file "build")
?
Respuesta:
Mi solución hasta ahora (basada en esta respuesta de Stackoverflow ):
.dir-locals.el
:
;;; Directory Local Variables
;;; For more information see (info "(emacs) Directory Variables")
((nil . ((eval . (set (make-local-variable 'my-project-path)
(file-name-directory
(let ((d (dir-locals-find-file ".")))
(if (stringp d) d (car d))))))
(cmake-ide-project-dir . my-project-path)
(eval . (setq cmake-ide-build-dir (concat my-project-path "build")))
)))