spring-lsp
A Language Server Protocol (LSP) implementation for the spring-rs framework, providing intelligent IDE support for Rust applications built with spring-rs.
Features
🎯 TOML Configuration Support
- Smart completion for configuration sections and properties
- Real-time validation with detailed error messages
- Hover documentation with type information and examples
- Environment variable support (
${VAR:default}syntax) - Schema-based validation with automatic schema loading
🔧 Rust Macro Analysis
- Macro recognition for spring-rs macros (
#[derive(Service)],#[inject], route macros, job macros) - Macro expansion with readable generated code
- Parameter validation and error reporting
- Hover tooltips with macro documentation and usage examples
- Smart completion for macro parameters
🌐 Route Management
- Route detection for all HTTP method macros (
#[get],#[post], etc.) - Path parameter parsing and validation
- Conflict detection for duplicate routes
- Route navigation and search capabilities
- RESTful style validation
🔍 Advanced Features
- Dependency injection validation with circular dependency detection
- Component registration verification
- Performance monitoring and server status queries
- Configurable diagnostics with custom filtering
- Error recovery with graceful degradation
- Multi-document workspace support
Installation
Prerequisites
- Rust 1.70+
- A compatible editor with LSP support (VS Code, Neovim, Emacs, etc.)
From Source
The binary will be available at target/release/spring-lsp.
From crates.io
Pre-built Binaries
Download pre-built binaries from the releases page:
- Linux x86_64 (glibc and musl)
- macOS x86_64 and ARM64
- Windows x86_64
Editor Setup
VS Code
Install the spring-rs extension from the marketplace, or configure manually:
Neovim (with nvim-lspconfig)
require..
Emacs (with lsp-mode)
(add-to-list 'lsp-language-id-configuration '(toml-mode . "toml"))
(lsp-register-client
(make-lsp-client :new-connection (lsp-stdio-connection "/path/to/spring-lsp")
:major-modes '(toml-mode rust-mode)
:server-id 'spring-lsp))
Configuration
Create a .spring-lsp.toml file in your project root:
[]
= ["[", ".", "$", "{", "#", "("]
[]
= "https://spring-rs.github.io/config-schema.json"
[]
= ["deprecated-config"]
[]
= "info"
= false
Usage
TOML Configuration Files
spring-lsp automatically provides intelligent support for config/app.toml and related configuration files:
# Smart completion for configuration sections
[]
= "0.0.0.0" # Hover for documentation
= 8080 # Type validation
# Environment variable support
[]
= "${DATABASE_URL:postgresql://localhost/mydb}"
# Validation and error reporting
[]
= "redis://localhost:6379"
= 10 # Range validation
Rust Code Analysis
spring-lsp analyzes your Rust code for spring-rs specific patterns:
// Service macro with dependency injection
// Route macros with validation
async
// Job scheduling macros
async
Performance
spring-lsp is designed for high performance:
- Startup time: < 2 seconds
- Completion response: < 100ms
- Diagnostic updates: < 200ms
- Memory usage: < 50MB for typical projects
- Concurrent documents: 100+ supported
Supported Features
| Feature | TOML | Rust | Status |
|---|---|---|---|
| Syntax highlighting | ✅ | ✅ | Complete |
| Completion | ✅ | ✅ | Complete |
| Hover documentation | ✅ | ✅ | Complete |
| Diagnostics | ✅ | ✅ | Complete |
| Go to definition | ⚠️ | ⚠️ | Partial |
| Document symbols | ⚠️ | ⚠️ | Planned |
| Workspace symbols | ⚠️ | ⚠️ | Planned |
| Code actions | ❌ | ❌ | Planned |
| Formatting | ❌ | ❌ | Planned |
Architecture
spring-lsp follows a modular architecture:
┌─────────────────────────────────────────────────────────┐
│ LSP Protocol Layer │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ Server Core Layer │
│ (Message Dispatch, State Management) │
└─────────────────────────────────────────────────────────┘
↓
┌──────────────┬──────────────┬──────────────┬────────────┐
│ Config │ Macro │ Routing │ Diagnostic │
│ Analysis │ Analysis │ Analysis │ Engine │
└──────────────┴──────────────┴──────────────┴────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ Foundation Layer │
│ (Schema, Document, Index, Completion) │
└─────────────────────────────────────────────────────────┘
Contributing
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
Development Setup
# 安装 Git hooks(自动格式化)
# 运行测试
# 启动服务器
详细的开发指南请参考 DEVELOPMENT.md。
Running Tests
# Unit tests
# Integration tests
# Property-based tests
# Performance tests
Release Process
See RELEASE.md for detailed release instructions and tools.
Documentation
- User Guide - Complete usage documentation
- Configuration Reference - All configuration options
- API Documentation - Rust API docs
- Architecture Guide - Technical architecture
- Contributing Guide - Development guidelines
Changelog
See CHANGELOG.md for release history.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT License (LICENSE-MIT)
at your option.
Acknowledgments
- spring-rs - The amazing Rust application framework
- taplo - TOML parsing and analysis
- lsp-server - LSP protocol implementation
- rust-analyzer - Inspiration for LSP architecture
spring-lsp - Intelligent IDE support for spring-rs applications