55 lines
1.5 KiB
Rust
55 lines
1.5 KiB
Rust
// Standard Uses
|
|
|
|
// Local Uses
|
|
|
|
// External Uses
|
|
use tower_lsp::jsonrpc::Result;
|
|
use tower_lsp::lsp_types::*;
|
|
use tower_lsp::{Client, LanguageServer};
|
|
|
|
|
|
#[derive(Debug)]
|
|
pub struct Backend {
|
|
pub client: Client,
|
|
}
|
|
|
|
#[tower_lsp::async_trait]
|
|
impl LanguageServer for Backend {
|
|
async fn initialize(&self, _: InitializeParams) -> Result<InitializeResult> {
|
|
Ok(InitializeResult {
|
|
capabilities: ServerCapabilities {
|
|
hover_provider: Some(HoverProviderCapability::Simple(true)),
|
|
completion_provider: Some(CompletionOptions::default()),
|
|
..Default::default()
|
|
},
|
|
..Default::default()
|
|
})
|
|
}
|
|
|
|
async fn initialized(&self, _: InitializedParams) {
|
|
self.client
|
|
.log_message(MessageType::INFO, "OpenQuest server initialized!")
|
|
.await;
|
|
}
|
|
|
|
async fn shutdown(&self) -> Result<()> {
|
|
Ok(())
|
|
}
|
|
|
|
async fn hover(&self, _: HoverParams) -> Result<Option<Hover>> {
|
|
Ok(Some(Hover {
|
|
contents: HoverContents::Scalar(
|
|
MarkedString::String("You're hovering!".to_string())
|
|
),
|
|
range: None
|
|
}))
|
|
}
|
|
|
|
async fn completion(&self, _: CompletionParams) -> Result<Option<CompletionResponse>> {
|
|
Ok(Some(CompletionResponse::Array(vec![
|
|
CompletionItem::new_simple("Hello".to_string(), "Some detail".to_string()),
|
|
CompletionItem::new_simple("Bye".to_string(), "More detail".to_string())
|
|
])))
|
|
}
|
|
}
|