.dir-locals.el 파일 위치를 기준으로 디렉토리 로컬 변수를 설정하는 방법은 무엇입니까?


15

나는 종종 상대 경로를 디렉토리 로컬 변수로 넣으라는 말을 듣는다. 예를 들어 cmake-IDEcmake-ide-project-dircmake-ide-build-dir. 물론 이것은 휴대하기가 쉽지 않습니다.

그래서 대신

.dir-locals.el:

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

나는 같은 것을 원한다

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

그런 변수를 directory-of-current-dir-locals-file어떻게 정의 할 수 있습니까? 내가 예를 들어 설정 얼마나 그리고 cmake-ide-build-dir, 이는 일반적으로 (concat directory-of-current-dir-locals-file "build")?

답변:


7

지금까지 내 솔루션 ( 이 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
당신은 또한 사용할 수 있습니다(locate-dominating-file default-directory ".dir-local.el")
ibizaman

0

로 변수를 정의 할 수 있습니다 (defvar directory-of-current-dir-locals-file "/home/user/code/project").


2
죄송하지만 내 질문이 명확하지 않을 수 있습니다. 그러나 아이디어는 절대 경로를 사용 하지 않는 것이 었습니다 . 변수를 .dir-locals.el파일과 관련된 것으로 설정하려는 것을 알고 있기 때문에 .
흐름
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.