#![warn(missing_docs)]
//! `editor-core-lsp` - LSP integration for `editor-core`.
//!
//! This crate contains LSP-specific utilities (UTF-16 coordinate conversion, semantic tokens
//! decoding, JSON-RPC stdio framing) plus optional higher-level helpers for wiring an
//! `editor_core::EditorStateManager` to an LSP server.

pub mod editor;
pub mod lsp_call_hierarchy;
pub mod lsp_client;
pub mod lsp_code_actions;
pub mod lsp_completion;
pub mod lsp_decorations;
pub mod lsp_events;
pub mod lsp_highlights;
pub mod lsp_hover;
pub mod lsp_indentation;
pub mod lsp_locations;
pub mod lsp_signature_help;
pub mod lsp_symbols;
pub mod lsp_sync;
pub mod lsp_text_edits;
pub mod lsp_transport;
pub mod lsp_type_hierarchy;
pub mod lsp_uri;
pub mod workspace_sync;

pub use editor::{
    LspActivity, LspContentChange, LspDocument, LspServerInfo, LspServerStatus, LspSession,
    LspSessionCapabilities, LspSessionStartOptions, LspSessionStatus, LspWorkState,
    SemanticTokensLegend, clear_lsp_state, lsp_clear_edits, lsp_diagnostics_to_processing_edits,
};
pub use lsp_call_hierarchy::{
    call_hierarchy_incoming_calls_from_value, call_hierarchy_item_from_value,
    call_hierarchy_items_from_value, call_hierarchy_outgoing_calls_from_value,
};
pub use lsp_client::{LspClient, LspInbound, LspOutbound};
pub use lsp_code_actions::{
    ApplyCodeActionPlan, LspCodeAction, LspCodeActionItem, LspCommand,
    apply_plan_for_code_action_item, code_action_items_from_value,
};
pub use lsp_completion::{
    CompletionTextEditMode, apply_completion_item, completion_item_to_text_edit_specs,
};
pub use lsp_decorations::{
    lsp_code_lens_to_decorations, lsp_code_lens_to_processing_edit,
    lsp_document_links_to_decorations, lsp_document_links_to_processing_edit,
    lsp_document_links_to_processing_edits, lsp_document_links_to_style_intervals,
    lsp_inlay_hints_to_decorations, lsp_inlay_hints_to_processing_edit,
};
pub use lsp_events::{
    LspDiagnostic, LspDiagnosticSeverity, LspEvent, LspLogMessageParams, LspMessageType,
    LspNotification, LspProgressParams, LspPublishDiagnosticsParams, LspResponse, LspResponseError,
    LspServerRequest, LspServerRequestMode, LspServerRequestPolicy, LspShowMessageParams,
};
pub use lsp_highlights::{
    lsp_document_highlights_to_intervals, lsp_document_highlights_to_processing_edit,
};
pub use lsp_hover::{
    LspHover, LspHoverContents, LspMarkupContent, LspMarkupKind, hover_from_value,
};
pub use lsp_indentation::{
    LspOnTypeFormattingOptions, lsp_formatting_options,
    lsp_formatting_options_for_indentation_config, on_type_formatting_options_from_capabilities,
};
pub use lsp_locations::{LspLocation, locations_from_value};
pub use lsp_signature_help::{
    LspParameterInformation, LspParameterLabel, LspSignatureHelp, LspSignatureInformation,
    signature_help_from_value,
};
pub use lsp_symbols::{
    lsp_document_symbols_to_outline, lsp_document_symbols_to_processing_edit,
    lsp_workspace_symbols_to_results,
};
pub use lsp_sync::{
    CANONICAL_SEMANTIC_TOKEN_MODIFIERS, CANONICAL_SEMANTIC_TOKEN_TYPES, DeltaCalculator,
    LspCoordinateConverter, LspPosition, LspRange, SemanticToken, SemanticTokensError,
    SemanticTokensManager, TextChange, canonical_semantic_token_modifier_bit,
    canonical_semantic_token_type_index, decode_semantic_style_id, encode_semantic_style_id,
    semantic_tokens_to_intervals,
};
pub use lsp_text_edits::{
    LspTextEdit, WorkspaceEditDocumentSummary, WorkspaceEditSummary, apply_text_edits,
    char_offsets_for_lsp_range, summarize_workspace_edit, text_edits_from_value,
    workspace_edit_text_edits, workspace_edit_text_edits_for_uri,
};
pub use lsp_transport::{read_lsp_message, write_lsp_message};
pub use lsp_type_hierarchy::{type_hierarchy_item_from_value, type_hierarchy_items_from_value};
pub use lsp_uri::{file_uri_to_path, path_to_file_uri, percent_decode_path, percent_encode_path};
pub use workspace_sync::{
    AppliedWorkspaceEditDocument, ApplyWorkspaceEditResult, LspWorkspaceSync,
};
