0

我最近开始使用EDE(通过CEDET通过ECB),试图将 Emacs 设置为一个合理的 IDE,以便在大型 C/C++/Python 项目上进行开发。

设置起来有点繁琐(因为我是 Emacs 和 Lisp 新手)是快速文件查找。我目前拥有的解决方案是在我的文件中设置一个原始/空白项目(一个 EDE 不需要知道如何管理 makefile 或构建).emacs

;; Enable EDE mode
(global-ede-mode 1)
;; EDE knows nothing of my project type, so use CSCope to inform it of the project
;; and its files
(setq ede-locate-setup-options
    '(ede-locate-cscope
      ede-locate-base))
;; This is probably a dubious shortcut allocation, 
;; but it's what I'm using at the mo.
(global-set-key (kbd "C-f") 'ede-find-file)
;; Set up the project for EDE
(ede-cpp-root-project "LargeApp" :file "/workspace/me/LargeApp/SConstruct")

M-x ede-find-file以前根本不工作,因为EDE对项目目录和子目录中的文件一无所知。在 EDE 项目中设置文件需要很长时间(超过 10000 个文件),但幸运的是 EDE 能够理解 CSCope 输出,因此只需使用一个小 bash 脚本在我的项目根目录中执行此操作(基于从主 CScope 项目页面):

   #! /usr/bin/env bash

   cd /workspace/me/LargeApp
   find /workspace/me/LargeApp \
        -type d -name '.git*' -prune -o \
        -type d -name '.svn*' -prune -o \
        -type d -name 'build' -prune -o \
        -type d -name 'bin' -prune -o \
        -type d -name 'lib' -prune -o \
        -name '*.h' -print -o \
        -name '*.hpp' -print -o \
        -name '*.c' -print -o \
        -name '*.cpp' -print -o \
        -name '*.cc' -print -o \
        -name '*.py' -print -o \
        -name '*.lua' -print -o \
        -name '*.xml' -print >./cscope.files
    cscope -b -q -k

然后,EDE 会cscope.out在项目根文件夹中提取文件,然后 kazam! 就M-x ede-find-file可以工作了。

但是,我正在努力解决一个主要问题:

我需要输入完整的、区分大小写的文件名。

对于这种大小的项目,这不太理想,因为您通常只记住部分文件名,而不一定是这种情况。如果我可以设置它,那就太好了,所以我只需要输入一个不区分大小写的文件名子字符串,然后获取一个 IDO 缓冲区或类似的我可以通过 tab 直到我找到我正在寻找的文件。

4

1 回答 1

0

我已经求助于使用M-x cscope-find-this-file。它迫使我从缓冲区中可能的文件路径选项中进行选择,但它可以合理地快速为我找到正确的文件,并且不受区分大小写的阻碍。如果我可以将它连接到 IDO,那么它应该完全符合我的要求。

对于 Python,CScope/xcscope.el 很好,但对于导航 Python 标记并不完美。所以我开始使用ElpyM-x elpy-goto-definition非常适用于 Python 文件,而对于我正在使用的其他 (C/C++) 文件M-x cscope-find-this-symbol

于 2014-06-06T13:26:05.500 回答