我正试图从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。
答案 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))))