为Eclipse CDT添加自动代码提示功能

1.前言



在使用Eclipse CDT的过程中,如果要使用代码提示功能,有2种方法:

  1. 设置触发字符,输入这些字符后会自动触发代码提示
  2. 使用快捷键 ALT+/,手动触发该功能

方法1的设置方法如下图,可以设置 . -> :: 三种触发类型。

但是对于其他C/C++好用的IDE,这种方式显然有点弱,那么如何将它改造成全自动提示呢?

方法是修改CDT。。。

2.CDT开发环境搭建



本文的开发环境是Manjaro,需要安装git,maven

yay -S git
yay -S mavengit clone https://github.com/eclipse-cdt/cdt.gitgit checkout CDT_9_7_0cd cdtmvn package

然后经过几十分钟的构建,可以编译成功。

下载Eclipse Committers:https://www.eclipse.org/downloads/packages/release/2019-03/r/eclipse-ide-eclipse-committers

下载完成,打开菜单 Help -> Install New Software,然后如图安装新组件:

将CDT目录导入到Eclipse中,将所有包全部导入

找到org.eclipse.cdt.target这个包,打开其中的cdt.target,右上角点击Set As Active Target Platform

同样打开cdt-baseline.target并点击

然后等待好久,等联网下载完成

点击菜单Project -> Build All

右键选择org.eclipse.cdt.ui这个包,右键菜单Run As Eclipse Application

不出意外,新的Eclipse就会打开,原Eclipse的下方Console窗口打印新Eclipse的log输出

至此,CDT开发环境搭建完成

3.代码修改



接下来到了激动人心的时刻,修改代码使其达到我们想要的功能dsa

首先打开 cdt/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CContentAssistProcessor.java ,找到verifyAutoActivation方法,按照下面修改,添加2行:

这个方法的功能是判断当前位置的字符是否可以触发自动提示,default分之的加入是为了处理我们的场景,Character.isAlphabetic过滤到非a-z A-Z的字符

    @Override
    protected boolean verifyAutoActivation(ITextViewer viewer, int offset) {
        IDocument doc = viewer.getDocument();
        System.out.println("verifyAutoActivation");
        if (doc == null) {
            return false;
        }
        if (offset <= 0) {
            return false;
        }

        try {
            char activationChar = doc.getChar(--offset);
            switch (activationChar) {
            case ‘:‘:
                return offset > 0 && doc.getChar(--offset) == ‘:‘;
            case ‘>‘:
                return offset > 0 && doc.getChar(--offset) == ‘-‘;
            case ‘.‘:
                // Avoid completion of float literals
                CHeuristicScanner scanner = new CHeuristicScanner(doc);
                int token = scanner.previousToken(--offset, Math.max(0, offset - 200));
                // The scanner reports numbers as identifiers
                if (token == Symbols.TokenIDENT
                        && !Character.isJavaIdentifierStart(doc.getChar(scanner.getPosition() + 1))) {
                    // Not a valid identifier
                    return false;
                }
                return true;
            //add start
            default:
                return Character.isAlphabetic(activationChar);
            //add end
            }
        } catch (org.eclipse.jface.text.BadLocationException e) {
        }
        return false;
    }
}

找到setCompletionProposalAutoActivationCharacters方法,按照下面修改:

这里的修改是为了加上字母触发代码提示

    public void setCompletionProposalAutoActivationCharacters(char[] activationSet) {

        String myAddCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; //$NON-NLS-1$
        myAddCharacters += new String(activationSet);
        fCompletionAutoActivationCharacters = myAddCharacters.toCharArray();
        //fCompletionAutoActivationCharacters = activationSet;
    }

至此修改完毕,右键选择org.eclipse.cdt.ui这个包,右键菜单Run As Eclipse Application,试验一下,发现已经可以了

4.效果展示



5.插件打包



右键选择org.eclipse.cdt.ui这个包,右键菜单Deployable Plug-ins and fragments

选择导出目录,点击Finish

在导出目录的plugins子目录可以找到jar,

在eclipse/plugins中有一个org.eclipse.cdt.ui_6.4.100.*****.jar,记录该文件名并备份,然后把新的jar拷贝过来并改名,大功告成!

如果到了目标eclipse环境还是不能使用的情况,推测原因可能是版本不配套,此时可能需要导出org.eclipse.jface.text

首先是导入这个包 Window -> Show View -> Other ->Plug-ins,

在Plug-ins窗口选中org.eclipse.jface.text,右键Import As -> Source Project

然后和上面那个一样的方法,导出jar,拷贝到目标eclipse环境中

