【发布时间】:2013-10-23 02:03:41
【问题描述】:
我正在尝试让 Cocoa 开发环境在 Emacs 中运行,我已经完成了 80% 的工作。我想念的一个功能是 Xcode 的“快速打开”,它基本上对您键入的字符串与 Xcode 工作区中引用的文件名和这些文件中定义的符号进行模糊匹配。
我的问题是我们的项目很大:如果我使用 etags 为我们项目的子目录中的 .h 和 .m 文件生成一个 TAGS 文件,结果会超过一个 gig 并且 Emacs 抱怨“TAGS文件很大。真的打开了吗?”,如果我说“是”,那么 Emacs 就会挂起并且基本上无法使用。当然,这是在我考虑为系统库建立索引标签之前。我也尝试过projectile,但不幸的是,它在我这种规模的项目中同样无法使用(大约需要一分钟才能找到匹配项)。
我突然想到,我真正想要的所有索引信息都在 Xcode 项目本身中,所以如果我有一个 Emacs 包可以解析它们并遍历它们的依赖关系,那可能是一个开始,但我不知道任何此类软件包。
在这方面有什么建议/解决方案吗?
【问题讨论】:
-
任何项目的最后 20% 占用了 80% 的时间... Xcode 的 Open Quickly 构建在源索引器之上,而源索引器构建在编译器...投入了大量精力来创建必要的基础设施,以使 Open Quickly... 嗯... 快速打开。并不是说它不能在 emacs 中完成(我的大部分胡须都是用我的 ~250K 的 .emacsrc 获得的),只是低估了一个看似简单的功能背后的基础设施深度是错误的!哦,还有,愿 .el 的力量与你同在。
-
如果 GNU Global 是您的选择,那应该对 TAGS 文件有很大的改进(我不确定这是否对您的主要问题有帮助,但是我想一些不同的“找东西”库将能够与 Global 集成。)
-
谢谢@bbum!非常感谢您在这里的洞察力。
-
@PHD 话虽如此,源索引是封装在 LLVM/Clang,IIRC 中的东西。因此,您应该能够构建一个插件,该插件可以深入了解源代码并生成一个可以教 emacs 使用的索引。
-
关于我的第一条评论,Helm 和 Global 显然可以通过 emacs-helm-gtags 一起工作
标签: objective-c xcode emacs emacs-helm