从ede获取项目根目录

时间:2014-02-19 15:24:35

标签: emacs elisp cedet

我正试图从ede对象中获取项目的根目录。我阅读了有关此issue的有趣讨论。我使用了大卫的一个例子,它似乎工作得很好,除了它只适用于项目打开文件的缓冲区。我希望从dired模式或我决定的任何其他模式返回项目的根目录。可能吗?这是我用过的代码:

(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。

1 个答案:

答案 0 :(得分:4)

你可以使用类似的东西:

(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))))