mirror of
https://github.com/oxalica/nil.git
synced 2025-12-23 09:19:49 +00:00
Move server capabilities into an individual mod
This commit is contained in:
parent
6a7ecb4386
commit
2f0231fde9
3 changed files with 50 additions and 47 deletions
44
crates/nil/src/capabilities.rs
Normal file
44
crates/nil/src/capabilities.rs
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
use crate::semantic_tokens::{SEMANTIC_TOKEN_MODIFIERS, SEMANTIC_TOKEN_TYPES};
|
||||
use lsp_types::{
|
||||
CompletionOptions, OneOf, RenameOptions, SelectionRangeProviderCapability,
|
||||
SemanticTokensFullOptions, SemanticTokensLegend, SemanticTokensOptions,
|
||||
SemanticTokensServerCapabilities, ServerCapabilities, TextDocumentSyncCapability,
|
||||
TextDocumentSyncKind, TextDocumentSyncOptions, WorkDoneProgressOptions,
|
||||
};
|
||||
|
||||
pub(crate) fn server_capabilities() -> ServerCapabilities {
|
||||
ServerCapabilities {
|
||||
text_document_sync: Some(TextDocumentSyncCapability::Options(
|
||||
TextDocumentSyncOptions {
|
||||
open_close: Some(true),
|
||||
change: Some(TextDocumentSyncKind::INCREMENTAL),
|
||||
will_save: None,
|
||||
will_save_wait_until: None,
|
||||
save: None,
|
||||
},
|
||||
)),
|
||||
definition_provider: Some(OneOf::Left(true)),
|
||||
completion_provider: Some(CompletionOptions {
|
||||
trigger_characters: Some(vec![".".into()]),
|
||||
..Default::default()
|
||||
}),
|
||||
references_provider: Some(OneOf::Left(true)),
|
||||
selection_range_provider: Some(SelectionRangeProviderCapability::Simple(true)),
|
||||
rename_provider: Some(OneOf::Right(RenameOptions {
|
||||
prepare_provider: Some(true),
|
||||
work_done_progress_options: WorkDoneProgressOptions::default(),
|
||||
})),
|
||||
semantic_tokens_provider: Some(SemanticTokensServerCapabilities::SemanticTokensOptions(
|
||||
SemanticTokensOptions {
|
||||
work_done_progress_options: WorkDoneProgressOptions::default(),
|
||||
legend: SemanticTokensLegend {
|
||||
token_types: SEMANTIC_TOKEN_TYPES.to_vec(),
|
||||
token_modifiers: SEMANTIC_TOKEN_MODIFIERS.to_vec(),
|
||||
},
|
||||
range: Some(true),
|
||||
full: Some(SemanticTokensFullOptions::Delta { delta: Some(false) }),
|
||||
},
|
||||
)),
|
||||
..Default::default()
|
||||
}
|
||||
}
|
||||
|
|
@ -1,55 +1,13 @@
|
|||
use crate::semantic_tokens::{SEMANTIC_TOKEN_MODIFIERS, SEMANTIC_TOKEN_TYPES};
|
||||
use crate::{convert, Result, StateSnapshot};
|
||||
use ide::FileRange;
|
||||
use lsp_types::{
|
||||
CompletionOptions, CompletionParams, CompletionResponse, GotoDefinitionParams,
|
||||
GotoDefinitionResponse, Location, OneOf, PrepareRenameResponse, ReferenceParams, RenameOptions,
|
||||
RenameParams, SelectionRange, SelectionRangeParams, SelectionRangeProviderCapability,
|
||||
SemanticTokens, SemanticTokensFullOptions, SemanticTokensLegend, SemanticTokensOptions,
|
||||
SemanticTokensParams, SemanticTokensRangeParams, SemanticTokensRangeResult,
|
||||
SemanticTokensResult, SemanticTokensServerCapabilities, ServerCapabilities,
|
||||
TextDocumentPositionParams, TextDocumentSyncCapability, TextDocumentSyncKind,
|
||||
TextDocumentSyncOptions, WorkDoneProgressOptions, WorkspaceEdit,
|
||||
CompletionParams, CompletionResponse, GotoDefinitionParams, GotoDefinitionResponse, Location,
|
||||
PrepareRenameResponse, ReferenceParams, RenameParams, SelectionRange, SelectionRangeParams,
|
||||
SemanticTokens, SemanticTokensParams, SemanticTokensRangeParams, SemanticTokensRangeResult,
|
||||
SemanticTokensResult, TextDocumentPositionParams, WorkspaceEdit,
|
||||
};
|
||||
use text_size::TextRange;
|
||||
|
||||
pub(crate) fn server_capabilities() -> ServerCapabilities {
|
||||
ServerCapabilities {
|
||||
text_document_sync: Some(TextDocumentSyncCapability::Options(
|
||||
TextDocumentSyncOptions {
|
||||
open_close: Some(true),
|
||||
change: Some(TextDocumentSyncKind::INCREMENTAL),
|
||||
will_save: None,
|
||||
will_save_wait_until: None,
|
||||
save: None,
|
||||
},
|
||||
)),
|
||||
definition_provider: Some(OneOf::Left(true)),
|
||||
completion_provider: Some(CompletionOptions {
|
||||
trigger_characters: Some(vec![".".into()]),
|
||||
..Default::default()
|
||||
}),
|
||||
references_provider: Some(OneOf::Left(true)),
|
||||
selection_range_provider: Some(SelectionRangeProviderCapability::Simple(true)),
|
||||
rename_provider: Some(OneOf::Right(RenameOptions {
|
||||
prepare_provider: Some(true),
|
||||
work_done_progress_options: WorkDoneProgressOptions::default(),
|
||||
})),
|
||||
semantic_tokens_provider: Some(SemanticTokensServerCapabilities::SemanticTokensOptions(
|
||||
SemanticTokensOptions {
|
||||
work_done_progress_options: WorkDoneProgressOptions::default(),
|
||||
legend: SemanticTokensLegend {
|
||||
token_types: SEMANTIC_TOKEN_TYPES.to_vec(),
|
||||
token_modifiers: SEMANTIC_TOKEN_MODIFIERS.to_vec(),
|
||||
},
|
||||
range: Some(true),
|
||||
full: Some(SemanticTokensFullOptions::Delta { delta: Some(false) }),
|
||||
},
|
||||
)),
|
||||
..Default::default()
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn goto_definition(
|
||||
snap: StateSnapshot,
|
||||
params: GotoDefinitionParams,
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
mod capabilities;
|
||||
mod convert;
|
||||
mod handler;
|
||||
mod semantic_tokens;
|
||||
|
|
@ -31,7 +32,7 @@ pub type Result<T, E = Error> = std::result::Result<T, E>;
|
|||
|
||||
pub fn main_loop(conn: Connection) -> Result<()> {
|
||||
let init_params =
|
||||
conn.initialize(serde_json::to_value(&handler::server_capabilities()).unwrap())?;
|
||||
conn.initialize(serde_json::to_value(&capabilities::server_capabilities()).unwrap())?;
|
||||
tracing::info!("Init params: {}", init_params);
|
||||
|
||||
let init_params = serde_json::from_value::<InitializeParams>(init_params)?;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue