Skip to content

Commit 103d626

Browse files
committed
added jet signature for hover
1 parent 4178f25 commit 103d626

2 files changed

Lines changed: 26 additions & 19 deletions

File tree

src/backend.rs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,9 @@ impl LanguageServer for Backend {
211211
else {
212212
return Ok(None);
213213
};
214+
let Ok((start, end)) = span_to_positions(call.span()) else {
215+
return Ok(None);
216+
};
214217

215218
match call.name() {
216219
parse::CallName::Jet(jet) => {
@@ -219,15 +222,21 @@ impl LanguageServer for Backend {
219222
) else {
220223
return Ok(None);
221224
};
222-
let Ok((start, end)) = span_to_positions(call.span()) else {
223-
return Ok(None);
224-
};
225+
226+
let template = completion::jet::jet_to_template(element);
227+
let description = format!(
228+
"```simplicityhl\nfn jet::{}({}) -> {}\n```\n{}",
229+
template.display_name,
230+
template.args.join(", "),
231+
template.return_type,
232+
completion::jet::documentation(element)
233+
);
225234

226235
return Ok(Some(Hover {
227236
contents: tower_lsp_server::lsp_types::HoverContents::Markup(
228237
MarkupContent {
229238
kind: MarkupKind::Markdown,
230-
value: completion::jet::documentation(element).to_string(),
239+
value: description,
231240
},
232241
),
233242
range: Some(Range { start, end }),

src/completion/jet.rs

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,19 @@ use simplicityhl::simplicity::jet::Elements;
55

66
/// Convert all jets to `FunctionCompletionTemplate`.
77
pub fn get_jets_completions() -> Vec<types::FunctionTemplate> {
8-
Elements::ALL
9-
.iter()
10-
.copied()
11-
.map(|jet| {
12-
types::FunctionTemplate::simple(
13-
jet.to_string(),
14-
jet::source_type(jet)
15-
.iter()
16-
.map(|item| format!("{item}"))
17-
.collect::<Vec<String>>(),
18-
jet::target_type(jet).to_string().as_str(),
19-
documentation(jet),
20-
)
21-
})
22-
.collect()
8+
Elements::ALL.iter().copied().map(jet_to_template).collect()
9+
}
10+
11+
pub fn jet_to_template(jet: Elements) -> types::FunctionTemplate {
12+
types::FunctionTemplate::simple(
13+
jet.to_string(),
14+
jet::source_type(jet)
15+
.iter()
16+
.map(|item| format!("{item}"))
17+
.collect::<Vec<String>>(),
18+
jet::target_type(jet).to_string().as_str(),
19+
documentation(jet),
20+
)
2321
}
2422

2523
// copied from https://github.com/BlockstreamResearch/SimplicityHL/blob/master/codegen/src/jet.rs

0 commit comments

Comments
 (0)