原文地址:https://www.cnblogs.com/matex/p/10803993.html

时间: 2024-10-18 13:40:20

为Eclipse CDT添加自动代码提示功能的相关文章

【随笔】eclipse cdt 添加自动补全功能

自动代码补全完全是一个改善生活质量的功能呀!cdt拥有自动代码补全功能,只是我们没有打开而已 1. 绑定快捷方式 1. windows -> preferences ->general->keys  在搜索框输入  template 然后在binding 中输入 alt+/ 2. 开启自动填充功能 windows -> preferences -> c/c++ -> editor -> templates 将最下面的 user code formatter 勾选上

修改Eclipse与MyEclipse的代码提示功能

本文的目的是修改Eclipse与MyEclipse的代码提示功能,使之能够更加快速的帮助程序员编写代码. 本文使用的Eclipse版本为4.2 JUNO,MyEclipse的版本为10.6. 1. 设置代码自动完成提示的触发键 依次点击Window-->Preferences-->Java-->Editor-->Content Assist: "Auto activation triggers for Java" 指定当按下什么键时,会弹出代码提示.按照自己习惯

eclipse如何开启/关闭代码提示功能

把下面红色框中的勾勾选上就是使用代码提示功能,不选就是关闭. 版权声明:本文为博主原创文章,未经博主允许不得转载.

eclipse或者myeclipse的代码提示功能

第一步:打开eclipse,在菜单栏选择window-->preferences 第二步:在左边tree菜单栏选择General-->keys 第三步:在右边的文本框中输入content,选择Content Assist 第四步:然后在Binding中按下Alt+/键,用来表示这个项目的快捷键,在When中选择Editing Text,表示在编辑文本的时候就能触发 第五步:在Conflicts中选择Content Assist-->点击按钮Apply 第六步:经过如上的步骤之后,按下Al

sqlServer自动代码提示功能

第一种方法: 首先确认 自己的sqlServer2008自身的提示功能有没有被屏蔽了! 打开sqlserver2008 -- 工具 -- 选项 -- 文本编辑器 -- 所有语言 --  勾选 语句结束下面的自动列出成员 效果如图: 第二种方法: 该功能是SQL2008在SQL2005之后的升级版,我们可以很方便的调用智能提示,和 VS一致:使用快捷键ctrl + J 即可. 截图如下: 原文地址:https://www.cnblogs.com/xyao1/p/9034518.html

MyEclipse设置代码提示功能

写代码的时候为什么能给我们提示?你知道提示分为手动提示和自动提示么?今天我们就以MyEclipse为例讲一下MyEclipse手动提示和自动提示如何设置. 在开始这篇博客之前,我们先来说一下代码的手动提示和自动提示.手动提示就是必须按某个快捷键出现提示内容:自动提示就是只要你敲代码就会自动出现提示内容.好了,有了这样一个前提,我们就开讲了. 手动提示: MyEclipse是自带手动代码提示功能的,其默认键是Alt+/,但是有时候由于MyEclipse快捷键设置冲突的问题,导致了快捷键无法使用.所

Eclipse 实现关键字自动补全功能

一般默认情况下,Eclipse ,MyEclipse 的代码提示功能是比Microsoft Visual Studio的差很多的,主要是Eclipse ,MyEclipse本身有很多选项是默认关闭的,要开发者自己去手动配置.如果开发者不清楚的话,就不知道Eclipse ,MyEclipse的代码提示功能一样能像Microsoft Visual Studio的代码提示功能一样强大. 先举个简单的例子说明问题所在,例如在Eclipse ,MyEclipse代码里面,打个foreach,switch等

Linux Eclipse代码提示功能设置(Java &amp; C/C++)

最近在Linux下开发,由于长期使用Visual Studio 2010,对代码提示功能情有独钟,现在在Linux下,使用Eclipse做开发,当然免不了怀念Visual Studio强悍的代码提示,于是在网上搜索了一些文章,整理出关于Eclipse代码提示功能设置的方法. Java: 增强Eclipse 的代码提示功能,具体怎么样来配置?下面开始说步骤: 1. 打开Eclipse,然后“window”→“Preferences” 2. 选择“java”,展开,“Editor”,选择“Conte

离线使用eclipse的代码提示功能

eclipse的代码提示默认是抓取oracle官方的在线java-docs,然后进行相应的处理实现的.可以自己下载与jdk版本对应的java-docs,然后对eclipse的配置进行修改,实现离线使用代码提示功能. 步骤: 1. 下载 Java SE Development Kit 8u45 Documentation和 JavaFX API Documentation 下载地址: http://www.oracle.com/technetwork/java/javase/documentati