diff --git a/rust/kcl-lib/src/docs/mod.rs b/rust/kcl-lib/src/docs/mod.rs index 9d9822161..b05ff0d95 100644 --- a/rust/kcl-lib/src/docs/mod.rs +++ b/rust/kcl-lib/src/docs/mod.rs @@ -533,14 +533,18 @@ pub trait StdLibFn: std::fmt::Debug + Send + Sync { SignatureHelp { signatures: vec![SignatureInformation { - label: self.name(), + label: self.fn_signature(true), documentation: Some(Documentation::MarkupContent(MarkupContent { kind: MarkupKind::Markdown, - value: if !self.description().is_empty() { - format!("{}\n\n{}", self.summary(), self.description()) - } else { - self.summary() - }, + value: format!( + r#"{} + +{}"#, + self.summary(), + self.description() + ) + .trim() + .to_string(), })), parameters: Some(self.args(true).into_iter().map(|arg| arg.into()).collect()), active_parameter, @@ -1116,4 +1120,21 @@ mod tests { let kcl_std = crate::docs::kcl_doc::walk_prelude(); crate::lsp::kcl::get_signatures_from_stdlib(&stdlib, &kcl_std); } + + #[test] + fn get_extrude_signature_help() { + let extrude_fn: Box = Box::new(crate::std::extrude::Extrude); + let sh = extrude_fn.to_signature_help(); + assert_eq!( + sh.signatures[0].label, + r#"extrude( + sketches: [Sketch], + length: number, + symmetric?: bool, + bidirectionalLength?: number, + tagStart?: TagNode, + tagEnd?: TagNode, +): [Solid]"# + ); + } } diff --git a/rust/kcl-lib/src/lsp/tests.rs b/rust/kcl-lib/src/lsp/tests.rs index b8300bd5c..0883fa059 100644 --- a/rust/kcl-lib/src/lsp/tests.rs +++ b/rust/kcl-lib/src/lsp/tests.rs @@ -1113,7 +1113,13 @@ async fn test_kcl_lsp_signature_help() { "Expected one signature, got {:?}", signature_help.signatures ); - assert_eq!(signature_help.signatures[0].label, "startSketchOn"); + assert_eq!( + signature_help.signatures[0].label, + r#"startSketchOn( + planeOrSolid: SketchData, + face?: FaceTag, +): SketchSurface"# + ); } else { panic!("Expected signature help"); } @@ -1196,7 +1202,17 @@ a1 = startSketchOn(offsetPlane(XY, offset = 10)) "Expected one signature, got {:?}", signature_help.signatures ); - assert_eq!(signature_help.signatures[0].label, "extrude"); + assert_eq!( + signature_help.signatures[0].label, + r#"extrude( + sketches: [Sketch], + length: number, + symmetric?: bool, + bidirectionalLength?: number, + tagStart?: TagNode, + tagEnd?: TagNode, +): [Solid]"# + ); } else { panic!("Expected signature help"); } @@ -1284,7 +1300,17 @@ a1 = startSketchOn(offsetPlane(XY, offset = 10)) "Expected one signature, got {:?}", signature_help.signatures ); - assert_eq!(signature_help.signatures[0].label, "extrude"); + assert_eq!( + signature_help.signatures[0].label, + r#"extrude( + sketches: [Sketch], + length: number, + symmetric?: bool, + bidirectionalLength?: number, + tagStart?: TagNode, + tagEnd?: TagNode, +): [Solid]"# + ); } else { panic!("Expected signature help"); } @@ -1367,7 +1393,17 @@ a1 = startSketchOn(offsetPlane(XY, offset = 10)) "Expected one signature, got {:?}", signature_help.signatures ); - assert_eq!(signature_help.signatures[0].label, "extrude"); + assert_eq!( + signature_help.signatures[0].label, + r#"extrude( + sketches: [Sketch], + length: number, + symmetric?: bool, + bidirectionalLength?: number, + tagStart?: TagNode, + tagEnd?: TagNode, +): [Solid]"# + ); } else { panic!("Expected signature help"); } @@ -1455,7 +1491,17 @@ a1 = startSketchOn(offsetPlane(XY, offset = 10)) "Expected one signature, got {:?}", signature_help.signatures ); - assert_eq!(signature_help.signatures[0].label, "extrude"); + assert_eq!( + signature_help.signatures[0].label, + r#"extrude( + sketches: [Sketch], + length: number, + symmetric?: bool, + bidirectionalLength?: number, + tagStart?: TagNode, + tagEnd?: TagNode, +): [Solid]"# + ); } else { panic!("Expected signature help"); }