2011-07-19 38 views
3

我开始使用Qooxdoo和emacs与js2模式(伟大的工具btw)的项目,但我有一个小问题:没有自动完成qooxdoo框架类的支持。目前,我已启用自动完成模式,但当我需要记住框架类时,它并没有帮助。用于Qooxdoo的Emacs自动完成?

备注: - 我正在使用emacs 24. - 如果需要,我可以删除自动完成模式并使用公司模式。

谢谢!

编辑:为了使这项工作,我做了一个小的脚本来从框架/源/类目录中的类名:

find . -iname '*.js' -print0 | while read -d $'\0' file 
do 
    grep '^qx.Class.define(".*",$' $file | sed 's/qx\.Class\.define("\(.*\)",/\1/' >> ~/.emacs.d/ac-dict/js2-mode 
done 

之后,只需遵循从sanityinc答案一切都按预期工作。谢谢!

+0

不错的脚本,但你应该只能使用文件名,因为文件的qx/...路径与它的类名之间存在1:1的关系(例如路径qx/util /ResourceManager.js包含类qx.util.ResourceManager)。使它更容易一些。并且确保-prune qx/test,因为你不希望单元测试类炸毁你的字典。 - 走的路! – ThomasH

+0

@thomash好点。如果我在下几周有空闲时间,我想我会做一个改进版本(当我在“qx.something”中键入“。”时完成当前“停止”),并将链接发送到此处并发送一封关于它的邮件到qooxdoo团队。 –

回答

3

您可以使用基于主要模式的user-defined dictionary来完成此操作。首先,确保你的'ac-sources包括'ac-source-dictionary。然后,创建一个包含框架类名称列表的文件,并将其保存为~/.emacs.d/ac-dict/js(或~/.emacs.d/ac-dict/js2-mode)。

设置在~/.emacs(或~/.emacs.d/init.el,如果您使用的是方案,而不是,你应该;-)以下变量:

(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict") 

重新启动您的Emacs,然后在.js文件自动完成候选人文件应该包含你的类名。

+0

好主意!我会给它一个机会,并在稍后发布结果。谢谢! –