VSCode 片段语法是否允许命令的可选参数

Does VSCode snippet syntax allow optional parameters to a command

我最近开始使用第 3 方语言扩展来支持机器人编程 (RoboDK)。该扩展非常好,但不包括许多我想使用的命令,并且没有正确(至少对我而言)处理命令的可选参数。我想要 'extend' 扩展以支持其他命令(并可能向开发人员提供此反馈)。

我专门用ABB的RAPID机器人语言。

示例:

MoveL robtarget, speeddata, zonedata, tooldata \WObj:=WObj0;

对于 MoveL,var1var4 是必需的,但 \WObj:=WObj0 是必需的选修的。字符串的 '\WObj0:=' 部分是常量(如果提供选项)并且 WObj0 将是预期类型的​​变量对于 MoveL(在本例中为工作对象)。

有没有办法将片段 json 编辑为 而不是 输入可选部分,除非我开始输入反斜杠其次是文字?我还想保留代码段中的可选部分作为参考,这样我就不必记住每个可选参数,因为某些命令有很多选项。

以下是 snippet.abb.json 文件的摘录:

"movel": {
    "prefix": "movel",
    "body": [
        "MoveL ${1:var_robtarget}, ${2:var_speeddata}, ${3:var_zonedata}, ${4:pers_tooldata} \WObj:=WObj0;"
    ],
    "description": "Linear motion"
},

这导致带有 var_robtarget、var_speeddata、var_zonedata 和 pers_tooldata 的代码全部突出显示,其余部分为纯文本:

MoveL var_robtarget, var_speeddata, var_zonedata, pers_tooldata \WObj:=WObj0;

Is there a way to edit the snippets json to not enter the optional part unless I start typing a backslash followed by text?

不,我不认为有任何方法可以在同一个片段中做到这一点。您可以使用反斜杠前缀制作另一个片段,但这很麻烦。

这是一个简单的方法来做你想做的事,但你必须删除任何你不想要的可选变量:

"body" [
   "MoveL ${1:var_robtarget}, ${2:var_speeddata}, ${3:var_zonedata}, ${4:pers_tooldata}${5: \WObj:=WObj0}${6: anotherVar};"
]

当您到达最后一个变量时,它们也会被选中。如果您不想要任何内容​​,只需点击 Delete.

在上面的演示中,我只是进行了 Tab 和删除。