enhance the signature help (#6606)
update with test Signed-off-by: Jess Frazelle <github@jessfraz.com>
This commit is contained in:
@ -533,14 +533,18 @@ pub trait StdLibFn: std::fmt::Debug + Send + Sync {
|
|||||||
|
|
||||||
SignatureHelp {
|
SignatureHelp {
|
||||||
signatures: vec![SignatureInformation {
|
signatures: vec![SignatureInformation {
|
||||||
label: self.name(),
|
label: self.fn_signature(true),
|
||||||
documentation: Some(Documentation::MarkupContent(MarkupContent {
|
documentation: Some(Documentation::MarkupContent(MarkupContent {
|
||||||
kind: MarkupKind::Markdown,
|
kind: MarkupKind::Markdown,
|
||||||
value: if !self.description().is_empty() {
|
value: format!(
|
||||||
format!("{}\n\n{}", self.summary(), self.description())
|
r#"{}
|
||||||
} else {
|
|
||||||
self.summary()
|
{}"#,
|
||||||
},
|
self.summary(),
|
||||||
|
self.description()
|
||||||
|
)
|
||||||
|
.trim()
|
||||||
|
.to_string(),
|
||||||
})),
|
})),
|
||||||
parameters: Some(self.args(true).into_iter().map(|arg| arg.into()).collect()),
|
parameters: Some(self.args(true).into_iter().map(|arg| arg.into()).collect()),
|
||||||
active_parameter,
|
active_parameter,
|
||||||
@ -1116,4 +1120,21 @@ mod tests {
|
|||||||
let kcl_std = crate::docs::kcl_doc::walk_prelude();
|
let kcl_std = crate::docs::kcl_doc::walk_prelude();
|
||||||
crate::lsp::kcl::get_signatures_from_stdlib(&stdlib, &kcl_std);
|
crate::lsp::kcl::get_signatures_from_stdlib(&stdlib, &kcl_std);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn get_extrude_signature_help() {
|
||||||
|
let extrude_fn: Box<dyn StdLibFn> = 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]"#
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1113,7 +1113,13 @@ async fn test_kcl_lsp_signature_help() {
|
|||||||
"Expected one signature, got {:?}",
|
"Expected one signature, got {:?}",
|
||||||
signature_help.signatures
|
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 {
|
} else {
|
||||||
panic!("Expected signature help");
|
panic!("Expected signature help");
|
||||||
}
|
}
|
||||||
@ -1196,7 +1202,17 @@ a1 = startSketchOn(offsetPlane(XY, offset = 10))
|
|||||||
"Expected one signature, got {:?}",
|
"Expected one signature, got {:?}",
|
||||||
signature_help.signatures
|
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 {
|
} else {
|
||||||
panic!("Expected signature help");
|
panic!("Expected signature help");
|
||||||
}
|
}
|
||||||
@ -1284,7 +1300,17 @@ a1 = startSketchOn(offsetPlane(XY, offset = 10))
|
|||||||
"Expected one signature, got {:?}",
|
"Expected one signature, got {:?}",
|
||||||
signature_help.signatures
|
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 {
|
} else {
|
||||||
panic!("Expected signature help");
|
panic!("Expected signature help");
|
||||||
}
|
}
|
||||||
@ -1367,7 +1393,17 @@ a1 = startSketchOn(offsetPlane(XY, offset = 10))
|
|||||||
"Expected one signature, got {:?}",
|
"Expected one signature, got {:?}",
|
||||||
signature_help.signatures
|
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 {
|
} else {
|
||||||
panic!("Expected signature help");
|
panic!("Expected signature help");
|
||||||
}
|
}
|
||||||
@ -1455,7 +1491,17 @@ a1 = startSketchOn(offsetPlane(XY, offset = 10))
|
|||||||
"Expected one signature, got {:?}",
|
"Expected one signature, got {:?}",
|
||||||
signature_help.signatures
|
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 {
|
} else {
|
||||||
panic!("Expected signature help");
|
panic!("Expected signature help");
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user