Dizin yerel değişkenini .dir-locals.el dosya konumuna göre nasıl ayarlayabilirim?


15

Kendimi genellikle dizin yerel değişkeni olarak göreli yollar koymamın söylendiği durumda bulurum. Örnek için cmake-ide S' cmake-ide-project-dirve cmake-ide-build-dir. Tabii ki bu çok taşınabilir değil.

Yani yerine

.dir-locals.el:

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

Gibi bir şey istiyorum

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

Böyle bir değişkeni nasıl tanımlayabilirim directory-of-current-dir-locals-file? Örneğin cmake-ide-build-dir, tipik olarak nasıl ayarlayabilirim (concat directory-of-current-dir-locals-file "build")?

Yanıtlar:


7

Şimdiye kadarki çözümüm ( bu Stackoverflow cevabına dayanarak ):

.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
Ayrıca kullanabilirsiniz(locate-dominating-file default-directory ".dir-local.el")
ibizaman

0

Değişkeni ile tanımlayabilirsiniz (defvar directory-of-current-dir-locals-file "/home/user/code/project").


2
Üzgünüm belki sorum açık değildi. Ancak fikir mutlak yollar kullanmak değildi . Bildiğiniz için değişkeni .dir-locals.eldosyaya göre ayarlamak istersiniz .
Akış
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.