From e89bb2ee96f6c5ae4b40a27f21933516e866453c Mon Sep 17 00:00:00 2001 From: zc he Date: Thu, 20 Mar 2025 22:55:03 +0800 Subject: [PATCH] fix(lsp): verbose signature help response for less well supported editors (#15353) # Description Some editors (like zed) will fail to mark the active parameter if not set in the outmost structure. # User-Facing Changes # Tests + Formatting Adjusted # After Submitting --- crates/nu-lsp/src/lib.rs | 2 +- crates/nu-lsp/src/signature.rs | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/crates/nu-lsp/src/lib.rs b/crates/nu-lsp/src/lib.rs index bcce8dcf89..027c1ffe8c 100644 --- a/crates/nu-lsp/src/lib.rs +++ b/crates/nu-lsp/src/lib.rs @@ -660,7 +660,7 @@ mod tests { client_connection .receiver - .recv_timeout(Duration::from_secs(2)) + .recv_timeout(Duration::from_secs(3)) .unwrap() } } diff --git a/crates/nu-lsp/src/signature.rs b/crates/nu-lsp/src/signature.rs index 263a29dacb..aca08477e2 100644 --- a/crates/nu-lsp/src/signature.rs +++ b/crates/nu-lsp/src/signature.rs @@ -162,15 +162,16 @@ impl LanguageServer { parameters.push(arg_to_param_info(rest_arg)); } let max_idx = parameters.len().saturating_sub(1) as u32; + let active_parameter = Some(param_num_before_pos.min(max_idx)); Some(SignatureHelp { signatures: vec![SignatureInformation { label: Self::get_signature_label(&active_signature), documentation: str_to_doc(active_signature.description), parameters: Some(parameters), - active_parameter: Some(std::cmp::min(param_num_before_pos, max_idx)), + active_parameter, }], active_signature: Some(0), - active_parameter: None, + active_parameter, }) } } @@ -315,7 +316,8 @@ mod tests { ], "activeParameter": 1 }], - "activeSignature": 0 + "activeSignature": 0, + "activeParameter": 1 }) ); @@ -332,7 +334,8 @@ mod tests { ], "activeParameter": 2 }], - "activeSignature": 0 + "activeSignature": 0, + "activeParameter": 2 }) ); }