从IntelliJ插件

时间:2015-10-22 06:39:22

标签: plugins intellij-idea intellij-plugin

我正在开发一个IntelliJ插件并尝试在特定的行和列上以编程方式突出显示文本,但面临以下问题:IntelliJ中的实际列会根据其配置中的选项卡大小而更改。因此,特定位置的列索引可以更改,而无需在编辑的文本中执行任何更改。 例如,在Eclipse中,tab总是被计为一个字符。

您能否指出一些如何突出显示特定代码位置的示例,而不依赖于配置的选项卡大小?

目前实施方式如下:

private static void showPsiFile(Project project, PsiFile file, int lineNumber, int column, int length) {
    OpenFileDescriptor desc = new OpenFileDescriptor(project, file.getVirtualFile(), lineNumber - 1, column);
    desc.navigate(true);

    Editor editor = FileEditorManager.getInstance(project).getSelectedTextEditor();
    int caretLocation = editor.getCaretModel().getOffset();
    int startOffset = caretLocation;
    int endOffset = startOffset + length;

    for (RangeHighlighter highlighter : editor.getMarkupModel().getAllHighlighters()) {
        highlighter.dispose();
    }

    editor.getMarkupModel().addRangeHighlighter(startOffset, endOffset, HighlighterLayer.ERROR, codeHighlightTextAttributes, HighlighterTargetArea.EXACT_RANGE);
}

0 个答案:

没有答案