0

我为一种新语言创建了一个插件,并使用 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) {
    }
}

提前致谢。

4

1 回答 1

1

如果我理解正确,问题是关于更改依赖项后重新验证文件。1. 与 indexer 无关(仅记录文件包含某些元素) 2. 与 parser(产生 AST)无关。

它应该发生在构建器中。您可以通过实现 IBuildParticipant 或 IScriptBuilder 来尝试支持 DLTK。

于 2015-04-30T07:32:56.900 回答