Xtext - 暂时允许不可解析的引用并使引用名称用户可读

时间:2015-02-03 12:39:04

标签: xtext emf

假设我有一种语言可以模拟stackoverflow的一部分。用户被保存在一个资源中,而另一个资源被保存。

用户:

user fred : fred@foobar.com
user notfred : notfred@foobar.com

问题:

question 123 by fred message "smart question"
question 124 by notfred message "not so smart question"

现在,用户“fred”想要删除他的帐户,但是这不起作用,因为在将两个资源加载到我的ResourceSet之后,我将有一个非空的Resource#getErrors()。

我可以通过从错误中过滤XtextLinkingDiagnostic来解决这个问题,但是其他阅读“智能问题”的用户仍然无法告诉他们有人被称为“fred”。信息仍然存在,我可以访问它,例如当我使用LazyLinkingResource#setDiagnosticMessageProvider(...)设置LinkingDiagnosticMessageProvider时;但是,我现在能做的最好的事情是,向其他用户显示“fred”被删除的验证错误,但是他们不会知道“fred”写了他们刚刚阅读的消息。知道这对他们有很大的帮助,因为每个人都知道“弗雷德”写了很多问题,对吗?

简而言之,我有一个应用程序,用户可以在其中加载声明和定义文件。在极少数情况下出现问题并且两个文件都不完全匹配,这意味着该定义具有未在声明中声明的条目。但是,我知道~95%的参赛作品仍然会匹配! 用户无法快速解决这个问题,但他们很高兴只编辑95%的定义他们仍然需要能够读取 5%的名字没有编辑它们的声明!

我目前没有使用Xtext的任何UI部分来编辑定义,而是使用表格形式的自定义UI。缺少声明的当前状态是除value列之外的所有内容都将为空。引用ID将在另一列中,并且知道此ID将对用户有很大帮助!有没有一种干净的方法来实现这一目标?

1 个答案:

答案 0 :(得分:2)

查看“节点模型”,例如org.eclipse.xtext.nodemodel.util.NodeModelUtils.findNodesForFeature(EObject, EStructuralFeature)允许您访问文件中写入的文本