user8184393
user8184393

Reputation:

vscode Nest snippet choices and add tab stops to choices

I want to do something like that in my snippets for visual studio code:

"V.G.${1|BLOCK_NR,MASS_MM,MASS_360,I,J,K,R,FEEDRATE,FEEDRATE_SCALE,MERR[${2}]|}" So after choose the option MERR[] I will see the cursor inside the brackets.

and how i have to manage sub choices like:

"V.G.${1|choice${2|subchoiceA,subchoiceB|},choice, choice......}"

If I choose MERR[] Option I will jump into [Cursor should be here]. How can i handle this?

Upvotes: 5

Views: 2696

Answers (1)

Mark
Mark

Reputation: 181349

Here is a workaround to your subchoiceA/B question because you cannot have anything except plain text as choices - no tabstops or subchoices, etc. Your example:

V.G.${1|choice${2|subchoiceA,subchoiceB|},choice, choice......}"

This can be achieved however with 2 snippets:

"choices with subchoices": {
  "prefix": "_choices",   // whatever prefix you want    
  "body": [
    "V.G.${1|choice1, _subchoices,choice2,choice3|}"
  ],    
  "description": "variables in a choice element"
},

"my subchoice list": {
  "prefix": "_subchoices",       // this prefix must be what you used in the main snippet
                                // as your subchoice option
  "body": [ "${1|subchoiceA,subchoiceB|}" ],
  "description": "subChoices"
},

What happens is that when you choose the subchoices option in the main snippet it will see it as the prefix for the second snippet - that is pretty neat. But it will not do so until you trigger that recognition with Ctrl+Space the usual intellisense trigger and then tab to select the second snippet.

It is only one or two extra keystrokes to get subchoices working inside of a parent choice element when otherwise it can't be done at all.

The only issue is that your second prefix - here subchoices cannot be a continuation of another string with no spaces otherwise it won't be recognized as a standalone snippet prefix by vscode. That is why I added the space before subchoices in the main snippet since your example has "V.G.${1....} with no space before the option would be inserted.

Here is a demo:

snippet with subchoices

Upvotes: 6

Related Questions