2014-02-19 7 views
2

ede 객체에서 프로젝트의 루트를 얻으려고합니다. 나는이 issue에 대한 interessting 토론을 읽습니다. David의 예제를 사용했는데, 프로젝트에서 열린 파일이있는 버퍼에서만 작동한다는 것 외에는 완벽하게 작동하는 것 같습니다. 나는 dired 모드에서 또는 내가 결정한 다른 모드에서 프로젝트의 루트를 반환하고 싶습니다. 가능한가? 내가 사용한 코드는 다음과 같습니다.ede에서 프로젝트 루트 얻기

(defun my-get-project-root() 
(interactive) 
(let ((proj ede-object-root-project)) 
    (if proj 
    (message "Project root: %s" 
      (ede-project-root-directory proj)) 
    (message "No project for this buffer.")))) 

예를 들어 dired 모드에서 실행할 때 "No this project for this buffer"메시지가 나타납니다.

나는 다른 도구를 사용하여 구현할 수 있다는 것을 알고 있지만 이미 프로젝트 관리에 cedet을 사용하고 있습니다.

답변

3

당신은 같은 것을 사용할 수 있습니다

(defun get-project-root-dir() 
    (interactive) 
    (let* ((fname (or (buffer-file-name (current-buffer)) default-directory)) 
    (current-dir (file-name-directory fname)) 
     (prj (ede-current-project current-dir))) 
    (when prj 
     (ede-project-root-directory prj))))