VSCode - 自定义片段以根据选定的 C++ 声明创建多行不同的行

VSCode - custom snippet to create multiple different lines from selected C++ declaration

我有一条线:

int INTVAR;

我想突出显示这一行,运行 一个片段,它自动创建以下一组三行来代替上面的一行。

int INTVAR;
int intvar() {return INTVAR;}
void intvar(int val){INTVAR = val;}

也就是说,应该自动生成一个getter/setter变量的函数。变量名将始终为全大写字母。 getter/setter 名称应该相同,只是它们总是小写。

int 也可以是 doublechar

预计到达时间:

到目前为止我所拥有的tried/know:不是突出显示该行,下面的内容看起来更直接,我只需键入一次声明并自动添加 getters/setters。

"int var set get":{
    "prefix": "intsetget",
    "body":[
        "int ${1:VARNM};",
        "int ${1:/downcase}(){return ;}",
        "void ${1:/downcase}(int val){ = val;}"
    ]
}

几乎 完成了工作,除了 setter 和 getter 名称的小写不起作用。

以下代码段也将处理不同的类型:

  "var set get":{
    "prefix": "varsetget",
    "body":[
        "${1:int} ${2:VARNM};",
        " ${2/(.*)/${1:/downcase}/}(){return ;}",
        "void ${2/(.*)/${1:/downcase}/}( val){ = val;}"
    ]
  }

我认为这可以用选定的文本来完成,但您必须使用键绑定插入代码段,否则没有选定的文本可供代码段使用。但复制 var 名称并使用完整代码段可能更容易。

编辑

最好使用不同的变量名约定(全部大写通常表示常量)。

要支持 fMyVarf_myVarmMyVarm_myVar 成员名称,您可以使用

  "var set get f m_":{
    "prefix": "varsetgetfm",
    "body":[
        "${1:int} ${2:VARNM};",
        " ${2/^(?:f|m)_?([A-Za-z])(.*)|([A-Z].*)$/${1:/downcase}${3:/downcase}/}(){return ;}",
        "void ${2/^(?:f|m)_?([A-Za-z])(.*)|([A-Z].*)$/${1:/downcase}${3:/downcase}/}( val){ = val;}"
    ]
  }