您的位置:首页 > 编程语言 > Java开发

解决 eclipse 启用增强的自动补全后, 在声明变量时对变量名称进行的扰人的补全行为

2010-08-25 13:51 302 查看
一直在 Visual Studio 下混, 最近开始写 java, 于是用起了 eclipse, 很多地方都不错

但是因为习惯了 vs 下的 "intellisense", 于是在 eclipse 下把补全的触发(Auto activation triggers for Java
)由 '.' 改为 'a-zA-Z.', 以模拟之

总的来说, 表现与预期一致, 只有一个地方很别扭, 即在声明变量时, ide 会对变量名称触发补全, 而且该补全很容易被误选中, 在实际使用中非常让人困扰.

幸好 eclipse 是一个开源项目, 而且基于插件机制, 为定制行为提供了很好的支持, 于是花了两天时间, 研究了一下, 找到了解决方案, 提供如下, 献给跟我一样困扰的朋友:

1. 下载带完整 source 的 eclipse, 比如 eclipse-SDK-3.6-win32

2. 进入 Plug-in Development 视图

3. 找到 org.eclipse.jdt.core 包, 右键 Import As ... Source Project

4.
转到导入的项目: org.eclipse.jdt.core, 找到类
org.eclipse.jdt.internal.codeassist.CompletionEngine, 其中方法
completionOnFieldName 跟 completionOnLocalOrArgumentName 是跟声明变量时变量名补全有关,
它们最终会调用到方法 findVariableName, 在该方法中定义有内部接口对象 INamingRequestor, 修改这个对象的
accept 方法可以影响到 JDT 对补全的最终处理

5. 我做了一个简单的转换, 即在 accept 函数头插入一句 name = new char[] {}; 清除 JDT 传入的补全结果, 从而取消了变量声明时扰人的补全的提示

6.
修改完毕后, 在项目 org.eclipse.jdt.core 上右键 Export ... Deployable plug-ins and
fragments, 把导出的定制过的 org.eclipse.jdt.core 包覆盖到 eclipse 的 plugins 下即解决问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: