如何在完成/更改类型属性时触发操作?

时间:2018-05-15 11:16:00

标签: xtext eclipse-emf

我的语法中有以下类型:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       443 ssl http2;
        server_name  localhost;

        ssl_certificate      ssl/localhost.crt;
        ssl_certificate_key  ssl/localhost.key;

        location = /test.html {
            root html;
            http2_push /stylepush.css;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

我想在属性获取(新)值时读取xml文件,因为我使用该xml文件的内容进行验证和内容完成。根据属性的值,将要读取的xml将不同。

如何触发从运行时环境的DSL实例中读取类型属性值的操作?

1 个答案:

答案 0 :(得分:1)

您可以尝试将EMF适配器添加到所有TestSuite实例,以便在将“类型”功能更改为特定值的通知时,将读取您所选择的XML文件并对其执行操作。

this blog post似乎可以解决这个问题:在链接阶段结束时,可以为TestSuite实例注册一个Adapter(这是EMF词汇表,基本上是一个Listener)。

然后在您的Adapter实现中,您可以过滤是否需要使用Notification等方法做出反应,例如getFeature()

由于您提到要对内容完成和验证执行此操作,因此您可能需要在Xtext的范围/验证阶段执行所有这些操作。如果你的IDE需要查找和解析你的XML文件,你可能会在按下ctrl + space以进行自动完成时遇到一些“滞后”,但我想这是......