gpt4 book ai didi

eclipse - Eclipse 编辑器中的标记未显示消息

转载 作者:行者123 更新时间:2023-12-02 01:50:13 25 4
gpt4 key购买 nike

我正在为 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");

这成功地为我提供了正确行上的图像

enter image description here

如果我将鼠标悬停在它上面,我会得到一个“你可以点击这个东西”的光标。 但我无法让消息出现。

该消息肯定已放置,因为:

for (IMarker marker : markers){
System.out.println("Marker contents"+MarkerUtilities.getMessage(marker));
}

代码按预期生成“Marker contentshello”输出。我究竟做错了什么?

编辑:

该消息出现在问题 View 中:

enter image description here

最佳答案

Njol 的答案是正确的,对我有用(Eclipse Neon.1)。
但是还有两个额外的建议:

  • 我正在重用创建的字段,因此注释 hoover 并不总是新创建的(getter...不是 create 方法)
  • 默认注释 hoover 会显示所有注释。因此,当您只想显示标记(而不显示其他标记 - 例如来自 GIT 的 Diff 注释)时,您应该覆盖 isIncluded,如下例所示。

  • 例子:
        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;
    }
    }
    这里是注释胡佛类
        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;
    }
    }

    关于eclipse - Eclipse 编辑器中的标记未显示消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23264149/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com