java - 我需要 IMarker 的 char_start 和 char_end

标签 java eclipse-plugin

我正在创建 IMarkers,我有行号,但需要 char_start 和 char_end。创建标记后,标记所连接的文件可能无法在编辑器中打开。如何在不打开文件的情况下获取 char_start 和 char_end 偏移量?现在标记突出显示整行,但我希望它忽略前导空白。

最佳答案

我自己解决了这个问题。我确信有一种更有效的方法可以做到这一点,但这对于我的目的来说暂时有效。

IPath path = Path.fromOSString(file);
IFile iFile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(path);

ITextFileBufferManager iTextFileBufferManager = FileBuffers.getTextFileBufferManager();
ITextFileBuffer iTextFileBuffer = null;
IDocument iDoc = null;
try    {
    iTextFileBufferManager.connect(iFile.getFullPath(), LocationKind.IFILE, new NullProgressMonitor());
    iTextFileBuffer = iTextFileBufferManager.getTextFileBuffer(iFile.getFullPath(), LocationKind.IFILE);
    iDoc = iTextFileBuffer.getDocument();

    iTextFileBufferManager.disconnect(iFile.getFullPath(), LocationKind.IFILE, new NullProgressMonitor());
} catch (Exception e) {
    e.printStackTrace();
}

int start = iDoc.getLineOffset(iline - 1);
int end = iDoc.getLineLength(iline - 1);

//this next section was done to remove the leading white spaces                  
while(iDoc.getChar(start) == ' ' || iDoc.getChar(start) == '\t'){                                   
    start++;
    end--;
}

 final int charStart = start;
 final int charEnd = start + end;

关于java - 我需要 IMarker 的 char_start 和 char_end,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12903224/

相关文章:

java - 在 Eclipse 本身中显示 Eclipse 启动控制台的输出

java - Eclipse 编辑器同步

java - Java 应用程序中导入的奇怪问题

java - 以编程方式添加 Java 代码模板

java - 什么是 firebase 以及如何在 Android 中使用它?

java - 为什么此代码打印 100 而不是 1?

java - 在 JavaFx 中重新启动应用程序

java - 流口水总是正确的规则只触发一次

java - copyInputStreamToFile 方法不存在

java - 是否有用于 Eclipse AST 解析器的 Java 字节码?