Eclipse IDE - 通过通用文本编辑器扩展点突出显示的Costum语言语法

问题描述 投票:3回答:2

我一直在尝试为Eclipse IDE编写一个插件,为自定义通用语言执行语法突出显示和代码完成。

在氧气项目版本(v4.7)中,更改注释使用通用文本编辑器并使用扩展点宣布扩展它所需的功能。甚至提供了代码片段:

使用这个新的编辑器,现在更容易丰富新的通用编辑器,因此您可以相对容易地为新语言添加支持。它重用现有的Eclipse编辑器基础结构,但是使用通用编辑器,您不需要实现编辑器来为新文件内容类型提供功能。相反,您可以通过扩展点使通用编辑器更智能。以下示例显示如何通过扩展向通用编辑器提供功能:

<extension point="org.eclipse.ui.genericeditor.contentAssistProcessors">
   <contentAssistProcessor
         class="org.eclipse.ui.genericeditor.examples.dotproject.NaturesAndProjectsContentAssistProcessor"
         contentType="org.eclipse.ui.genericeditor.examples.dotproject">
   </contentAssistProcessor>
</extension>
<extension point="org.eclipse.ui.genericeditor.hoverProviders">
   <hoverProvider
         class="org.eclipse.ui.genericeditor.examples.dotproject.NatureLabelHoverProvider"
         contentType="org.eclipse.ui.genericeditor.examples.dotproject"
         id="natureLabelHoverProvider">
   </hoverProvider>
</extension>
<extension point="org.eclipse.ui.genericeditor.presentationReconcilers">
   <presentationReconciler
         class="org.eclipse.ui.genericeditor.examples.dotproject.BlueTagsPresentationReconciler"
         contentType="org.eclipse.ui.genericeditor.examples.dotproject">
   </presentationReconciler>
</extension>

这些新的扩展点接收常规平台类(IPresentationReconcilier,ITextHover,ICompletionProposalComputer)作为参数,以向通用编辑器添加行为。不需要新的Java API。

以下是添加一些最小Gradle语法突出显示支持的简单示例:

public class GradlePR extends PresentationReconciler {

    private IToken quoteToken = new Token(new TextAttribute(new Color(Display.getCurrent(), new RGB(139, 69, 19))));
    private IToken numberToken = new Token(new TextAttribute(new Color(Display.getCurrent(), new RGB(0, 0, 255))));
    private IToken commentToken = new Token(new TextAttribute(new Color(Display.getCurrent(), new RGB(0, 100, 0))));

    public GradlePR() {
        RuleBasedScanner scanner = new RuleBasedScanner();

        IRule[] rules = new IRule[5];
        rules[0] = new SingleLineRule("'", "'", quoteToken);
        rules[1] = new SingleLineRule("\"","\"", quoteToken);
        rules[2] = new PatternRule("//", null, commentToken, (char)0, true);
        rules[3] = new NumberRule(numberToken);

        rules[4] = new GradleWordRule();

        scanner.setRules(rules);

        DefaultDamagerRepairer dr = new DefaultDamagerRepairer(scanner);
        this.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE);
        this.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE);
    }

}

(原始来源:https://www.eclipse.org/eclipse/news/4.7/M3/#generic-editor

我已经设法用已经实现的通用文本编辑器打开一个新的插件项目。自动生成的plugin.xml文件已经包含上面引用的第一个代码块(即如果我没有弄错的话,扩展点定义)。

我是Eclipse插件的新手,对Java也不是很坚定。所以我无法弄清楚从第二个代码块放置代码的位置,以便在编辑器中实际实现更改以及如何将它与扩展点连接。

任何方向的指针,或一些进一步阅读的链接(理想上非常基本)或白痴的水平教程非常感谢!谢谢。

java eclipse eclipse-plugin
2个回答
0
投票

这是一篇相关的博客文章,其中还包括幻灯片共享套牌:Generic editor & language servers


0
投票

Eclipse发行说明中的​​示例代码与此showcase插件中的GradlePresentationReconciler类似:https://github.com/vogellacompany/codeexamples-ide/tree/dbfa485ca9b6f0aed653b3a466c055e24b01bb90/com.vogella.ide.editor.gradle

我得到了基于展示的语法高亮部分工作。

© www.soinside.com 2019 - 2024. All rights reserved.