2016-12-21 20 views
0

我目前正在開發一個插件,其中我需要一個函數來僅當我的遊標位於javadoc註釋分區內時執行。如何在我的IDocument中訪問不同的Java分區

我試圖執行IDocument.computePartitioning()以及IDocument.getContentType()。到目前爲止,返回的唯一分區類型是默認的內容類型。我可以看到,雖然IDocument實例是正確的,但getDocumentPartitioner()方法返回null。

我的問題是,我的IDocument明確包含IJavaPartitions,因爲它是一個.java文件。如何訪問此分區以確定我的光標位於哪個分區內?

回答

0

您需要查看並使用IDocumentExtension3上的方法。文檔可以通過不同的分區器以多種不同的方式進行分區。這些中的每一個都被認爲是分區,其中computePartitioning是爲了二進制兼容性而留下的不良名稱選項。在Java文檔中,它們專門使用它們自己的分區值。 I 認爲它在IJavaPartitions.JAVA_PARTITIONING中作爲常量保存。

0

您可以使用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

您也可以從TextViewer獲得分區名稱/ SourceViewer通過調用getDocumentPartitioning方法。

+0

這工作!非常感謝你,一直試圖弄清楚這個問題 – Bejal

相關問題