
vsnip-check
Syntax highlighting for .nip pickit files in vscode
Provides error checking on save and while typing
Provides tab completion of properties, stats, and ids
Only tested with dark theme, but should work with others
Configuration
You can extend parser validation and completion lists from settings:
{
"vsnip-check.additionalProperties": ["mycustomproperty"],
"vsnip-check.additionalStats": ["mycustomstat"],
"vsnip-check.additionalExtras": ["mycustomextra"]
}
These additions are merged with built-in values and apply to .nip files and NIP strings embedded in JavaScript/TypeScript. In a multi-root workspace, a folder's .vscode/settings.json can set its own lists; as with any VS Code setting, a folder's list replaces the user and workspace lists instead of adding to them.
Per-folder settings with .vsnip.json
To give one folder its own additions, put a .vsnip.json file in it. It applies to that folder and everything below it, and uses the same keys without the vsnip-check. prefix:
{
"additionalStats": ["mycustomstat"],
"additionalExtras": ["mycustomextra"]
}
Unlike settings, these lists add up: a file accepts everything in your settings plus every .vsnip.json from its own folder up to the workspace folder root (for a file outside any workspace folder, up to the filesystem root). Changes apply as soon as the file is saved; if another program edits it in a folder excluded from file watching (files.watcherExclude), open the file to apply the change. If a .vsnip.json has a problem, such as invalid JSON or a misspelled key, the Problems panel lists it once the file is opened or used for an open file.
To give a folder a fresh start, add "root": true to its .vsnip.json. Files in parent folders then stop applying to it and its subfolders; your settings still apply.
How to install
Extension from Visual Studio Marketplace (recommended)
Visit https://marketplace.visualstudio.com/items?itemName=theBGuy.vsnip-check
Or...
- Open Visual Studio Code and hit (Ctrl + Shift + X) or Open the Extensions tab
- Search for vsnip-check
- Hit install then enjoy
Manually
Download the latest .vsix file from releases
Click on the Extensions icon on the Activity Bar on the side of the editor
Click the ... icon in the Extensions view, then click on "Install from VSIX..."
Select the .vsix file you want to install and click the "Open" button
Or...
Move the entire folder to your extensions folder which should be here:
Windows: %USERPROFILE%\.vscode\extensions
macOS: $HOME/.vscode/extensions
Linux: $HOME/.vscode/extensions
Enjoy!
Development
Requires Node >= 22 and pnpm.
pnpm install
pnpm test # cleans dist, compiles, runs the unit tests (incl. the ReDoS canaries)
pnpm run build # package a .vsix (runs the tests via vscode:prepublish)
One rule to know before touching the JS/TS scanner: every regex it runs against document lines
lives in LINE_SCANNING_REGEXES in src/scanner.ts — the ReDoS canary tests iterate that
object (and a guard test rejects regex literals defined outside it), so new scan regexes are
guarded automatically and must be defined there. The .nip validator in src/diagnostics.ts
is not yet under the same guard — see issue #11 before adding regexes there.



https://github.com/theBGuy/vsnip-check/assets/60308670/0c246cfb-c4a6-4800-b571-d1b965033336