zoukankan      html  css  js  c++  java
  • Eclipse自动补全修改

    一、前言

    之前敲代码用的是文本工具sublime,转到Eclipse之后发现补全功能特别不方便,所以想根据自己的情况进行调整,具体有两点:

    • 输入某些语句的前几个字母就能自动提示相关的完整语句
    • 用tab自动补全当前语句

    根据这两个需求进行修改。

    二、增强提示功能

    打开Eclipse,从Window -> preferences -> Java -> Editor -> Content assist -> Auto-Activation下,我们可以在"."号后面加入我们需要自动提示的首字幕,比如"abc",可以把26个字母的大小写全部加上:“.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_”。

    注意:设置完所有字符都提示之后,可能敲代码的时候会有点卡建议设置一下Auto activation delay 的值,主要看个人手速与习惯,我是设置到400,后面会根据习惯继续调整。

    三、修改自动补快捷键

    Eclipse默认有补全提示的时候,按下“=”,空格,“.”和“;”这几个符号都对当前语句进行补全,非常不符合编辑习惯,所以要改成只有tab键才会进行补全,主要思路是:

    • 修改相关插件源码
    • 重新编译,导出修改后的插件
    • 覆盖原来的插件,重启Eclipse

    需要根据Eclipse的情况去达成目的,我的Eclipse版本是4.2.0,需要修改的插件版本是org.eclipse.jface.text_3.8.2.v20121126-164145。注意,在覆盖插件之前,请先备份在plugins目录下的原来的插件

    1. Eclipse自带插件源码

    这种情况只适用于Eclipse Classic版本,因为这种版本才有插件源码。

    首先,打开Eclipse,打开window->show view,选择Plug-ins,再找到org.eclipse.jface.text,右键单击,选择import as-> Source Project,导入完成后,在你的workspace就可以看到这个project了。

    在导入工程下的“org.eclipse.jface.text.contentassist.CompletionProposalPopup#verifyKey()”函数中有一段代码:

    // key != 0
            switch (key) {
                case 0x1B: // Esc
                    e.doit= false;
                    hide();
                    break;
    
                case '
    ': // Ctrl-Enter on w2k
                case '
    ': // Enter
                    e.doit= false;
                    insertSelectedProposalWithMask(e.stateMask);
                    break;
    
                case '	':
                    e.doit= false;
                    fProposalShell.setFocus();
                    return false;
    
                default:
                    ICompletionProposal p= getSelectedProposal();
                    if (p instanceof ICompletionProposalExtension) {
                        ICompletionProposalExtension t= (ICompletionProposalExtension) p;
                        char[] triggers= t.getTriggerCharacters();
                        if (contains(triggers, key)) {
                            e.doit= false;
                            hide();
                            insertProposal(p, key, e.stateMask, fContentAssistSubjectControlAdapter.getSelectedRange().x);
                        }
                }
            }

    把这段代码修改为:

    // key != 0
            switch (key) {
                case 0x1B: // Esc
                    e.doit= false;
                    hide();
                    break;
    
                case '
    ': // Ctrl-Enter on w2k
                case '
    ': // Enter
                    e.doit= false;
                    insertSelectedProposalWithMask(e.stateMask);
                    break;
    
                case '	':
                    e.doit= false;
                    insertSelectedProposalWithMask(e.stateMask);
                    break;
    
                default:
                    ICompletionProposal p= getSelectedProposal();
                    if (p instanceof ICompletionProposalExtension) {
                        ICompletionProposalExtension t= (ICompletionProposalExtension) p;
                        char[] triggers= t.getTriggerCharacters();
                        if (
    key!='='&&key!=0x20&&key!='.'&&key!=';'&&
    contains(triggers, key)) {
                            e.doit= false;
                            hide();
                            insertProposal(p, key, e.stateMask, fContentAssistSubjectControlAdapter.getSelectedRange().x);
                        }
                }
            }

    最后就是导出修改后的插件,右键点击你的workspace里的工程,选择Export->Deployable plugins and fragments,点击Next,选择Destination选项卡,选择Directory,选择一个要保存插件的目录,然后Finish,这样会得到一个zip包,打开,plugins里会有一个jar包,替换Eclipse的目录下的plugins里的同名文件,重启Eclipse。

    2. 通过别的渠道找源码

    我用的版本没有提供插件源码,后面从github上面找了这个版本的源码,fork了一个分支到我的地址,并修改了上面提到的文件,地址是:https://github.com/harrymore/org.eclipse.jface.text

    下载并解压这个包,导入项目:File->Import->General->Existing Projects into Workspace,选择源码所在目录,完成。

    导出插件,覆盖Eclipse的插件,最后重启Eclipse。

    ps:后面发现我org.eclipse.jface.text_3.8.2.v20121126-164145.jar这个版本的插件,直接放在eclipse4.5.1版本里也能用,那个版本的插件具体版本是org.eclipse.jface.text_3.10.0.v20150603-1752.jar

    四、参考

    1. Eclipse自动补全增强

  • 相关阅读:
    leetcode 29-> Divide Two Integers without using multiplication, division and mod operator
    ros topic 发布一次可能会接收不到数据
    python中的print()、str()和repr()的区别
    python 部分函数
    uiautomatorviewer错误 unable toconnect to adb
    pyqt 不规则形状窗口显示
    appium 计算器demo
    Spring 3.0 注解注入详解
    Spring Autowire自动装配
    restful 学习地址
  • 原文地址:https://www.cnblogs.com/harrymore/p/9152851.html
Copyright © 2011-2022 走看看