Como posso definir a variável local do diretório em relação ao local do arquivo .dir-locals.el?


15

Costumo me encontrar na situação em que me dizem para colocar caminhos relativos como variável local do diretório. Por exemplo, cmake-ide 's cmake-ide-project-dire cmake-ide-build-dir. Claro que isso não é muito portátil.

Então, ao invés de

.dir-locals.el:

((nil . ((cmake-ide-project-dir . "/home/user/code/project"))))

Eu quero algo como

((nil . ((cmake-ide-project-dir . directory-of-current-dir-locals-file))))

Como posso definir essa variável directory-of-current-dir-locals-file? E como eu definiria, por exemplo cmake-ide-build-dir, o que normalmente é (concat directory-of-current-dir-locals-file "build")?

Respostas:


7

Minha solução até agora (com base nesta resposta do 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")))
         )))

4
Você também pode usar(locate-dominating-file default-directory ".dir-local.el")
ibizaman 26/10/17

0

Você pode definir variável com (defvar directory-of-current-dir-locals-file "/home/user/code/project").


2
Desculpe, talvez minha pergunta não esteja clara. Mas a ideia era não usar caminhos absolutos. Como você sabe que deseja definir a variável como algo relativo ao .dir-locals.elarquivo.
Fluxo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.