Skip to content

Commit 6998210

Browse files
committed
support the workspace/configuration request
1 parent a42594c commit 6998210

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

src/language_server_protocol.rs

+20-2
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ use lsp_types::{
2626
CodeActionContext, CodeActionKind, CodeActionKindLiteralSupport, CodeActionLiteralSupport,
2727
CodeActionOrCommand, CodeActionParams, CodeActionResponse, CodeLens, Command,
2828
CompletionCapability, CompletionItem, CompletionItemCapability, CompletionResponse,
29-
CompletionTextEdit, Diagnostic, DiagnosticSeverity, DidChangeConfigurationParams,
30-
DidChangeTextDocumentParams, DidChangeWatchedFilesParams,
29+
CompletionTextEdit, ConfigurationParams, Diagnostic, DiagnosticSeverity,
30+
DidChangeConfigurationParams, DidChangeTextDocumentParams, DidChangeWatchedFilesParams,
3131
DidChangeWatchedFilesRegistrationOptions, DidCloseTextDocumentParams,
3232
DidOpenTextDocumentParams, DidSaveTextDocumentParams, DocumentChangeOperation, DocumentChanges,
3333
DocumentFormattingParams, DocumentHighlight, DocumentHighlightKind,
@@ -963,6 +963,7 @@ impl LanguageClient {
963963
}),
964964
workspace: Some(WorkspaceClientCapabilities {
965965
apply_edit: Some(true),
966+
configuration: Some(true),
966967
did_change_watched_files: Some(GenericCapability {
967968
dynamic_registration: Some(true),
968969
}),
@@ -1791,6 +1792,23 @@ impl LanguageClient {
17911792
Ok(())
17921793
}
17931794

1795+
pub fn workspace_configuration(&self, params: &Value) -> Result<Value> {
1796+
let config_params = ConfigurationParams::deserialize(params)?;
1797+
1798+
let settings = self.get_state(|state| state.initialization_options.clone())?;
1799+
1800+
let configuration_items = config_params
1801+
.items
1802+
.into_iter()
1803+
.filter_map(|item| {
1804+
let section = format!("/{}", item.section?.replace(".", "/"));
1805+
settings.pointer(&section).cloned()
1806+
})
1807+
.collect::<Value>();
1808+
1809+
Ok(configuration_items)
1810+
}
1811+
17941812
pub fn handle_code_lens_action(&self, params: &Value) -> Result<Value> {
17951813
let filename = self.vim()?.get_filename(params)?;
17961814
let line = self.vim()?.get_position(params)?.line;

src/rpchandler.rs

+1
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ impl LanguageClient {
8686
request::Rename::METHOD => self.text_document_rename(&params),
8787
request::DocumentSymbolRequest::METHOD => self.text_document_document_symbol(&params),
8888
request::ShowMessageRequest::METHOD => self.window_show_message_request(&params),
89+
request::WorkspaceConfiguration::METHOD => self.workspace_configuration(&params),
8990
request::WorkspaceSymbol::METHOD => self.workspace_symbol(&params),
9091
request::CodeActionRequest::METHOD => self.text_document_code_action(&params),
9192
request::Completion::METHOD => self.text_document_completion(&params),

0 commit comments

Comments
 (0)