2016-12-21 11 views
0

В настоящее время я разрабатываю плагин, в котором мне нужна функция, выполняемая только тогда, когда мой курсор находится в разделе комментариев javadoc.Как я могу получить доступ к разным разделам Java в своем IDocument

Я попытался выполнить IDocument.computePartitioning(), а также IDocument.getContentType(). Пока единственным типом типа, который возвращается, является тип содержимого по умолчанию. Я вижу, что, хотя экземпляр IDocument верен, метод getDocumentPartitioner() возвращает значение null.

Мой вопрос: мой IDocument явно содержит IJavaPartitions, так как это файл .java. Как я могу получить доступ к этому разделителю, чтобы определить, в каком разделе находится мой курсор?

ответ

0

Вам нужно посмотреть и использовать методы on, IDocumentExtension3. Документ может быть разделен различными способами разными разными файлами. Каждый из них считается разделом , причем computePartitioning является случаем неправильного выбора имени, предназначенного для бинарной совместимости. В случае с документами Java они используют исключительно значение разбиения на разделы. I думаю удерживается как константа в IJavaPartitions.JAVA_PARTITIONING.

0

Вы можете использовать computePartitioning метод org.eclipse.jface.text.TextUtilities, чтобы получить регион (ы) для диапазона:

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