分享

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

 lzqkean 2014-07-16

一直在 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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多