Eclipse编辑器中的标记不显示消息
我正在Eclipse中为特定领域的语言构建自定义文本编辑器插件。
我可以检测编辑器内容格式的错误,并希望使用eclipse的标记来向用户指出错误。
我在插件中有以下代码:
public static void createMarkerForResource(int linenumber, String message) throws CoreException {
IResource resource = getFile();
createMarkerForResource(resource, linenumber, message);
}
public static void createMarkerForResource(IResource resource, int linenumber, String message)
throws CoreException {
HashMap<String, Object> map = new HashMap<String, Object>();
MarkerUtilities.setLineNumber(map, linenumber);
MarkerUtilities.setMessage(map, message);
MarkerUtilities.createMarker(resource, map, IMarker.PROBLEM);
IMarker[] markers = resource.findMarkers(null, true, IResource.DEPTH_INFINITE);
for (IMarker marker : markers){
System.out.println("Marker contents"+MarkerUtilities.getMessage(marker));
}
}
我用这个命令运行这段代码:
createMarkerForResource(2, "hello");
这成功地给了我一个正确的线上的形象
如果我将鼠标悬停在它上面,我会得到一个'你可以点击这个东西'的光标。 但我无法得到消息。
这个信息已经确定,因为:
for (IMarker marker : markers){
System.out.println("Marker contents"+MarkerUtilities.getMessage(marker));
}
代码会按预期生成“标记contentshello”输出。 我究竟做错了什么?
编辑:
该消息出现在问题视图中:
Njol的答案是正确的,适用于我(Eclipse Neon.1)。
但另外两个建议:
例:
import org.eclipse.jface.text.source.SourceViewerConfiguration;
...
public class MySourceViewerConfiguration extends SourceViewerConfiguration {
...
private IAnnotationHover annotationHoover;
...
public MySourceViewerConfiguration(){
this.annotationHoover=new MyAnnotationHoover();
}
...
@Override
public IAnnotationHover getAnnotationHover(ISourceViewer sourceViewer) {
return annotationHoover;
}
}
这里注释hoover类
private class MyAnnotationHoover extends DefaultAnnotationHover{
@Override
protected boolean isIncluded(Annotation annotation) {
if (annotation instanceof MarkerAnnotation){
return true;
}
/* we do not support other annotations than markers*/
return false;
}
}
您需要使用适当的IAnnotationHover
,它可以在您的SourceViewerConfiguration
像这样定义:
@Override
public IAnnotationHover getAnnotationHover(ISourceViewer sourceViewer) {
return new DefaultAnnotationHover(false);
}
链接地址: http://www.djcxy.com/p/63365.html