zoukankan      html  css  js  c++  java
  • ecilpse使用tab选择补全

    (转帖)本文转自:

    scue

    Jason Sun

     

      使用eclipse的自动补全,有时候要选的字不是第一个,需要在proposal中向下移动光标选择,但是eclipse只能按方向键完成,没有tab补全来的爽,找过似乎也没有这样的插件,只好找到一个修改一点源码的方法:

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

    2.在project中找到“org.eclipse.jface.text.contentassist.CompletionProposalPopup#verifyKey()”函数

    将整个verifyKey()函数修改为:

    /*
         * @see IContentAssistListener#verifyKey(VerifyEvent)
         */
        public boolean verifyKey(VerifyEvent e) {
            if (!Helper.okToUse(fProposalShell))
                return true;
    
            char key= e.character;
            if (key == 0 || key == '	') {
                int newSelection= fProposalTable.getSelectionIndex();
                int visibleRows= (fProposalTable.getSize().y / fProposalTable.getItemHeight()) - 1;
                int itemCount= fProposalTable.getItemCount();
                
                //Shift + Tab
                if ( (e.stateMask == SWT.SHIFT ) && (e.keyCode == SWT.TAB) ) {
                    newSelection -= 1;
                    if (newSelection < 0)
                        newSelection= itemCount - 1;
                    
                    selectProposal(newSelection, (e.stateMask & SWT.CTRL) != 0);
                    e.doit= false;
                    return false;
                }
                switch (e.keyCode) {
    
                    case SWT.ARROW_LEFT :
                    case SWT.ARROW_RIGHT :
                        filterProposals();
                        return true;
    
                    case SWT.ARROW_UP :
                        newSelection -= 1;
                        if (newSelection < 0)
                            newSelection= itemCount - 1;
                        break;
    
                    case SWT.ARROW_DOWN :
                        newSelection += 1;
                        if (newSelection > itemCount - 1)
                            newSelection= 0;
                        break;
    
                    case SWT.TAB :
                            newSelection += 1;
                            if (newSelection > itemCount - 1)
                                newSelection= 0;
                            break;
                        
                    case SWT.PAGE_DOWN :
                        newSelection += visibleRows;
                        if (newSelection >= itemCount)
                            newSelection= itemCount - 1;
                        break;
    
                    case SWT.PAGE_UP :
                        newSelection -= visibleRows;
                        if (newSelection < 0)
                            newSelection= 0;
                        break;
    
                    case SWT.HOME :
                        newSelection= 0;
                        break;
    
                    case SWT.END :
                        newSelection= itemCount - 1;
                        break;
    
                    default :
                        if (e.keyCode != SWT.CAPS_LOCK && e.keyCode != SWT.MOD1 && e.keyCode != SWT.MOD2 && e.keyCode != SWT.MOD3 && e.keyCode != SWT.MOD4)
                            hide();
                        return true;
                }
    
                selectProposal(newSelection, (e.stateMask & SWT.CTRL) != 0);
    
                e.doit= false;
                return false;
    
            }
    
            // key != 0
            switch (key) {
                case 0x1B: // Esc
                    e.doit= false;
                    hide();
                    break;
    
                case '
    ': // Ctrl-Enter on w2k
                case '
    ': // Enter
                case ' ': //Space
                    e.doit= false;
                    insertSelectedProposalWithMask(e.stateMask);
                    break;
    
    //            case '	':
    //                e.doit= false;
    //                insertSelectedProposalWithMask(e.stateMask);
    //                return false;
    
                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);
                        }
                }
            }
    
            return true;
        }

     

    3.这样会取消“=”,空格,“.”和“;”的自动补全,加入TAB的自动补全。 最后就是导出修改后的插件,右键点击你的workspace里的工程,选择Export->Deployable plugins and fragments,点击Next,选择Destination选项卡,选择Directory,选择一个要保存插件的目录,然后Finish,这样会得 到一个zip包,打开,plugins里会有一个jar包,替换Eclipse的目录下的plugins里的同名文件(最好先把原plugins目录下的 org.eclipse.jface.text_3.7.2.v20111213-1208.jar(因为Eclipse版本的不同这个文件的名字可能不 同)备份)。

  • 相关阅读:
    ByteBuffer使用实例
    Fiddler抓包显示请求时延
    手机wifi连上Fiddler后无网络问题解决
    git
    git
    Autofac使用
    Redis实战
    Redis实战
    Redis实战
    Redis实战
  • 原文地址:https://www.cnblogs.com/jolin123/p/3851797.html
Copyright © 2011-2022 走看看