Skip to main content

lspkit_server/
lib.rs

1//! `lspkit-server` — hand-rolled JSON-RPC LSP server scaffolding.
2//!
3//! Provides the primitives every Rust LSP server reimplements:
4//!
5//! - Content-Length framed JSON-RPC 2.0 reader/writer ([`jsonrpc`]).
6//! - Method [`dispatch::Dispatcher`] with cancellation-token plumbing.
7//! - [`capabilities::Capabilities`] builder that does not leak protocol types.
8//! - [`uri`] helpers for `file://` ↔ `PathBuf`.
9//! - [`diagnostics::DiagnosticsBus`] for fan-out to LSP and MCP sinks.
10//! - [`progress::ProgressSink`] wrapping `window/workDoneProgress`.
11//! - Multi-root [`workspace::Workspace`] tracking.
12//!
13//! All routing happens against an [`lspkit::EngineApi`] + [`lspkit_vfs::Vfs`]
14//! pair the consumer supplies.
15
16pub mod capabilities;
17pub mod diagnostics;
18pub mod dispatch;
19pub mod jsonrpc;
20pub mod progress;
21pub mod uri;
22pub mod workspace;
23
24pub use crate::capabilities::{Capabilities, Feature, TextSync};
25pub use crate::diagnostics::{
26    Diagnostic, DiagnosticsBatch, DiagnosticsBus, DiagnosticsSink, Severity,
27};
28pub use crate::dispatch::{DispatchError, Dispatcher, HandlerResult};
29pub use crate::jsonrpc::{FramingError, JsonRpcError, Message, MessageWriter, RequestId};
30pub use crate::progress::{NoopReporter, ProgressReporter, ProgressSink, ProgressUpdate};
31pub use crate::uri::{path_to_uri, uri_to_path, UriError};
32pub use crate::workspace::{Workspace, WorkspaceFolder};