//! `mq-lsp` is a Language Server Protocol (LSP) implementation for the [mq](https://mqlang.org/). It provides various language features such as syntax highlighting, code completion, go-to-definition, and more.
//!
//! # Features
//!
//! - **Initialization**: Handles the initialization of the LSP server and sets up the server capabilities.
//! - **Diagnostics**: Publishes diagnostics information to the client.
//! - **Hover**: Provides hover information for symbols, including type information when type checking is enabled.
//! - **Inlay Hints**: Shows inferred type annotations inline in the editor when type checking is enabled.
//! - **Completion**: Offers code completion suggestions.
//! - **Go To Definition**: Allows navigation to the definition of symbols.
//! - **References**: Finds all references to a symbol.
//! - **Document Symbols**: Lists all symbols in a document.
//! - **Semantic Tokens**: Provides semantic tokens for syntax highlighting.
//! - **Formatting**: Formats the document according to the MDQ language formatting rules.
//!
//! # Usage
//!
//! To use this LSP server, you need to integrate it with an LSP client. The server reads from stdin and writes to stdout, making it compatible with various editors and IDEs that support LSP.
pub mod capabilities;
pub mod completions;
pub mod document_symbol;
pub mod error;
pub mod execute_command;
pub mod goto_definition;
pub mod hover;
pub mod inlay_hints;
pub mod references;
pub mod semantic_tokens;
pub mod server;

pub use server::start;
