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

一直在 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 下即解决问题

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值