0%

Eclipse 开启代码提示与关闭变量命名补全

[TOC]

增强代码提示功能

  1. 找到设置位置: Window -> Preferences -> Java -> Editor -> Content Assist.

  2. Auto Activation 下的 Auto activation triggers for Java (默认为 .) 改为 ._abcdefghijklmnopqrstuvwsyzABCDEFGHIJKLMNOPQRSTUVWSYZ. (若此时发现, 输入一个字符时依然没有弹出自动提示的框框, 则继续执行下一步)

  3. 转到: Window -> Preferences -> Java -> Editor -> Content Assist -> Advanced.

  4. 在上边那个大框中, 将 Java ProposalsJava Proposals (Task-Focused) 勾选上.

PS: 介绍一下 Java Proposals 这些选项的含义:

选项 含义
Java Type Proposals 类名, 关键字的提示
Java Non-Type Proposals 其实就是变量名的提示
Java Proposals Java Non-Type ProposalsJava Type Proposals 的并集
Java Proposals (Task-Focused) 不太清楚, 感觉和 Java Proposals 差不多

(当同时勾选Java Type Proposals Java Non-Type Proposals Java Proposals时, 重启 Eclipse 会发现 Java Non-Type ProposalsJava Type Proposals 被取消勾选, 验证了三者关系)

此时代码补全提示应该如下图正常显示:

解决自动变量命名问题

增强代码提示后有个 bug, 即给变量命名时亦会自动补全, 就很蠢. 如下图:

此时不论按 = 还是 ;, 变量都会自动补全, 被命名为 abcdBigInteger.

解决方案:

这个 bug 产生于 Eclipse 自带的 org.eclipse.jface.text 插件. 我们可以在 Window -> Show View -> Other... -> Plug-in Development -> Plug-ins 视图下找到这个插件.

网上有的教程的做法是, 在 Plug-ins 视图下右键该插件然后 Import As -> Source Project. 但该方法已经无法使用, 因为导入的工程现在没有源码只有 .jar 文件.

1. 获取工程

所以我们要去官网下载插件源码. 插件官网, 插件下载(eclipse.platform.text-I20190325-1800.zip).

在下载的压缩包中找到 org.eclipse.jface.text 工程文件夹, 解压到工作区并打开.

2. 修改代码

src 下找到 CompletionProposalPopup.java (如图)并打开.

Ctrl+F 搜索 if (contains(triggers, key)) {, 并将其修改:

1
2
3
4

if (contains(triggers, key)) {
修改为
if (key != '=' && key != ' ' && key != ';' && contains(triggers, key)) {

目的很明显, 当我们输入 = ; 时不再自动补全. 以此曲线救国达到命名变量时不补全的目的...

3. 导出插件

File -> Export -> Deployable plug-ins and fragments

桌面上产生了一个 plugins 文件夹. 打开该文件夹, 即是插件文件.

打开 Eclipse 安装目录下的 plugins 文件夹. 搜索 org.eclipse.jface.text, 把搜索得的老插件删了, 把刚导出的修改版插件放进去.

重启 Eclipse 即可.

法二(更方便)

打开window -> Preference ->Java -> Editor -> Content Assist.

勾选 Disable insertion triggers except 'Enter'.