现在的位置: 首页 > 综合 > 正文

定制Eclipse的代码提示(优化自动上屏等功能)

2013年10月16日 ⁄ 综合 ⁄ 共 2409字 ⁄ 字号 评论关闭

定制Eclipse的代码提示(优化自动上屏等功能)

        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"

按照上述方法修改后编写代码可以实现随时代码提示和补全功能, 但是在使用过程中问题又来了,这样的提示太智能啦,比如我只是想定义一个Button btnClick,但是自动提示总是会在后面帮你追加Button以便标示,最后变成了btnClickButton,但是我的本意只是想输入btnClick,这样的提示就会让人不得不每次都修改变量,很不人性化,还有就是当按下空格键时会把第一行的内容自动上屏,其实很多时候就是想输一个空格而已. 如何解决?

解决方案:

第一步:打开"Window"——>"Show
View"——>"Other"——>找到"Plug-in Development"——>选择"Plug-in",如图一

(很多朋友可能找不到这个"Plug-in
Development"或者"Plug-in"视图,这是因为没有安装PDE,此时只需要在线安装PDE插件即可,在线地址:http://download.eclipse.org/eclipse/pde/visualization/updates
(安装方式:Help——>Install
New Software——>输入地址在线安装即可,如图二),安装完毕再如第一步所说的选择Plug-in视图即可)

                                  
图一

                                                                               图二

第二步:在打开的"Plug-in"视图中找到"org.eclipse.jface.text(版本号:不同版本版本号不一样)",如下图:

第三步:右键选择jar包,选择"Import As"——>选择"Source Project"

第四步:导入jar程序之后,找到"src/org/eclipse/jface/text/contentassist/CompletionProposalPopup.java",但是此时你可能会发现我的项目里面根本连src文件夹都没有,这怎么办呢?

(根本原因是你的eclipse开发工具不是源码SDK,是经过编译的,此时我们需要去官网下载一个源码的SDK版就可以,具体下载地址:http://download.eclipse.org/eclipse/downloads/drops/R-3.8.1-201209141540/index.php#EclipseSDK,具体的版本要跟你jface.text版本一直最好,如我的是3.8.1,所以我去下载的网址是3.8.1版本的)

下载完毕之后按照第一步方式,找到你下载的Eclipse 的jface.text文件,把它导入到项目中,然后编辑"src/org/eclipse/jface/text/contentassist/CompletionProposalPopup.java"类

第五步:找到"src/org/eclipse/jface/text/contentassist/CompletionProposalPopup.java"类中的public boolean verifyKey(VerifyEvent e) 方法下的如下代码:

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

    e.doit = false;

    hide();

    insertProposal(p, key, e.stateMask, fContentAssistSubjectControlAdapter.getSelectedRange().x);

}
修改为如下代码:

char[] triggers= t.getTriggerCharacters();

if
(key != '=' && key != 0x20 && contains(triggers,key))
{  

   e.doit = false;  

   hide();  

   insertProposal(p, key, e.stateMask, fContentAssistSubjectControlAdapter.getSelectedRange().x);  

}
再修改代码处的向上数9行处的代码:

case '\t':

    e.doit= false;

    fProposalShell.setFocus();

    return false;
修改为:

case '\t':

    e.doit= false;

    insertSelectedProposalWithMask(e.stateMask);

    break;

如此,我们代码提示的时候就不会自动上屏或者补齐,并且tab切换时候才自动上屏,增强了代码提示的

抱歉!评论已关闭.