2014-02-19 178 views
2

我試圖從ede目標獲取項目的根目錄。我讀了這個issue的意見。我使用了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模式時,我得到:「沒有項目這個緩衝區」的消息。

我知道它可以通過一些其他工具來實現,但我已經在使用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))))