定制Eclipse的Content assist(代碼補全),比如空格鍵 "="鍵不上屏


Eclipse具有代碼提示功能, 但是默認的提示只有在輸入"."時才會提示, 我們希望Eclipse可以像Visual Studio那樣, 輸入任何字母都可以自動提示, 按照如下方式進行修改即可: 

1. “window”→“Preferences” 2. 選擇“java”,展開,“Editor”,選擇“Content Assist”。 3. 選擇“Content Assist”,然后看到右邊,右邊的“Auto-Activation”下面的“Auto Activation triggers for java”這個選項。其實就是指觸發代碼提示的就是“.”這個符號。 4. “Auto Activation triggers for java”這個選項,在“.”后加abcdefghijklmnopqrstuvwxyz字母,方便后面的查找修改。然后“apply”,點擊“OK”。

按照上述方法修改后編寫代碼可以實現隨時代碼提示和補全功能, 但是在使用過程中問題又來了, 當按下空格鍵時會把第一行的內容自動上屏,其實很多時候就是想輸一個空格而已. 如何解決, 在網上搜索了一下, 果然有人遇到同樣問題, 參考下面解決方案, 順利在Eclipse 3.7下解決問題.

參考文章:

引: http://johnlxj.blog.163.com/blog/static/16586556420117175344712/ 以前只知道alt+/調出assist,后來發現可以所有字母都激活content assist(方法百度上都有,就不在這寫了).用起來果然很爽.但是eclipse還是有些默認的設置不是很好,比如空格鍵和=號會把第一行的內容自動上屏,其實很多時候我就是想輸一個空格或=號而已.這個在設置里面沒辦法設置.幸好eclipse是有插件機制的,可以通過修改插件的源碼,然后導出成插件,再替換掉原來的插件來處理 1.先找到相關的插件  打開Plug-ins View找到插件org.eclipse.jface.text,右鍵點擊,選擇import as Source Project,導入完成后,在你的workspace就可以看到這個project 2.修改代碼  在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))

3.把修改好的org.eclipse.jface.text導出  右鍵點擊你的workspace里的org.eclipse.jface.text,選擇export-->Deployable plugins and fragments, next,destination 選擇archive file,然后finish.你就可以在zip文件里看到生成好的jar ,用它替換掉eclipse/plugins里面的同名jar,就可以了

怎么我找不到src這個文件夾的 嗯 可能跟源碼有關,你找找你的Eclipse IDE for Java EE Developers plugins目錄下面有沒有org.eclipse.jface.text的源碼

EclipsePlug-in Development Environment (PDE)插件網址: http://www.eclipse.org/pde/

 

我同時安裝了Eclipse 3.5Eclipse 3.7, 按照上面的文章指導, Eclipse 3.5下無法對插件源碼進行修改而在Eclipse 3.7下可以成功修改.

 

Eclipse 3.5 Galileo "import"對話框下沒有"Plug-in Development"選項Eclipse 3.5下無法對插件"org.eclipse.jface.text"源碼進行修改.

Eclipse 3.7  "import"對話框下有"Plug-in Development"選項可以對Eclipse 3.7下的插件"org.eclipse.jface.text"源碼進行修改.

"Import As" 需要選擇"Projects with source folders"

 

[java]   view plain copy
  1. // 對源代碼進行如下修改  
  2. default:  
  3. ICompletionProposal p= getSelectedProposal();  
  4. if (p instanceof ICompletionProposalExtension) {  
  5. ICompletionProposalExtension t= (ICompletionProposalExtension) p;  
  6. char[] triggers= t.getTriggerCharacters();  
  7. // hf modify  
  8. // eclipse 關閉空格、等號自動補全(上屏)功能  
  9. //if (contains(triggers, key)) {  
  10.  if(key!='='&&key!=0x20&&contains(triggers,key)) {  
  11. e.doit= false;  
  12. hide();  
  13. insertProposal(p, key, e.stateMask, fContentAssistSubjectControlAdapter.getSelectedRange().x);  
  14. }  
  15. }  

 

將修改后的工程導出, 再用導出后的"org.eclipse.jface.text_3.7.1.r371_v20110825-0800.jar"插件覆蓋原來對應插件就好了.

已經修改好的"org.eclipse.jface.text_3.7.1.r371_v20110825-0800.jar"我已經上傳到我的資源中, 需要的可以去下載.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM