Plugins 突出显示IntelliJ插件中特定位置的文本

Plugins 突出显示IntelliJ插件中特定位置的文本,plugins,intellij-idea,intellij-plugin,Plugins,Intellij Idea,Intellij Plugin,我正在开发一个IntelliJ插件,并试图以编程方式突出显示特定行和列中的文本,但面临以下问题:IntelliJ中的实际列根据其配置中的选项卡大小而变化。因此,特定位置的列索引可以更改,而无需在编辑的文本中执行任何更改。 例如,在Eclipse中,tab始终被计为一个字符 您能给我举个例子,说明如何突出显示与配置的选项卡大小无关的特定代码位置吗 目前它是这样实现的: private static void showPsiFile(项目、PsiFile文件、整数行号、整数列、整数长度){ Open

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

您能给我举个例子,说明如何突出显示与配置的选项卡大小无关的特定代码位置吗

目前它是这样实现的:

private static void showPsiFile(项目、PsiFile文件、整数行号、整数列、整数长度){
OpenFileDescriptor desc=新的OpenFileDescriptor(项目,file.getVirtualFile(),行号-1,列);
描述导航(真);
编辑器编辑器=FileEditorManager.getInstance(项目).getSelectedTextEditor();
int-caretLocation=editor.getCaretModel().getOffset();
int startOffset=caretLocation;
int endOffset=开始时间设置+长度;
对于(RangeHighlighter:editor.getMarkupModel().getAllHighlighters()){
highlighter.dispose();
}
editor.getMarkupModel().addRangeHighlighter(startOffset、endOffset、HighlighterLayer.ERROR、codeHighlightTextAttributes、HighlighterTargetArea.EXACT_范围);
}

您能告诉我们如何计算/检索要突出显示的文本范围吗?示例中的startOffset和endOffset变量是文档文本中的偏移量。它们在任何方面都不依赖于标签的大小。@yole这正是我试图解决的问题。addRangeHighlighter方法计算行开头的空格,并根据IntelliJ配置将制表符转换为相等数量的空格。由于startOffset和endOffset不依赖于制表符的大小,因此会突出显示错误的代码位置。不,它不会这样做。正如我所说,它使用的偏移量指向文档文本,而选项卡不会展开。代码中的“列”值来自哪里?