An unofficial Language Server Protocol (LSP) implementation for NimbyScript, the modding language for NIMBY Rails.
- Syntax Highlighting - TextMate grammar for VS Code, semantic tokens for all editors
- Diagnostics - Parse errors and semantic validation
- Completions - Context-aware completions with documentation
- Hover Information - Type information and documentation for symbols
- Signature Help - Function parameter hints while typing
- Go to Definition - Navigate to symbol definitions, type definitions, and implementations
- Find References - Find all references to a symbol
- Document Symbols - Outline view of structs, enums, functions
- Type Hierarchy - Navigate supertype/subtype relationships
- Inlay Hints - Show inferred types and parameter names inline
- Document Formatting - Format documents, selections, and on-type formatting
- Symbol Rename - Rename symbols with F2
- Code Folding - Collapse structs, enums, functions, and blocks
- Smart Selection - Expand selection progressively
- Linked Editing - Rename struct and its method prefixes together
- Workspace Symbols - Search symbols across all files
| Editor | LSP | Syntax Highlighting | Installation |
|---|---|---|---|
| VS Code | ✅ | ✅ | Marketplace |
| Neovim | ✅ | ✅ | See editors/neovim |
| Other LSP clients | ✅ | ❌ | Point to nimbyscript-lsp binary |
| Capability | Status |
|---|---|
textDocument/completion |
✅ |
completionItem/resolve |
✅ |
textDocument/hover |
✅ |
textDocument/signatureHelp |
✅ |
textDocument/publishDiagnostics |
✅ |
textDocument/documentSymbol |
✅ |
textDocument/semanticTokens/full |
✅ |
textDocument/declaration |
✅ |
textDocument/definition |
✅ |
textDocument/typeDefinition |
✅ |
textDocument/implementation |
✅ |
textDocument/references |
✅ |
textDocument/documentHighlight |
❌ |
textDocument/codeAction |
❌ |
textDocument/codeLens |
❌ |
textDocument/documentLink |
❌ |
textDocument/colorPresentation |
❌ |
textDocument/formatting |
✅ |
textDocument/rangeFormatting |
✅ |
textDocument/onTypeFormatting |
✅ |
textDocument/rename |
✅ |
textDocument/prepareRename |
✅ |
textDocument/foldingRange |
✅ |
textDocument/selectionRange |
✅ |
textDocument/linkedEditingRange |
✅ |
callHierarchy/incomingCalls |
❌ |
callHierarchy/outgoingCalls |
❌ |
textDocument/prepareTypeHierarchy |
✅ |
typeHierarchy/supertypes |
✅ |
typeHierarchy/subtypes |
✅ |
textDocument/inlayHint |
✅ |
workspace/symbol |
✅ |
Install from the Visual Studio Marketplace, or search for "NimbyScript" in VS Code's Extensions view.
See editors/neovim/README.md for detailed instructions. The LSP binary is automatically downloaded.
Download the latest nimbyscript-lsp binary for your platform from GitHub Releases:
| Platform | Binary |
|---|---|
| macOS (Apple Silicon) | nimbyscript-lsp-darwin-arm64 |
| macOS (Intel) | nimbyscript-lsp-darwin-x64 |
| Linux (x64) | nimbyscript-lsp-linux-x64 |
| Linux (ARM64) | nimbyscript-lsp-linux-arm64 |
| Windows (x64) | nimbyscript-lsp-win32-x64.exe |
| Windows (ARM64) | nimbyscript-lsp-win32-arm64.exe |
Configure your editor's LSP client to run the binary with no arguments. The server communicates over stdio.
git clone https://github.com/supermanifolds/nimby_lsp
cd nimby_lsp
cargo build --release
# Binary at target/release/nimbyscript-lspSee CONTRIBUTING.md for development setup and guidelines.
MIT OR Apache-2.0
