Dynamic Snippet Generation


ProbeJS v4.6.0 allows users to add user-defined snippets at runtime.

#Adding snippets with choices

Snippets added in this way will work like @item and other similar registry snippets. Snippets added in this way will always be prefixed with @.
To add the snippet, listen to the ProbeJSEvents.generateDoc in server_scripts, like:
ProbeJSEvents.generateDoc(event => {
    event.addSnippet("metal", ["gold", "iron", "copper", "netherite"],  "A collection of metals")
})
The first argument will be the type and prefix of this snippet. This means it will pop up if @metal is typed in the example:
The third parameter is the description of this snippet. It is optional.
The event will be fired right before every time ProbeJS starts the dumping process. /probejs dump now also executes a /reload silently, so it is safe to dump directly after some code changes are made.

#Adding fully-customized snippets

Of course, just simply dumping a list of items won't satisfy many of the use cases. ProbeJS also provides a way to generate fully-customized snippets, as the example below:
ProbeJSEvents.generateDoc(event => {
    event.customSnippet(
        "itemstack",
        ["@itemstack"],
        [`"\${1}x \${2|${Item.list.map(stack => stack.id).join(",")}|}"`],
        "Snippets for creating ItemStack, first stop is number and the second is item."
    )
})
The first parameter is the type, the second is the prefixes that will trigger the snippet, the third is now a list of strings representing the snippet body, and the fourth is still the description.
By customizing the snippet yourself, you now get a way more powerful snippet:
For detailed specifications about user-defined snippets in VSCode, please refer to the official document.