English 中文(简体)
如何在 Eclipse 编辑器插件中显示语法错误
原标题:
  • 时间:2008-12-25 12:06:51
  •  标签:

我如何在Eclipse编辑器插件中指示语法错误(例如非法的令牌序列),就像在Eclipse Java编辑器中一样,即通过红色波浪线、滚动条上的红色标记(可跳转)和当您将鼠标悬停在其中一个时出现的说明性消息?

我正在编写一款用于定制文件格式的 Eclipse 编辑器插件(具体来说,是用于 Shark3D 游戏引擎中的“蛇文件格式”)。我已经实现了一个扫描仪以实现语法高亮和大纲。

  • For the underlines, do I simply have the scanner return an IToken with a "wriggly underline" TextAttribute instead of the normal one, or is there a specific mechanism for marking syntax errors?
  • How do I implement the scrollbar markers? Is IAnnotationModel the relevant interface here? If so, where do I register the implementation so that the markers appear?
  • I ve only found SourceViewerConfiguration.getAnnotationHover(), which would allow me to implement the hover behaviour, but only for the "annotation", which I suppose means the scrollbar markers - how do I implement the hover behaviour for the text itself?

我会很高兴得到具体建议,以及涵盖这个主题的教程URL - Eclipse帮助文档和示例似乎没有涉及到。

Edit: Markers are the best solutions to this. A working example of how to use them can be found in the plugin example code in org.eclipse.ui.examples.readmetool.AddReadmeMarkerAction

最佳回答

你应该使用标记笔。

以下是源自《Java开发人员的Eclipse指南》的示例:

<extension point="org.eclipse.core.resources.markers"  
            id="snakesyntax"  
            name="Snake syntax error">  
    <super type="org.eclipse.core.resources.problemmarker" />  
    <super type="org.eclipse.core.resources.textmarker" />  
    <persistent value="true" />
<extension>

IMarker marker = res.createMarker("com.ibm.tool.resources.snakesyntax");

marker.setAttribute(IMarker.SEVERITY, 0);
marker.setAttribute(IMarker.CHAR_START, startOfSyntaxError);
marker.setAttribute(IMarker.CHAR_END, endOfSyntaxError);
marker.setAttribute(IMarker.LOCATION, "Snake file");
marker.setAttribute(IMarker.MESSAGE, "Syntax error");
问题回答

正确的方式是使用标记接口。

标记是基本上将标记对象映射到源代码中的位置的模型,因此在可能有多个文件中出现错误的情况下,这是有意义的。 (请参见IMarker接口)

如果您想在当前编辑器中添加标记但不想对整个项目进行标记,则更便宜的选项是使用注释,您可以自己添加和删除。

标记在用户界面中以注释形式表示,但Eclipse自行添加和删除注释。通过直接注释,您可以控制。





相关问题
热门标签