Редактор индексации и обновления DLTK
Я создал плагин для нового языка и использовал DLTK для индексации и поиска.
Я использую Eclipse Luna (PDE 3.10.1) и DLTK (5.0)
У меня вопрос: как я могу вручную переиндексировать файл и обновить редактор при переключении между вкладками?
Потому что то, что происходит сейчас, - это если файл открывается заново, в это время он переиндексируется и обновляются маркеры ошибок, но при переключении он не обновляет маркеры ошибок, поскольку зависимые файлы изменяются на других вкладках.
Я попытался, как показано ниже: индексирование, но не обновление редактора.
Я добавил IPartListener2 и в методе partBroughtToTop() у меня есть следующий код для индексации и обновления.
IModelElement model = EditorUtility.getEditorInputModelElement(partRef.getPage().getActiveEditor(), true);
if (model instanceof ISourceModule) {
ProblemCollector prob = new ProblemCollector();
SourceParserUtil.clearCache();
// get cache entry
final ISourceModuleInfo cacheEntry = ModelManager.getModelManager().getSourceModuleInfoCache().get((ISourceModule)model);
ModuleDeclaration mod = (ModuleDeclaration)SourceParserUtil.parse((ISourceModule)model, prob);
SourceParserUtil.putModuleToCache(cacheEntry, mod, prob);
SourceParserUtil.enableCache();
IEditorPart editor = partRef.getPage().getActiveEditor();
IEditorInput input = editor.getEditorInput();
try {
((ScriptEditor)editor).getDocumentProvider().resetDocument(input);
}
catch (CoreException e) {
}
}
Заранее спасибо.
1 ответ
Если я правильно понимаю, проблема заключается в повторной проверке файлов после изменения зависимостей. 1. Он не связан с индексатором (он просто записывает, что файл содержит некоторые элементы) 2. Он не связан с синтаксическим анализатором (который производит AST).
Это должно случиться у застройщика. Для этого вы можете попробовать поддержку DLTK, реализовав IBuildParticipant или IScriptBuilder.