Rovo LSP for VSCode
February 18, 2026 ยท View on GitHub
This guide covers using Rovo with Visual Studio Code.
Installation
Prerequisites
- Rust toolchain (cargo) must be installed: https://rustup.rs/
- VSCode version 1.95.0 or later
Installing the Extension
Option 1: From Marketplace (Recommended)
VS Code Marketplace: https://marketplace.visualstudio.com/items?itemName=arthurdw.rovo-lsp
Quick install in VS Code - press Ctrl+P (or Cmd+P on macOS) and run:
ext install arthurdw.rovo-lsp
Open VSX (for VSCodium/code-oss users): https://open-vsx.org/extension/arthurdw/rovo-lsp
Quick install in VSCodium - press Ctrl+P (or Cmd+P on macOS) and run:
ext install arthurdw.rovo-lsp
Cursor: The extension may not appear in Cursor's built-in extension search. To install, open this link in your browser:
cursor:extension/arthurdw.rovo-lsp
Or install via the Extensions panel:
- Open your editor (VS Code, VSCodium, Cursor, or code-oss)
- Go to Extensions (Ctrl+Shift+X / Cmd+Shift+X)
- Search for "Rovo"
- Click Install
- Reload your editor if prompted
The extension will automatically install the rovo-lsp server on first use (requires Cargo).
Option 2: Manual LSP Installation
If you prefer to install the language server manually:
cargo install rovo-lsp
Then the extension will automatically detect it.
Features
The Rovo LSP extension provides intelligent support for Rovo framework annotations:
๐จ Syntax Highlighting
Custom syntax highlighting for Rovo documentation (context-aware, only near #[rovo] attributes):
- Section headers (
# Responses,# Examples,# Metadata) - highlighted as headings - Metadata annotations (
@tag,@security,@id,@hidden) - highlighted as keywords - HTTP status codes (200, 404, 500, etc.) - highlighted as numbers
- Security schemes (bearer, basic, apiKey, oauth2) - highlighted as strings
- Tag values - highlighted distinctively
The highlighting is smart and only activates in doc comments above #[rovo] functions, ensuring no conflicts with rust-analyzer.
๐ฏ Smart Completions
Type /// # to get completions for section headers:
# Responses- HTTP response definitions section# Examples- Response examples section# Metadata- API metadata section
Within the # Metadata section, type @ for annotation completions:
@tag- Endpoint categorization@security- Security requirements@id- Custom operation IDs@hidden- Hide from documentation@rovo-ignore- Stop processing annotations
HTTP status codes and security schemes are also auto-completed with descriptions.
๐ Hover Documentation
Hover over section headers, annotations, status codes, or security schemes to see:
- Section usage and format
- Annotation usage and syntax
- HTTP status code meanings
- Security scheme explanations
- Type definitions
โก Code Actions
Quick fixes to:
- Add missing
#[rovo]macro to functions - Add
JsonSchemaderive to response types - Insert common annotation patterns
๐ Navigation
- Go to Definition: Navigate from types in responses to their definitions
- Find References: Find all usages of specific tags
- Rename: Rename tags and update all references (F2 or right-click โ Rename Symbol)
โ Real-time Diagnostics
Get instant feedback on:
- Invalid HTTP status codes
- Malformed response/example syntax
- Invalid metadata annotations
- Section format errors
Usage Example
use rovo::{rovo, Router, routing::get};
use rovo::{extract::State, response::Json};
use rovo::aide::axum::IntoApiResponse;
/// Get user by ID.
///
/// # Responses
///
/// 200: Json<User> - Successfully retrieved user
/// 404: Json<Error> - User not found
///
/// # Examples
///
/// 200: User { id: 1, name: "Alice".into() }
/// 404: Error { message: "User not found".into() }
///
/// # Metadata
///
/// @tag users
/// @security bearer
#[rovo]
async fn get_user(
State(state): State<AppState>,
Path(id): Path<i64>
) -> impl IntoApiResponse {
// Implementation
}
Configuration
Configure the extension in VSCode settings (File โ Preferences โ Settings โ search "rovo"):
rovo.serverPath
Path to the rovo-lsp executable. Default: "rovo-lsp" (uses PATH)
{
"rovo.serverPath": "/custom/path/to/rovo-lsp"
}
rovo.autoInstall
Automatically install rovo-lsp via cargo if not found. Default: true
{
"rovo.autoInstall": false
}
rovo.trace.server
Trace communication between VSCode and the language server. Default: "off"
Options: "off", "messages", "verbose"
{
"rovo.trace.server": "verbose"
}
Useful for debugging LSP issues.
Troubleshooting
Language Server Not Starting
- Check the Output panel (View โ Output โ Rovo LSP) for error messages
- Verify
rovo-lspis installed:cargo install rovo-lsp - Check your
rovo.serverPathsetting - Try reloading VSCode: Developer: Reload Window (Ctrl+Shift+P / Cmd+Shift+P)
Auto-Installation Failing
- Ensure Cargo is installed:
cargo --version - Install manually:
cargo install rovo-lsp - Check the Output panel for detailed error messages
- Verify you have internet connectivity
Features Not Working
Make sure:
- You're in a Rust file (
.rsextension) - There's a
Cargo.tomlin your project root - You're working within
#[rovo]annotated functions - Documentation is in doc comments (
///) above#[rovo] - Metadata annotations are within the
# Metadatasection
Syntax Highlighting Not Visible
If annotations aren't being highlighted:
-
Verify annotations are near
#[rovo]: The extension only highlights doc comments that appear directly above#[rovo]attributes -
Check the Output panel:
- Open Output panel (View โ Output)
- Select "Rovo LSP" from the dropdown
- Look for diagnostic messages
-
Reload VSCode: Try Developer: Reload Window
Note: The extension uses text decorations that work seamlessly alongside rust-analyzer - no configuration needed!
Extension Compatibility
This extension works seamlessly alongside rust-analyzer with zero configuration required. It uses text decorations for syntax highlighting, which overlay on top of rust-analyzer's highlighting without conflicts.
Both extensions can run simultaneously without any issues.
Performance
The Rovo LSP is lightweight and context-aware:
- Only activates near
#[rovo]attributes - Minimal memory footprint
- Fast response times
- No interference with other Rust tooling
Support
- Issues: https://github.com/Arthurdw/rovo/issues
- Documentation: https://github.com/Arthurdw/rovo
- Extension Source: https://github.com/Arthurdw/rovo/tree/main/vscode-rovo
License
MIT