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 => {
        [`"\${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.