Редактор индексации и обновления 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.

Другие вопросы по тегам