我正在开发一个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);
}