我正在通过下面的代码在eclipse中向垂直标尺添加标记。 问题是,当同一编辑器行上有多个标记时,它们的消息将在一行(连接)中显示,位于编辑器垂直标尺上的悬停弹出窗口中。 这种消息格式不是用户友好的,因为最终用户无法理解一条消息何时结束而另一条消息何时开始。在Eclipse的Java编辑器中,在编辑器中同一行的多标记处,标记的消息被拆分为垂直标尺悬停弹出窗口中的不同行。
如果在我的编辑器行中从同一行代码发出标记时,如何在verticalRuler悬停弹出窗口内的不同行中放置不同的标记消息?
提前感谢您的帮助
try {
final IMarker marker = file.createMarker(MARKER_TYPE);
marker.setAttribute(IMarker.MESSAGE, issue.getMessage());
marker.setAttribute(IMarker.SEVERITY, issue.getSeverity().ordinal());
int lineNumber = issue.getLine();
if (lineNumber == -1) {
lineNumber = 1;
}
marker.setAttribute(IMarker.LINE_NUMBER, lineNumber);
marker.setAttribute(IMarker.LOCATION, MessageFormat.format(Messages.FILE_TYPE_PLACEHOLDER, Integer.toString(lineNumber)));
marker.setAttribute(IMarker.CHAR_START, issue.getOffset());
int charEnd = issue.getOffset() + issue.getLength();
final String sourceStr = mEditor.getDocumentProvider().getDocument(mEditor.getEditorInput()).get();
if (charEnd > sourceStr.length()) {
charEnd = -1;
}
marker.setAttribute(IMarker.CHAR_END, charEnd);
} catch (CoreException e) {
Activator.getEditorLog().logError("Could not add marker", e); //$NON-NLS-1$
}
答案 0 :(得分:1)
看起来这是在JavaEditor.createAnnotationRulerColumn
中设置的。这会创建AnnotationRulerColumn
,然后调用AnnotationRulerColumn.setHover
指定JavaExpandHover
的实例。
JavaExpandHover
使用了许多JDT内部类来构造悬停数据,但这些都实现了标准接口,因此可以复制(但代码太长了,但在这里!)