This extension provides syntax highlighting, code snippets, and function support for OtterScript used in Inedo products (Otter, BuildMaster, ProGet).
Not affiliated with or endorsed by Inedo.
Otter, BuildMaster and ProGet are trademarks of Inedo.
Background
This extension started as a learning project while implementing custom webhook notification in ProGet.
Features
- Syntax highlighting for OtterScript constructs, including namespaced operations (
ProGet::,Otter::,Windows::) - Hover documentation, auto-completion, and signature help for built-in functions, operations, variables, and map/vector expressions
- Diagnostics for common mistakes (missing
$, unknown functions, invalid operators,=used inifconditions, duplicate map keys, unknownNamespace::prefixes) - Quick‑fix code actions, plus a Fix All Issues command (
Ctrl+Shift+Alt+F) that applies every available fix in the file - Go to Definition (F12) and Find All References (Shift+F12) for document-local module calls
- Outline and breadcrumbs via document symbols
- Go to Symbol in Workspace (
Ctrl+T) — jump to anymoduledeclaration across all OtterScript files - CodeLens reference counts above module declarations
- Code folding via
#region/#endregionand block structure - Code snippets for common patterns
Status
This extension is in active development and currently considered early-stage. Features may change as the extension evolves.
Testing scope: This extension is primarily developed and tested against ProGet usage. While OtterScript is shared across Otter, BuildMaster, and ProGet, not all constructs or product-specific behaviors have been tested equally.
Feedback, issues, and pull requests are welcome.
See CHANGELOG.md for release notes.
What this extension does NOT do
- It does not validate or execute OtterScript
- It does not connect to Otter, ProGet, or other Inedo services
- It does not auto-fix on save or format your code; fixes are only applied when you explicitly invoke a quick‑fix or the Fix All Issues command
- It does not attempt full semantic analysis
Installation
- Open VS Code
- Go to Extensions (Ctrl+Shift+X)
- Search for "OtterScript Language Extension"
- Click Install
Getting Started
Open any .otter or .oscript file in VS Code to activate the extension.
No additional configuration is required.
Settings
All features are enabled by default and can be toggled individually:
otterscript.completion.enable— auto-completion suggestionsotterscript.signatureHelp.enable— signature help for functions and operationsotterscript.hover.enable— hover information for functions and operationsotterscript.codeLens.enable— CodeLens reference counts above module declarationsotterscript.workspaceSymbols.enable— index module declarations for "Go to Symbol in Workspace" (Ctrl+T)
Language Support Coverage
The extension provides hover documentation, completion, and signature help for common OtterScript language constructs and built‑in functions, including:
- Core OtterScript functions
- Common string, JSON, and math helpers
- File system helpers
- Execution statements and directives
Coverage is continuously improving and may vary by context.
Some symbols are only relevant in ProGet‑specific contexts (such as webhooks).
Troubleshooting
If hover or completion does not appear, ensure the file extension is
.otter or .oscript and that the language mode is set to OtterScript.
Diagnostics
Diagnostics are best‑effort and designed to catch common mistakes
(e.g. missing $, unknown functions, invalid operators).
They do not attempt full semantic analysis and may prefer false negatives over false positives.
Contributing
Contributions are welcome. Please see CONTRIBUTING.md for guidelines.
Security
Please see SECURITY.md.
License
Code of Conduct
This project follows the Contributor Covenant Code of Conduct.