代码之家  ›  专栏  ›  技术社区  ›  Elvis_Rotor

从ede获取项目根

  •  2
  • Elvis_Rotor  · 技术社区  · 12 年前

    我正在尝试从ede对象获取项目的根。我读到关于这件事的有趣讨论 issue 。我使用了David的一个示例,除了它只适用于项目中打开文件的缓冲区之外,它似乎工作得很好。我希望从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 回复  |  直到 12 年前
        1
  •  4
  •   Alex Ott    12 年前

    您可以使用以下内容:

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