diff --git a/tools/lsp/Cargo.toml b/tools/lsp/Cargo.toml index 3453d67b1..8ced91f5c 100644 --- a/tools/lsp/Cargo.toml +++ b/tools/lsp/Cargo.toml @@ -57,7 +57,7 @@ i-slint-compiler = { version = "=0.2.6", path = "../../internal/compiler"} clap = { version = "3.2", features = ["derive", "wrap_help"] } dunce = "1.0.1" euclid = "0.22" -lsp-types = "0.93.0" +lsp-types = { version = "0.93.0", features = ["proposed"] } serde = "1.0.118" serde_json = "1.0.60" diff --git a/tools/lsp/main.rs b/tools/lsp/main.rs index f70024654..28a97f549 100644 --- a/tools/lsp/main.rs +++ b/tools/lsp/main.rs @@ -14,7 +14,10 @@ mod util; use i_slint_compiler::CompilerConfiguration; use lsp_types::notification::{DidChangeTextDocument, DidOpenTextDocument, Notification}; -use lsp_types::{DidChangeTextDocumentParams, DidOpenTextDocumentParams, InitializeParams}; +use lsp_types::{ + DidChangeTextDocumentParams, DidOpenTextDocumentParams, InitializeParams, InitializeResult, + ServerInfo, +}; use server_loop::*; use clap::Parser; @@ -128,18 +131,18 @@ fn main() { pub fn run_lsp_server() -> Result<(), Error> { let (connection, io_threads) = Connection::stdio(); let (id, params) = connection.initialize_start()?; - let server_capabilities = server_loop::server_capabilities(); - let initialize_data = serde_json::json!({ - "capabilities": server_capabilities, - "offsetEncoding": "utf-8", // We support utf-8 *only* - "serverInfo": { - "name": "slint-ls", - "version": String::from(env!("CARGO_PKG_VERSION")), - } - }); + let initialization_reply = InitializeResult { + capabilities: server_loop::server_capabilities(), - connection.initialize_finish(id, initialize_data)?; + server_info: Some(ServerInfo { + name: "slint-ls".into(), + version: Some(env!("CARGO_PKG_VERSION").to_string()), + }), + offset_encoding: Some("utf-8".to_string()), + }; + + connection.initialize_finish(id, serde_json::to_value(initialization_reply)?)?; main_loop(&connection, params)?; io_threads.join()?; diff --git a/tools/lsp/server_loop.rs b/tools/lsp/server_loop.rs index 3f9878596..8a779788f 100644 --- a/tools/lsp/server_loop.rs +++ b/tools/lsp/server_loop.rs @@ -114,6 +114,7 @@ pub fn server_capabilities() -> ServerCapabilities { trigger_characters: Some(vec![".".to_owned()]), work_done_progress_options: WorkDoneProgressOptions::default(), all_commit_characters: None, + completion_item: None, }), definition_provider: Some(OneOf::Left(true)), text_document_sync: Some(TextDocumentSyncCapability::Kind(