yay -S git
yay -S maven
git clone https://github.com/eclipse-cdt/cdt.git
git checkout CDT_9_7_0
cd cdt
mvn 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环境中