Extensions
Radius uses VSCode extensions for language support. Extensions provide LSP server configurations and language definitions.
Install Extensions
From Open VSX Registry
bash
radius ext install <publisher>.<name>Example:
bash
radius ext install rust-lang.rust-analyzerThis downloads the extension from Open VSX and extracts it to ~/.radius/extensions/.
From Local Directory
bash
radius ext install ./path/to/extensionUseful for development or custom extensions.
List Extensions
bash
radius ext listOutput:
Installed extensions:
rust-lang.rust-analyzer v0.4.2900 [ra_syntax_tree, rust]
test.test-extension v1.0.0 [typescript]Each extension shows:
- Publisher and name
- Version
- Supported language IDs
Remove Extensions
bash
radius ext remove <publisher>.<name>Example:
bash
radius ext remove rust-lang.rust-analyzerHow Extensions Work
Language Detection
Extensions define file extension mappings in package.json:
json
{
"contributes": {
"languages": [{
"id": "rust",
"extensions": [".rs"]
}]
}
}When you run radius read-var file.rs, Radius:
- Finds
.rs→rustmapping from extensions - Looks up LSP server for
rustlanguage - Starts the LSP server if needed
- Sends requests to the server
LSP Server Detection
Radius uses static extraction to find LSP servers:
- Scans extension directories for server binaries (
server/,bin/) - Falls back to PATH using language ID → command mapping
- User config in
~/.radius/lsp-servers.json
Check detected servers:
bash
radius lsp listlanguage command source
--------------------------------------------------------------------------------
typescript typescript-language-server --stdio extension (test.test-extension)
rust rust-analyzer extension (rust-lang.rust-analyzer)
python pylsp user-config (~/.radius/lsp-servers.json)
go gopls fallbackSource Priority
- extension - Extracted from installed extension
- user-config - Defined in
~/.radius/lsp-servers.json - fallback - Built-in default mapping
Creating Extensions
For custom language support, create a minimal extension:
Directory Structure
my-extension/
├── package.json
└── (optional) server/
└── language-serverpackage.json
json
{
"name": "my-language-support",
"publisher": "my-org",
"version": "1.0.0",
"engines": {
"vscode": "^1.70.0"
},
"contributes": {
"languages": [{
"id": "mylang",
"extensions": [".mylang", ".ml"]
}]
}
}Install
bash
radius ext install ./my-extensionConfigure LSP
If the server isn't bundled, add to ~/.radius/lsp-servers.json:
json
{
"servers": {
"mylang": {
"command": "mylang-lsp",
"args": ["--stdio"]
}
}
}