1. 程式人生 > >Eclipse去掉空格,";""="鍵自動補全第一行

Eclipse去掉空格,";""="鍵自動補全第一行

本文轉自:http://blog.csdn.net/fszeng2011/article/details/46038573

以前使用VisualStudio和Sublime寫程式碼的時候有很完善的程式碼提示,但是最近開始使用Eclipse弄JAVA的時候發現它的程式碼提示不是很習慣。上網找了一些資料,修改了程式碼提示的方式,記錄在部落格上供大家查閱。

本文主要參考了以下文章
http://www.cnblogs.com/a-zx/p/3388041.html
本文基於
Eclipse Java EE IDE for Web Developers.
Version: Luna Service Release 2 (4.4.2)
Build id: 20150219-0600
進行解釋。

設定程式碼提示

開啟 Eclipse 依次選擇 Window -> Perferences -> Java -> Editor -> Content Assist,Auto activation triggers for Java:設定框中預設是”.”   現在將它改為:
  .abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_
有老版本的Eclipse不支援定義這麼多觸發器,可以通過修改配置檔案實現,網上資料很多。

然後你就會發現Eclipse可以使用更智慧的程式碼提示了。但是現在有一個比較大的問題是,Eclipse智慧過頭了,它總想幫我們完成一些我們不想要的程式碼補完。比如按“=”和空格以後就會自動補完程式碼,這對很多人真的不能忍。

幸好Eclipse是開源軟體,解決辦法是直接修改程式碼提示功能的原始碼,以完成我們需要的功能。

首先開啟window->show view,選擇Plug-ins,再找到org.eclipse.jface.text,右鍵單擊,選擇import as-> Source Project,匯入完成後,在你的workspace就可以看到這個project了。如果沒有src這個資料夾,說明你使用的版本中沒有帶原始碼,我正好也是這種情況。

原始碼可以去這個地址下載(找了我好久好久)

在頁面上選擇你Eclipse版本的連線(我使用的是4.4.2),然後在新頁面中下載eclipse-SDK-(*************).zip,根據自己的需要選擇合適的版本下載,大概200M左右。下載完成以後解壓縮,在.\eclipse\plugins\資料夾下找到  org.eclipse.jface.text.source_3.9.2.v20141003-1326.jar  (這是對應我使用的Eclipse版本的檔案,實際請根據你自己的版本進行選擇),將這個檔案複製到你自己的Eclipse安裝目錄下的.\eclipse\plugins\資料夾下,然後重新啟動Eclipse。重複上面的操作匯入(import)org.eclipse.jface.text,此時就能夠看到src檔案夾了。在src資料夾下org.eclipse.jface.text.contentassist.CompletionProposalPopup#verifyKey()”函式中有一段程式碼:


[java] view plain copy print?
  1. if(contains(triggers, key)){  
  2. …  
  3. }  
if(contains(triggers, key)){
...
}
將這段程式碼改為 [java] view plain copy print?
  1. if(key!=0x20 && key!=‘=’ && key!=‘;’ && key!=‘[‘ && contains(triggers, key)){  
  2.     …  
  3. }  
if(key!=0x20 && key!='=' && key!=';' && key!='[' && contains(triggers, key)){
    ...
}

最後就是匯出修改後的外掛,右鍵點選你的workspace裡的工程,選擇Export->Deployable plugins and fragments,點選Next,選擇Destination選項卡,選擇Directory,選擇一個要儲存外掛的目錄,然後Finish。然後就會在你所選的目錄下產生一個新的plugins目錄,裡面有一個jar檔案,用它替換掉eclipse/plugins裡面的org.eclipse.jface.text,記得覆蓋前對原檔案進行備份。然後重新啟動Eclipse。