首页 > 代码库 > 五月蝇

五月蝇

打开叫plug-ins的那个View,找到org.eclipse.jface.text,右键import as -> Source Project。

org.eclipse.jface.text.contentassist包下的CompletionProposalPopup类,在verifyKey方法下有这么一段代码,

 1 // key != 0 2 switch (key) { 3     case 0x1B: // Esc 4         e.doit= false; 5         hide(); 6         break; 7  8     case ‘\n‘: // Ctrl-Enter on w2k 9     case ‘\r‘: // Enter10         e.doit= false;11         insertSelectedProposalWithMask(e.stateMask);12         break;13 14     case ‘\t‘:15         e.doit= false;16         fProposalShell.setFocus();17         return false;18 19     default:20         ICompletionProposal p= getSelectedProposal();21         if (p instanceof ICompletionProposalExtension) {22             ICompletionProposalExtension t= (ICompletionProposalExtension) p;23             char[] triggers= t.getTriggerCharacters();24             if (contains(triggers, key)) {25                 e.doit= false;26                 hide();27                 insertProposal(p, key, e.stateMask, fContentAssistSubjectControlAdapter.getSelectedRange().x);28             }29     }30 }

用以处理提示窗口弹出状态下用户的按键动作。

首先毫不留情地把第四个case也就是Tab键的处理注释掉。我按Tab键的时候就是想在编辑器里加上一个制表符,我已经不需要提示了,更不需要把焦点移到提示框里,反正就算焦点不在里面,按上下键也是可以选择的。

然后处理上边那段代码的第二十四行里的判断,避免按个空格按个等号按个分号提示就直接上屏了。

比如敲private String test时,Eclipse会自作主张的给你一个驼峰建议,问你是不是要输testString,这时候如果手快输入一个空格,变量名当场就变testString了,而我只是想输private String test = "blahblahblah";而已。

总之把不想按了之后自动上屏的键的ASCII值加到判断里,以后就不会出现这种问题了。

举个栗子:

if (key != ‘=‘ && key != 0x20 && key != 0x3B && key != 0x3A && key != 0x2E && contains(triggers, key)) {

 

最后在修改过的项目上右键导出为Deployable plug-ins and fragments,Destination选Archive file随便给个名字,把导出的压缩包里面的jar文件扔到Eclipse的plugins文件夹里覆盖就搞定了。

五月蝇