如何访问我的 IDocument 中的不同 Java 分区

How can I Access Different Java Partitions in my IDocument

我目前正在开发一个插件,其中我需要一个仅当我的光标位于 javadoc 评论分区内时才执行的函数。

我已尝试执行 IDocument.computePartitioning() 以及 IDocument.getContentType()。到目前为止,唯一返回的分区类型是默认内容类型。我可以看到,虽然 IDocument 实例是正确的,但 getDocumentPartitioner() 方法 returns null.

我的问题是,我的 IDocument 显然包含 IJavaPartitions,因为它是一个 .java 文件。我如何才能访问此分区程序以确定我的光标所在的分区?

您需要查看并使用 IDocumentExtension3 上的方法。可以通过不同的分区程序以多种不同的方式对文档进行分区。这些中的每一个都被认为是 partitioningcomputePartitioning 是为了二进制兼容性而保留的错误名称选择的情况。在 Java 文档的情况下,它们专门使用自己的分区值。我 认为 它在 IJavaPartitions.JAVA_PARTITIONING 中保持不变。

您可以使用 org.eclipse.jface.text.TextUtilitiescomputePartitioning 方法获取范围的区域:

IDocument document = ... get document

String partitioning = IJavaPartitions.JAVA_PARTITIONING;

int start = ... start offset

int length = ... length of area

ITypedRegion[] regions = TextUtilities.computePartitioning(document, partitioning, start, length, false);

这将处理任何 IDocumentExtension3

您也可以通过调用getDocumentPartitioning方法从TextViewer / SourceViewer中获取分区名称。