Add window/showMessage / logMessage stubs so gopls fully starts.

This commit is contained in:
Blaž Hrastnik 2021-04-15 17:34:38 +09:00
parent 305a059f58
commit 3b90317060
3 changed files with 23 additions and 1 deletions

View file

@ -123,6 +123,8 @@ pub mod util {
#[derive(Debug, PartialEq, Clone)] #[derive(Debug, PartialEq, Clone)]
pub enum Notification { pub enum Notification {
PublishDiagnostics(lsp::PublishDiagnosticsParams), PublishDiagnostics(lsp::PublishDiagnosticsParams),
ShowMessage(lsp::ShowMessageParams),
LogMessage(lsp::LogMessageParams),
} }
impl Notification { impl Notification {
@ -138,6 +140,19 @@ impl Notification {
// TODO: need to loop over diagnostics and distinguish them by URI // TODO: need to loop over diagnostics and distinguish them by URI
Notification::PublishDiagnostics(params) Notification::PublishDiagnostics(params)
} }
lsp::notification::ShowMessage::METHOD => {
let params: lsp::ShowMessageParams =
params.parse().expect("Failed to parse ShowMessage params");
Notification::ShowMessage(params)
}
lsp::notification::LogMessage::METHOD => {
let params: lsp::LogMessageParams =
params.parse().expect("Failed to parse ShowMessage params");
Notification::LogMessage(params)
}
_ => unimplemented!("unhandled notification: {}", method), _ => unimplemented!("unhandled notification: {}", method),
} }
} }

View file

@ -152,6 +152,7 @@ impl Application {
match call { match call {
Call::Notification(helix_lsp::jsonrpc::Notification { method, params, .. }) => { Call::Notification(helix_lsp::jsonrpc::Notification { method, params, .. }) => {
let notification = Notification::parse(&method, params); let notification = Notification::parse(&method, params);
// TODO: parse should return Result/Option
match notification { match notification {
Notification::PublishDiagnostics(params) => { Notification::PublishDiagnostics(params) => {
let path = Some(params.uri.to_file_path().unwrap()); let path = Some(params.uri.to_file_path().unwrap());
@ -213,6 +214,12 @@ impl Application {
self.render(); self.render();
} }
} }
Notification::ShowMessage(params) => {
log::warn!("unhandled window/showMessage: {:?}", params);
}
Notification::LogMessage(params) => {
log::warn!("unhandled window/logMessage: {:?}", params);
}
_ => unreachable!(), _ => unreachable!(),
} }
} }

View file

@ -52,7 +52,7 @@ file-types = ["go"]
roots = ["Gopkg.toml", "go.mod"] roots = ["Gopkg.toml", "go.mod"]
language-server = { command = "gopls" } language-server = { command = "gopls" }
# TODO: gopls needs utf-8 offsets # TODO: gopls needs utf-8 offsets?
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[language]] [[language]]