【问题标题】:How can I Access Different Java Partitions in my IDocument如何访问 IDocument 中的不同 Java 分区
【发布时间】:2016-12-21 00:37:51
【问题描述】:
我目前正在开发一个插件,我需要一个仅在光标位于 javadoc 注释分区内时执行的函数。
我尝试执行IDocument.computePartitioning() 和IDocument.getContentType()。到目前为止,唯一返回的分区类型是默认内容类型。可以看到,虽然IDocument实例是正确的,但是getDocumentPartitioner()方法返回null。
我的问题是,我的IDocument 显然包含 IJavaPartitions,因为它是一个 .java 文件。如何访问此分区程序以确定我的光标所在的分区?
【问题讨论】:
标签:
java
eclipse
eclipse-plugin
editor
partitioning
【解决方案1】:
您可以使用org.eclipse.jface.text.TextUtilities 的computePartitioning 方法来获取范围的区域:
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获取分区名称。
【解决方案2】:
您需要查看并使用IDocumentExtension3 上的方法。可以通过不同的分区器以多种不同的方式对文档进行分区。其中的每一个都被认为是一个分区,其中computePartitioning 是为了二进制兼容性而存在的错误名称选择的情况。对于 Java 文档,它们专门使用自己的分区值。我认为它在 IJavaPartitions.JAVA_PARTITIONING 中是一个常量。