我想在给定的行号上创建一条带有消息和彩色代码行(如EclEmma一样)的标记。我有一个ICompilationUnit
及其资源来创建标记,如下所示:
IMarker marker = resource.createMarker("org.epitest.mutationmarker");
marker.setAttribute(IMarker.MESSAGE, "statusDescription");
marker.setAttribute(IMarker.LINE_NUMBER, 5);
marker.setAttribute(IMarker.CHAR_START, 10);
marker.setAttribute(IMarker.CHAR_END, 20);
不幸的是,该行号被忽略,并且标记位于第一行。
什么地方出了错?我该如何解决?
最佳答案
CHAR_START
和CHAR_END
是距文档开头的偏移量,它们优先于LINE_NUMBER
使用。如果未指定char start和end属性,则位置显示代码仅使用行号。
如果有IDocument.getLineOffset(line)
,则可以使用IDocument
获取行偏移。
如果使用的是文本编辑器,则可以从中获取IDocument
,否则可以构造Document
类的实例。
注意:IDocument
中的行号基于0,IMarker
中的行号基于1。