DLTK索引和刷新编辑器

时间:2015-04-13 14:57:54

标签: eclipse eclipse-plugin eclipse-rcp eclipse-pde 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 个答案:

答案 0 :(得分:1)

如果我理解正确,问题是在更改依赖项后重新验证文件。 1.它与索引器无关(它只记录文件包含一些元素) 2.它与解析器(产生AST)无关。

它应该发生在建造者身上。您可以通过实施IBuildParticipant或IScriptBuilder来尝试DLTK支持。