我最近开始使用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 直到我找到我正在寻找的文件。