自定义Eclipse的代码提示插件——移除Code Assist在变量名后自动添加的类名

Eclipse Juno

在之前的文章中介绍了如何自定义Eclipse的代码提示功能(Code Assist)。使用自定义的Code Assist固然能增加效率,不过也带来了一些问题。 Eclipse的Code Assist在给非基本类型的变量命名时,会自动在末尾加入类名。在快速编写代码时,这是很让人头疼的。

比如想定义一个名为anotherMessage的String变量时,Code Assist会自动提示一个含有Class名称的变量名。又例如,你想创添加一个叫sam的Person类型字段时,如果使用Code Assist,会提示private Person samPerson,其中sam后面的Person就是Code Assist添加的。

在默认情况下,这并不是一个问题。因为Eclipse默认是由”.”(英文句号)来触发Code Assist,目的是为了更加方便的查看和调用一个类中的方法。而变量名是不能包含”.”这个字符的,所以这样的“自动完成”将不会被调用。而如果想在其他的条件下触发,则需要按Alt + / 或者是 Ctrl + Space手动调用 (Ctrl + Space原先是Eclipse的默认快捷键,不过在中文环境下和输入法切换冲突)。 而当触发按键由“.”改成“.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”后,只要输入任意一个字母都将激活Code Assist。这就意味着你在输入例如:

String anotherMessage = “hello, world again!”;

这样的语句时,在输入变量名时,输入a后,Code Assist会提示aString(因为这是一个String类,Code Assist尝试将类的名称添加在变量后),输入an后,会提示anString……当输入完整个String anotherMessage后,Code Assist就会像上面的图一样提示anotherMessageString。不过你可能刚好完成了本行的代码,输入一个分号就结束了这个语句。直到现在,Code Assist还没有造成任何的危害。不过当你需要向其赋值时,无论你是直接输入等号(“=”)还是试图输入空格加等号(“[SPACE]=”),Code Assist都会将变量名改成anotherMessageString。

而最悲剧的是,Eclipse Preference中没有任何地方可以关掉这个设置。 好在Eclipse是一个开源放代码的项目,我们可以通过修改Eclipse的JDT插件来更改这一问题。不过首先你需要有Eclipse的源代码,并且注意,不是所有Eclipse的发行版本(比如Java,Java EE和C/C++)都将源代码包括在其中。这篇文章介绍了多种获得Eclipse源代码的方式,一般简单的方式就是去下载Eclipse Classical(或者安装Eclipse的SDK)。 接下来启动Eclipse,菜单上选择Windos=>Open Rerspective=>Other 然后选择Plug-in Development。

然后在左边的Plug-ins里面找到org.eclipse.jdt.core包,后面括号是版本号以及日期。这里的3.8.2是到目前为止最新的版本。

右键选择他,然后选择import as=>source project然后Eclipse将自动导入相关的文件。

找到org.eclipse.jdt.internal.codeassist。

添加

name = new char[]{};

然后选择File=>Export,在导出的类型中选择Plug-in Development=>Deployable plug-ins and fragments。 在Destination选择导出的目录,还可以在Options里面选择同时导出打包后的源文件。

然后选择Finish开始,Eclipse就开始进行导出。

最后将生成的JAR包复制到Eclipse的plugins下替换原有的文件,重启Eclipse即可。

相关文章

Loading Facebook Comments ...

发表评论

电子邮件地址不会被公开。 必填项已用*标注