本文的目的是修改Eclipse與MyEclipse的代碼提示功能,使之能夠更加快速的幫助程序員編寫代碼。

本文使用的Eclipse版本為4.2 JUNO,MyEclipse的版本為10.6。


1. 設(shè)置代碼自動(dòng)完成提示的觸發(fā)鍵
依次點(diǎn)擊Window-->Preferences-->Java-->Editor-->Content Assist:





"Auto activation triggers for Java" 指定當(dāng)按下什么鍵時(shí),會(huì)彈出代碼提示。按照自己習(xí)慣配置即可,我的配置是".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ([{,"。

較早版本的Eclipse與MyEclipse在這里最多只能指定5個(gè)鍵,想要指定更多的鍵,只能使用先導(dǎo)出配置文件,修改之后再導(dǎo)入的方法。具體方法可參考:http://hi.baidu.com/umltlgdcbsbilzd/item/aeb086202e194fc9a4275a67

"Auto activation delay (ms):" 這個(gè)值指定當(dāng)按下相應(yīng)的觸發(fā)鍵后,延遲多少毫秒彈出代碼提示。建議設(shè)置為100以下,否則會(huì)有明顯的停頓感。


2. 取消空格上屏
使用Eclipse與MyEclipse的代碼提示功能時(shí),按下空格鍵后Eclipse會(huì)自動(dòng)將代碼提示中的第一項(xiàng)上屏。這一點(diǎn)有時(shí)會(huì)變得相當(dāng)討厭,因?yàn)楹芏鄷r(shí)候我們只是單純的想要輸入一個(gè)空格而已。然而這一特性是無(wú)法通過配置改變的。好在Eclipse是開源的,我們?nèi)匀豢梢酝ㄟ^修改相應(yīng)的源代碼來(lái)改變這一點(diǎn)。

下面先以Eclipse為例說明。

首先,如果你下載的Eclipse是SDK版本的,那么可以直接越過下面的一段。

如果你的Eclipse不是SDK版本的,強(qiáng)烈建議你改為使用SDK版本的Eclipse,因?yàn)镾DK版的Eclipse附帶了所有源碼。如果你不愿意使用SDK版,那么也可以從http://www.eclipse.org/projects/listofprojects.php獲得下文所需的源代碼,以本文為例,點(diǎn)擊Platform Text,會(huì)跳轉(zhuǎn)到project頁(yè)面,再點(diǎn)擊Clone on GitHub,即可下載到相應(yīng)的源代碼。

依次點(diǎn)擊Window-->Show View-->Other...,在彈出的對(duì)話框中再選擇Plug-in Development-->Plug-ins:





在Plug-ins中找到org.eclipse.jface.text,點(diǎn)擊右鍵,選擇Import As-->Source Project:



這時(shí)eclipse就會(huì)把該項(xiàng)目導(dǎo)入到你的workspace中了。展開該項(xiàng)目,在src目錄中選擇org.eclipse.jface.text.contentassist.CompletionProposalPopup.java文件:



在該文件中找到如下的代碼:
case '\t':
      e.doit
= false;
      fProposalShell.setFocus();
      return false;

將其改為:
case '\t':
      e.doit
= false;
      insertSelectedProposalWithMask(e.stateMask);
      break;

然后,在這段代碼的下方,找到如下代碼:
if (contains(triggers, key)) {
    e.doit
= false;
    hide();
    insertProposal(p, key, e.stateMask, fContentAssistSubjectControlAdapter.getSelectedRange().x);
}

將其第一行改為:
if (key != 0x20 && key != '=' && key != ';' && contains(triggers, key)) {

經(jīng)過以上修改,我們?nèi)サ袅税聪驴崭裆掀恋墓δ?,并將其改為按下Tab鍵上屏,相信這是符合多數(shù)人的習(xí)慣的。

保存修改。接下來(lái)要做的就是使用修改過的代碼生成插件,并替換掉Eclipse本來(lái)的插件。在該工程上單擊右鍵,選擇Export...:



在彈出的對(duì)話框中選擇Plug-in Development-->Deployable plug-ins and fragments,點(diǎn)擊Next:


指定一個(gè)保存即將導(dǎo)出的jar包的位置,點(diǎn)擊Finish。


這時(shí),在你剛才指定的路徑下會(huì)生成一個(gè)plugins文件夾,里面就是導(dǎo)出的jar包:


最后一步,定位到Eclipse安裝目錄下的plugins文件夾,使用這個(gè)剛生成的jar包替換掉原本的org.eclipse.jface.text包即,大功告成!

現(xiàn)在,使用代碼提示時(shí)按下空格鍵已經(jīng)不會(huì)自動(dòng)上屏了,而是使用Tab鍵來(lái)上屏。

MyEclipse的修改方法與Eclipse完全一樣,用修改好的jar包替換掉MyEclipse自帶的jar包即可,MyEclipse中該jar包的位置是:MyEclipse安裝目錄\Common\plugins。

需要額外注意的是MyEclipse中使用的org.eclipse.jface.text包的版本。如筆者使用的MyEclipse 10.6的jface.text的版本是3.7.2,而Eclipse Juno使用的jface.text版本為3.8.1。筆者試圖用修改過的3.8.1版本的jar包替換掉MyEclipse自帶的3.7.2的jar包,發(fā)現(xiàn)替換后的MyEclipse無(wú)法啟動(dòng)。無(wú)奈只能從網(wǎng)上重新下載了3.7.2版本的Eclipse SDK,將里面的jface.text修改好之后替換道MyEclipse中,最終解決了問題。


知識(shí)共享許可協(xié)議   本作品采用知識(shí)共享署名-非商業(yè)性使用-禁止演繹 3.0 中國(guó)大陸許可協(xié)議進(jìn)行許可。