解决eclipse代码自动提示的一些BUG

eclipse设置了代码自动补全后,总是会遇到这样的问题:输入str 等变量名的时候,按空格键总是会很SB的自动补全成String,但我们只是需要str,这时候怎么办呢?


别急,有办法的!


eclipse自动补全变量名使用了plugin org.eclipse.jface.text。找到实际完成此功能的类CompletionProposalPopup,修改后替换plugin。

所以,按如下操作就可以啦

 (一)在Eclipse打开Window菜单-->show view -->Others -->Plug-in Development -->Plug-ins。

 (二)在plug-ins视图下找到org.eclipse.jface.text,右键import as Source Project

 这时就会出现一个问题,看不到源码!!!怎么办呢?按如下操作就可以啦!

 这时候就要去下载插件的源码了, 如何下载插件的源码呢,可以借助一个插件来完成,插件名字叫                                               org.freejava.javasourceattacher_1.2.1,可以从点击打开链接下载,下载后把插件放到eclipse的dropins目录,重启eclipse,在刚才的项目org.eclipse.jface.text下的org.eclipse.jface.text_3.7.0.v20110505-0800.jar右键,选择Attach Java Source,插件自动下载。下载的目录在C:\Documents and Settings\Administrator\.sourceattacher\下面。

找到源码位置,解压,在eclipse新建一个Java项目,把org文件夹复制到项目的src下面,其他文件夹复制到src父文件夹下面,

打开org.eclipse.jface.text_3.7.0.v20110505-0800.jar把用META-INF下的文件覆盖项目的META-INF文件夹。

在项目右击,选择build path-->configure build path,在libraries下面点击add library,选择plug-in dependencies,

点击finish。

 (三)找到CompletionProposalPopup类,路径src/org/eclipse/jface/text/contentassist/CompletionProposalPopup.java,

找到这样一行代码

   

char[] triggers = t.getTriggerCharacter(); if(contains(triggers,key))

     if 里判断你按下的键(key)是否在triggers 中,如果是,就触发第一行提示的

代码。于是,我们只要在这里排除掉空格和=号即可,如下:

    

char[] triggers= t.getTriggerCharacters(); if ((key != '=') &&(key != 0x20)&&contains(triggers, key))

    修改成这样,空格和等号就不会触发自动补全了。


(四)保存后导出,替换org.eclipse.jface.text_3.7.0.v20110505-0800.jar里面的 
CompletionProposalPopup类,导出是普通的Export-->Jar File


然后使用压缩软件打开org.eclipse.jface.text_3.7.0.v20110505-0800.jar把新生成的CompletionProposalPopup类替换掉老的class,注意把CompletionProposalPopup$.*.class之类的也替换掉,保存后,替换掉eclipse的plugins下面的org.eclipse.jface.text_3.7.0.v20110505-0800.jar,替换之前注意备份org.eclipse.jface.text_3.7.0.v20110505-0800.jar。

     重启Eclipse,大功告成,现在按=就可以了,再也不要自己去删掉补全的部分了。

转载自(http://www.360doc.com/content/15/0605/11/20175734_475807763.shtml)

我这里有一个设置好的eclipse4.4.1版本的,直接覆盖就可以用了。点击下载,需要的人可以去下载

你可能感兴趣的:(软件使用)