您的位置:首页 > 编程语言 > Java开发

DIY增强eclipse的代码自动补全功能

2013-08-12 22:36 429 查看
    用过eclipse的同学一定生有体会,只有在打.的时候才会出现一个list,可以自动补全。但是java,android自带包的类,方法什么的名字都好长......实在不想多打字......有没有偷懒的方法呢??

     当然是有的!别忘了eclipse是开源的,意味着可以定制!

     Google了一下,确实有不少教程,我又发现中国文章一大抄啊......很多Blog是一样的......而且过时了......比如,好多Blog说修该文件增强自动补全,原因在于eclipse只支持四个自定义自动补全字符,但是新版的不存在这个问题,新版的可以直接添加任意个字符,好了,说了这么多,直接上方法!

 直接定位Windows->Preferences->Java->Editor->Content Assist,在最后一栏的Auto activation triggers for java里添加abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,意思就是遇到这些字符的时候,eclipse都会自动补全代码。

     哈哈,敲起代码不是一般爽。

     别高兴太早,这样会带来一些问题,比如我敲这么一句代码时:String pub = "Hello!";直接敲出来肯定是String public = "Hello";(注意变量名字的变化),因为eclipse默认敲空格的时候把提示补全的list的第一个推荐上屏。是不是很郁闷......不过还是那句别忘了eclipse是开源的,意味着可以定制!一定要让机器服从人类,而不是适应机器,这也许可能就是玩Linux的人鄙视Windows的原因之一吧......跑题了...win粉勿喷......我们的目标是取消“=”,空格,“.”和“;”的自动补全,加入TAB的自动补全。

 

     解决方案如下:

 

     //网上说打开Eclipse,打开window->show view,选择Plug-ins,再找到org.eclipse.jface.text,右键单击,选择import as-> Source Project,导入完成后,在你的workspace就可以看到这个project了。在导入工程下的“org.eclipse.jface.text.contentassist.CompletionProposalPopup#verifyKey()”函数中有一段代码......

     可是我压根就没找到Plug-ins!!!其实那还是因为eclipse版本的问题,现在的新版本已经没有这个了,取而代之的是在Window->Show View->的Other...里的PDE(首字母缩写,全名忘了......弹出对话框上面的搜索里输入P找一下)里的Plug-ins,而且必须是eclipse SDk版本的导入后才有源码!如果你不想重装你现在的eclipse的话,就下载一个eclipse SDk然后修改完替换目前的(目录是eclipse根目录下的plugins目录下的org.eclipse.jface.text._XXX,XXX是版本号,记得备份)。

    修改方法:

    找到以下代码片段:

// key != 0

switch (key) {

case 0x1B: // Esc

e.doit= false;

hide();

break;

case '\n': // Ctrl-Enter on w2k

case '\r': // Enter

e.doit= false;

insertSelectedProposalWithMask(e.stateMask);

break;

case '\t':

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 '\n': // Ctrl-Enter on w2k

case '\r': // Enter

e.doit= false;

insertSelectedProposalWithMask(e.stateMask);

break;

case '\t':

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);

}

}

}

    注意其中:31,,47行

    如此之后,eclipse成为拍码神器~~翘起代码爽死了~~

    怎么更改代码某一句字体颜色?发表后总是变成html代码...像这样: 

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


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: