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 {
|
pub fn get_comment(&self, name: &str, text: &str) -> String {
|
||||||
if let Some(comment) = PrimitiveText::extract_pattern_comments(text).get(name) {
|
if let Some(comment) = PrimitiveText::extract_pattern_comments(text).get(name) {
|
||||||
(*comment).clone()
|
"// ".to_string() + comment
|
||||||
} else {
|
} else {
|
||||||
"".to_string()
|
"".to_string()
|
||||||
}
|
}
|
||||||
|
@ -227,11 +227,25 @@ fn goto_instantiation<'a>(
|
|||||||
// info!("param_range: {param_range:#?}");
|
// info!("param_range: {param_range:#?}");
|
||||||
// info!("position param find belong module: {:?}", module);
|
// info!("position param find belong module: {:?}", module);
|
||||||
|
|
||||||
for param in &module.params {
|
let file_type = server.srcs.hdl_param.find_file_type_by_module_name(&instance.inst_type);
|
||||||
if token_name == param.name {
|
if file_type == "primitives" {
|
||||||
let file_type = server.srcs.hdl_param.find_file_type_by_module_name(&instance.inst_type);
|
let primitives_text = server.srcs.primitive_text.clone();
|
||||||
let hover = make_param_desc_hover(&file_type, param, range, language_id);
|
let params_assignments = &module.instances.first().unwrap().intstparam_assignments;
|
||||||
return Some(hover);
|
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 hover = make_param_desc_hover(&file_type, param, range, language_id);
|
||||||
|
return Some(hover);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return None;
|
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);
|
let file_type = server.srcs.hdl_param.find_file_type_by_module_name(&instance.inst_type);
|
||||||
if file_type == "primitives" {
|
if file_type == "primitives" {
|
||||||
let primitives_text = server.srcs.primitive_text.clone();
|
let primitives_text = server.srcs.primitive_text.clone();
|
||||||
let instance_assignments = &module.instances.first().unwrap().intstport_assignments;
|
let port_assignments = &module.instances.first().unwrap().intstport_assignments;
|
||||||
for assignment in instance_assignments {
|
for assignment in port_assignments {
|
||||||
if assignment.port.clone().unwrap() == token_name {
|
if assignment.port.clone().unwrap() == token_name {
|
||||||
let hover = make_primitives_port_desc_hover(
|
let hover = make_primitives_port_desc_hover(
|
||||||
primitives_text, &instance.inst_type,
|
primitives_text, &instance.inst_type,
|
||||||
@ -310,6 +324,30 @@ pub fn hover_position_port_param(
|
|||||||
None
|
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(
|
fn make_primitives_port_desc_hover(
|
||||||
primitives_text: Arc<PrimitiveText>,
|
primitives_text: Arc<PrimitiveText>,
|
||||||
primitives_name: &str,
|
primitives_name: &str,
|
||||||
@ -326,7 +364,7 @@ fn make_primitives_port_desc_hover(
|
|||||||
|
|
||||||
let language_string = LanguageString {
|
let language_string = LanguageString {
|
||||||
language: language_id.to_string(),
|
language: language_id.to_string(),
|
||||||
value: name + " // " + &comment,
|
value: "port ".to_string() + &name + " " + &comment,
|
||||||
};
|
};
|
||||||
Hover {
|
Hover {
|
||||||
contents: HoverContents::Scalar(MarkedString::LanguageString(language_string)),
|
contents: HoverContents::Scalar(MarkedString::LanguageString(language_string)),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user