1

以下に記述されたコードによって、日食の垂直定規にマーカーを追加しています。問題は、同じエディターの行に複数のマーカーがある場合、それらのメッセージが、エディターの垂直ルーラー上のホバー ポップアップに 1 行 (連結) で表示されることです。このようなメッセージのフォーマットは、エンド ユーザーが 1 つのメッセージがいつ終了し、別のメッセージが開始するかを理解できないため、ユーザー フレンドリーではありません。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$
    }
4

1 に答える 1

1

で設定されているようJavaEditor.createAnnotationRulerColumnです。これにより、 が作成され、のインスタンスを指定してAnnotationRulerColumn呼び出されます。AnnotationRulerColumn.setHoverJavaExpandHover

JavaExpandHover多くのJDT内部クラスを使用してホバーデータを構築しますが、これらはすべて標準インターフェースを実装しているため、複製される可能性があります(ただし、コードが長すぎてここではできません!)

于 2013-11-05T09:42:17.323 に答える