diff --git a/crates/project/src/lsp_store/lsp_ext_command.rs b/crates/project/src/lsp_store/lsp_ext_command.rs index a09cf8e2affec4e1ef4ffa4d3bdd8d1c897c215b..91075cd233544a10ccaef59ab56049566d6984a3 100644 --- a/crates/project/src/lsp_store/lsp_ext_command.rs +++ b/crates/project/src/lsp_store/lsp_ext_command.rs @@ -393,6 +393,7 @@ impl lsp::request::Request for Runnables { #[serde(rename_all = "camelCase")] pub struct RunnablesParams { pub text_document: lsp::TextDocumentIdentifier, + #[serde(default)] pub position: Option, } @@ -400,7 +401,7 @@ pub struct RunnablesParams { #[serde(rename_all = "camelCase")] pub struct Runnable { pub label: String, - #[serde(skip_serializing_if = "Option::is_none")] + #[serde(default, skip_serializing_if = "Option::is_none")] pub location: Option, pub kind: RunnableKind, pub args: RunnableArgs, @@ -424,26 +425,30 @@ pub enum RunnableKind { #[derive(Deserialize, Serialize, Debug, Clone)] #[serde(rename_all = "camelCase")] pub struct CargoRunnableArgs { - #[serde(skip_serializing_if = "HashMap::is_empty")] + #[serde(default, skip_serializing_if = "HashMap::is_empty")] pub environment: HashMap, pub cwd: PathBuf, /// Command to be executed instead of cargo + #[serde(default)] pub override_cargo: Option, - #[serde(skip_serializing_if = "Option::is_none")] + #[serde(default, skip_serializing_if = "Option::is_none")] pub workspace_root: Option, // command, --package and --lib stuff + #[serde(default)] pub cargo_args: Vec, // stuff after -- + #[serde(default)] pub executable_args: Vec, } #[derive(Deserialize, Serialize, Debug, Clone)] #[serde(rename_all = "camelCase")] pub struct ShellRunnableArgs { - #[serde(skip_serializing_if = "HashMap::is_empty")] + #[serde(default, skip_serializing_if = "HashMap::is_empty")] pub environment: HashMap, pub cwd: PathBuf, pub program: String, + #[serde(default)] pub args: Vec, }