【问题标题】:How do I get Xtext's model from a different plugin?如何从不同的插件中获取 Xtext 的模型?
【发布时间】:2013-05-05 06:24:42
【问题描述】:

我为某些语言编写了一个基于 Xtext 的插件。我现在有兴趣创建一个新的独立视图(作为一个单独的插件,尽管它需要我的第一个插件),它将与当前活动的 DSL 文档进行交互——特别是与解析的模型 Xtext 交互(我认为它被称为Ecore 模型?)。我该如何处理?

我发现如果在初始化视图时执行以下操作,我可以获得XtextEditor 的实例:

getSite().getPage().addPartListener(new MyListener());

然后,在MyListener 中,覆盖partActivatedpartInputChanged 以获得IWorkbenchPartReference,这是对XtextEditor 的引用。但是我从这里做什么?这甚至是解决这个问题的正确方法吗?我应该改用 Xtext 端的一些通知功能吗?

【问题讨论】:

    标签: eclipse-plugin xtext


    【解决方案1】:

    发现了!首先,您需要一份实际文件:

    IXtextDocument doc = editor.getDocument();
    

    那么,如果你想访问模型:

    doc.modify(new IUnitOfWork.Void<XtextResource>() { // Can also use just IUnitOfWork
        @Override public void process(XtextResource state) throws Exception {
            ...
        }
    });
    

    如果您想在变化时获得实时更新:

    doc.addModelListener(new IXtextModelListener() {
        @Override public void modelChanged(XtextResource resource) {
            for (EObject model : resource.getContent()) {
                ...
            }
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-10
      • 2023-03-22
      • 1970-01-01
      • 2011-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多