解決 eclipse 啟用增強自動補全後, 在聲明變數時對變數名稱進行的擾人的補全行為

來源:互聯網
上載者:User

一直在 Visual Studio 下混, 最近開始寫 java, 於是用起了 eclipse, 很多地方都不錯

但是因為習慣了 vs 下的 "intellisense", 於是在 eclipse 下把補全的觸發(Auto activation triggers for Java )由 '.' 改為 'a-zA-Z.', 以類比之

總的來說, 表現與預期一致, 只有一個地方很彆扭, 即在聲明變數時, ide 會對變數名稱觸發補全, 而且該補全很容易被誤選中, 在實際使用中非常讓人困擾.

 

幸好 eclipse 是一個開源項目, 而且基於外掛程式機制, 為定製行為提供了很好的支援, 於是花了兩天時間, 研究了一下, 找到瞭解決方案, 提供如下, 獻給跟我一樣困擾的朋友:

 

1. 下載帶完整 source 的 eclipse, 比如 eclipse-SDK-3.6-win32
2. 進入 Plug-in Development 視圖
3. 找到 org.eclipse.jdt.core 包, 右鍵 Import As ... Source Project
4. 轉到匯入的項目: org.eclipse.jdt.core, 找到類 org.eclipse.jdt.internal.codeassist.CompletionEngine, 其中方法 completionOnFieldName 跟 completionOnLocalOrArgumentName 是跟聲明變數時變數名補全有關, 它們最終會調用到方法 findVariableName, 在該方法中定義有內部介面對象 INamingRequestor, 修改這個對象的 accept 方法可以影響到 JDT 對補全的最終處理
5. 我做了一個簡單的轉換, 即在 accept 函數頭插入一句 name = new char[] {}; 清除 JDT 傳入的補全結果, 從而取消了變數聲明時擾人的補全的提示
6. 修改完畢後, 在項目 org.eclipse.jdt.core 上右鍵 Export ... Deployable plug-ins and fragments, 把匯出的定製過的 org.eclipse.jdt.core 包覆蓋到 eclipse 的 plugins 下即解決問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.