ricecoder_ide/
lib.rs

1//! IDE Integration for RiceCoder
2//!
3//! This crate provides IDE integration for RiceCoder, enabling seamless integration with
4//! popular IDEs and editors (VS Code, vim, neovim, emacs). It implements an LSP-first
5//! provider chain that queries external LSP servers for semantic intelligence and falls
6//! back through configured rules, built-in providers, and generic features.
7//!
8//! # Architecture
9//!
10//! The IDE integration follows a provider chain pattern:
11//! 1. External LSP Servers (rust-analyzer, typescript-language-server, pylsp, etc.)
12//! 2. Configured IDE Rules (YAML/JSON configuration)
13//! 3. Built-in Language Providers (Rust, TypeScript, Python)
14//! 4. Generic Text-based Features (fallback for any language)
15//!
16//! # Configuration
17//!
18//! IDE integration is configured through YAML/JSON files with support for:
19//! - IDE-specific settings (VS Code, vim, neovim, emacs)
20//! - Provider chain configuration
21//! - LSP server configuration
22//! - Custom IDE rules
23//!
24//! # Example
25//!
26//! ```ignore
27//! use ricecoder_ide::config::ConfigManager;
28//! use ricecoder_ide::manager::IdeIntegrationManager;
29//!
30//! #[tokio::main]
31//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
32//!     // Load configuration
33//!     let config = ConfigManager::load_from_file("config/ide-integration.yaml").await?;
34//!
35//!     // Create IDE integration manager
36//!     let manager = IdeIntegrationManager::new(config).await?;
37//!
38//!     // Handle IDE requests
39//!     // ...
40//!
41//!     Ok(())
42//! }
43//! ```
44
45pub mod builtin_provider;
46pub mod config;
47pub mod config_hot_reload;
48pub mod config_validation;
49pub mod configured_rules_provider;
50pub mod editor_config;
51pub mod error;
52pub mod external_lsp_provider;
53pub mod generic_provider;
54pub mod hot_reload;
55pub mod ide_config_applicator;
56pub mod lsp_monitor;
57pub mod manager;
58pub mod provider;
59pub mod provider_chain;
60pub mod provider_error_handling;
61pub mod response_formatter;
62pub mod themes;
63pub mod types;
64
65pub use builtin_provider::{PythonProvider, RustProvider, TypeScriptProvider};
66pub use config::ConfigManager;
67pub use config_hot_reload::ConfigHotReloadCoordinator;
68pub use config_validation::ConfigValidator;
69pub use configured_rules_provider::ConfiguredRulesProvider;
70pub use editor_config::{
71    CompletionSettings, DiagnosticsSettings, EmacsConfig, EditorConfigError, HoverSettings,
72    TerminalEditorConfig, VimConfig,
73};
74pub use error::IdeError;
75pub use external_lsp_provider::ExternalLspProvider;
76pub use generic_provider::GenericProvider;
77pub use hot_reload::{HotReloadManager, ConfigChangeCallback, ProviderAvailabilityCallback};
78pub use ide_config_applicator::{IdeConfigApplicator, IdeSpecificSettings, IdeType};
79pub use lsp_monitor::{LspMonitor, LspHealthStatus};
80pub use manager::IdeIntegrationManager;
81pub use provider::{IdeProvider, ProviderChain};
82pub use provider_chain::{ProviderChainManager, ProviderRegistry};
83pub use provider_error_handling::{
84    ProviderErrorContext, ProviderErrorHandler, RecoveryStrategy,
85};
86pub use response_formatter::ResponseFormatter;
87pub use themes::{
88    Color, ColorSupport, IdeThemeConfig, IdeThemeIntegration, IdeThemeManager, Theme,
89    ThemeLoader, ThemeManager, ThemeRegistry, ThemeResetManager,
90};
91pub use types::*;