use lsp_types::{
CompletionOptions, FoldingRangeProviderCapability, HoverProviderCapability, OneOf,
RenameOptions, SelectionRangeProviderCapability, ServerCapabilities,
TextDocumentSyncCapability, TextDocumentSyncKind, TextDocumentSyncOptions,
};
pub fn make() -> ServerCapabilities {
ServerCapabilities {
completion_provider: Some(CompletionOptions::default()),
definition_provider: Some(OneOf::Left(true)),
document_formatting_provider: Some(OneOf::Left(true)),
document_symbol_provider: Some(OneOf::Left(true)),
folding_range_provider: Some(FoldingRangeProviderCapability::Simple(true)),
hover_provider: Some(HoverProviderCapability::Simple(true)),
references_provider: Some(OneOf::Left(true)),
rename_provider: Some(OneOf::Right(RenameOptions {
prepare_provider: Some(true),
work_done_progress_options: Default::default(),
})),
selection_range_provider: Some(SelectionRangeProviderCapability::Simple(true)),
text_document_sync: Some(TextDocumentSyncCapability::Options(
TextDocumentSyncOptions {
open_close: Some(true),
change: Some(TextDocumentSyncKind::FULL),
..TextDocumentSyncOptions::default()
},
)),
workspace_symbol_provider: Some(OneOf::Left(true)),
..ServerCapabilities::default()
}
}