有没有办法在语言服务器运行时指向当前文件(按位置),这样,您可以:
doSomething
将参数传递给镜头处理程序的方法是首先使用新命令扩展
Command
语言,如下所示:
data Command = myCommand(loc aParameter);
接下来镜头检测器将所有镜头收集为一个文件,并绑定所有参数。这是一个使用 / 收集表达式位置的示例:
rel[loc,Command] myLenses(start[Program] input) = {<e@\loc, myCommand(e@\loc, title="do something with this exp")> | /Exp e := input};
最后命令处理程序在触发时执行命令:
value myHandler(myCommand(loc e) {
// Do something with e
return ("result": true);
}
然后您将镜头和处理程序函数注册为贡献。
小型解析树或抽象减法树可以直接作为命令的参数,因此您不必重新解析,但是如果您打开了许多大型编辑器,最好传递位置并再次解析,以避免内存泄漏。