根节点的默认标签文本是filename。如果我创建了名为test.mydsl
的文件名,则会将test
显示为标签。但我想更改为完整文件名test.mydsl
。
首先,我覆盖createRoot(IXtextDocument document)
以获取IXtextDocument
类型对象,但似乎文件名信息不存在。
第二次尝试只是在原始文本的末尾附加.mydsl
。奇怪的是,如果我在子类中重写_text(Model model)
def _xtext(Model model) { return super._xtext(model) }
将按预期提供原始标签test
。但是,如果我尝试用它附加一个字符串,它将失败
def _xtext(Model model) {
val filename = super._xtext(model)
// or cast it to a string
val filename = super._xtext(model) as String
return filename + ".mydsl"
filename
的值始终为null
。 _xtext()
的返回值是否不是String
?
答案 0 :(得分:0)
您可以使用readOnly操作来查询文档中的资源,并询问该资源的URI。这样的事情可以解决问题:
myXtextDocument.readOnly(new IUnitOfWork<String, XtextResource>() {
public String exec(XtextResource resource) {
return resource.getURI().lastSegment();
}
});
答案 1 :(得分:0)
尼斯!这是我的大纲提供程序类
中的xtend代码段override createRoot(IXtextDocument doc) {
filename = doc.readOnly([res|
return res.URI.lastSegment
]);
super.createRoot(doc)
}
并在filename
def _text(ROOT_NODE_TYPE)