add primitives param hover
This commit is contained in:
parent
41b2db2eba
commit
290d1aec05
@ -32,7 +32,7 @@ impl PrimitiveText {
|
||||
|
||||
pub fn get_comment(&self, name: &str, text: &str) -> String {
|
||||
if let Some(comment) = PrimitiveText::extract_pattern_comments(text).get(name) {
|
||||
(*comment).clone()
|
||||
"// ".to_string() + comment
|
||||
} else {
|
||||
"".to_string()
|
||||
}
|
||||
|
@ -227,13 +227,27 @@ fn goto_instantiation<'a>(
|
||||
// info!("param_range: {param_range:#?}");
|
||||
// info!("position param find belong module: {:?}", module);
|
||||
|
||||
let file_type = server.srcs.hdl_param.find_file_type_by_module_name(&instance.inst_type);
|
||||
if file_type == "primitives" {
|
||||
let primitives_text = server.srcs.primitive_text.clone();
|
||||
let params_assignments = &module.instances.first().unwrap().intstparam_assignments;
|
||||
for assignment in params_assignments {
|
||||
if assignment.parameter.clone().unwrap() == token_name {
|
||||
let hover = make_primitives_param_desc_hover(
|
||||
primitives_text, &instance.inst_type,
|
||||
assignment, range, language_id
|
||||
);
|
||||
return Some(hover);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for param in &module.params {
|
||||
if token_name == param.name {
|
||||
let file_type = server.srcs.hdl_param.find_file_type_by_module_name(&instance.inst_type);
|
||||
let hover = make_param_desc_hover(&file_type, param, range, language_id);
|
||||
return Some(hover);
|
||||
}
|
||||
}
|
||||
}
|
||||
return None;
|
||||
}
|
||||
}
|
||||
@ -252,8 +266,8 @@ fn goto_instantiation<'a>(
|
||||
let file_type = server.srcs.hdl_param.find_file_type_by_module_name(&instance.inst_type);
|
||||
if file_type == "primitives" {
|
||||
let primitives_text = server.srcs.primitive_text.clone();
|
||||
let instance_assignments = &module.instances.first().unwrap().intstport_assignments;
|
||||
for assignment in instance_assignments {
|
||||
let port_assignments = &module.instances.first().unwrap().intstport_assignments;
|
||||
for assignment in port_assignments {
|
||||
if assignment.port.clone().unwrap() == token_name {
|
||||
let hover = make_primitives_port_desc_hover(
|
||||
primitives_text, &instance.inst_type,
|
||||
@ -310,6 +324,30 @@ pub fn hover_position_port_param(
|
||||
None
|
||||
}
|
||||
|
||||
fn make_primitives_param_desc_hover(
|
||||
primitives_text: Arc<PrimitiveText>,
|
||||
primitives_name: &str,
|
||||
inst_param: &crate::core::hdlparam::InstParameter,
|
||||
range: &Range, language_id: &str) -> Hover {
|
||||
|
||||
let name = inst_param.parameter.clone().unwrap();
|
||||
let text_map = primitives_text.name_to_text.read().unwrap();
|
||||
let comment = if let Some(text) = text_map.get(primitives_name) {
|
||||
primitives_text.get_comment(&name, text)
|
||||
} else {
|
||||
"".to_string()
|
||||
};
|
||||
|
||||
let language_string = LanguageString {
|
||||
language: language_id.to_string(),
|
||||
value: "parameter ".to_string() + &name + " " + &comment,
|
||||
};
|
||||
Hover {
|
||||
contents: HoverContents::Scalar(MarkedString::LanguageString(language_string)),
|
||||
range: Some(range.clone())
|
||||
}
|
||||
}
|
||||
|
||||
fn make_primitives_port_desc_hover(
|
||||
primitives_text: Arc<PrimitiveText>,
|
||||
primitives_name: &str,
|
||||
@ -326,7 +364,7 @@ fn make_primitives_port_desc_hover(
|
||||
|
||||
let language_string = LanguageString {
|
||||
language: language_id.to_string(),
|
||||
value: name + " // " + &comment,
|
||||
value: "port ".to_string() + &name + " " + &comment,
|
||||
};
|
||||
Hover {
|
||||
contents: HoverContents::Scalar(MarkedString::LanguageString(language_string)),
|
||||
|
Loading…
x
Reference in New Issue
Block a user