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

04 eclipse 自动补全功能的改进

2015-10-14 10:58 411 查看
参考文章 : http://tieba.baidu.com/p/2466687622?pn=1#35658184556l

这是一个关于修改了一下eclipse自动补全功能的问题, 当你配置了给定的字母会自动提示, 当你你键入变量名的时候,会自动提示补全,然后 这时候, 键入空格 或者”=”, 这时候 都会直接帮你吧变量名补齐

这个问题 我也很早之前就遇到了, 由于最近没什么时间, 并且最近没有怎么使用eclipse, 所以 一直把这个问题放在这里了, 昨天的时候, 没事 就按照上面的帖子把问题解决了

但是 这里与上面帖子里的不同在于, 因为我这里import org.eclipse.jface.text项目导进来嘛, 没有源代码, 所以在网上去找了一份这个插件的源代码, 然后 自己更新代码之后, 进行编译, 并将其更新到插件对应的jar包中

1 问题描述



看到了吗? 上面等eclipse自动提示的时候, 我的按键是 空格 + “=”, 我的原意是将变量名命名成”lI”, 但是 eclipse却给我将其替换为了备选项的”listIterator”

2 导出org.eclipse.jface.text插件为一个项目

先找到相关的插件: window -> show view -> plug-ins

找到插件org.eclipse.jface.text,右键点击,选择import as Source Project,导入完成后,在你的workspace就可以看到这个project了



3 导入源码, 更新业务代码, 编译

在src/org/eclipse/jface/text/contentassist/CompletionProposalPopup.java文件中,找到这样一行代码

char[] triggers = t.getTriggerCharacter();

if(contains(triggers,key))

在那行if判断里面,eclipse会判断key(就是你按下的键)是否在triggers中,如果是,那就触发下面的第一行提示上屏的代码.所以我们要做的就是把空格和=号排除就可以了:

if(key != ‘=’ && key != 0x20 &&contains(triggers,key)){

………

}

代码修改成这样后,提示的时候按下空格或者等号,提示就会没掉,也不会自动补全了咯!!!



上面 只录制了对于org.eclipse.jface.text.contentassist.CompletionProposalPopup.java的更新了的部分的显示, 加入了一个filteredTriggerChars, 并在业务代码之前加入了一个过滤条件, 以免 使用空格 或”=”, 或者 其他我不想按此键之后eclipse为我自动补全的按键的ascii码 [这里 我配置的是所有的非字母的字符]

后面的这个Main.java主要是为了编译CompletionProposalPopup.java

4 更新CompletionProposalPopup的相关字节码文件到 插件包中



这里就是将更新代码之后的CompletionProposalPopup.java的编译完成的字节码, 更新到插件的jar包中, 然后 启动eclipse, 就会发现上面的问题解决了

如果 你不放心的话, 可以为org.eclipse.jface.text备一个份

5 解决问题, 收工



看到了吗? 上面等eclipse自动提示的时候, 我的按键是 空格 + “=”, 我的原意是将变量名命名成”lI”, 然后可以看到我们的主题问题解决了

过滤掉的输入字符如下 :



参考教程 : http://tieba.baidu.com/p/2466687622?pn=1#35658184556l

jface.text 源代码 : http://vdisk.weibo.com/s/aWiTqHd1bs37I

http://download.csdn.net/detail/u011039332/9179331

上图操作之后更新之后的jface.text的jar包 : http://download.csdn.net/detail/u011039332/9179349
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  eclipse 自动补全