diff --git a/src/completion/feature.rs b/src/completion/feature.rs index e5c83ae..74a2607 100644 --- a/src/completion/feature.rs +++ b/src/completion/feature.rs @@ -162,10 +162,8 @@ fn get_position_port_param_completion( // 在当前文件的 fast 中寻找 for module in &hdl_file.fast.content { for instance in &module.instances { - if let Some(param_range) = &instance.instparams { - let mut param_range = param_range.clone(); - param_range.affine(-1, -1); - if param_range.contains(pos) { + if let Some(_) = &instance.instparams { + if instance.gen_dot_completion_param_range().contains(pos) { // 补全当前 module 的所有 param let inst_module = hdl_param.find_module_by_name(&instance.inst_type); if inst_module.is_some() { @@ -196,7 +194,7 @@ fn get_position_port_param_completion( } if instance.instports.is_some() { - let port_range = instance.gen_dot_completion_port_range(); + let port_range = instance.gen_dot_completion_port_range(); if port_range.contains(pos) { let inst_module = hdl_param.find_module_by_name(&instance.inst_type); if inst_module.is_some() { @@ -208,10 +206,10 @@ fn get_position_port_param_completion( ..CompletionItemLabelDetails::default() }; - let param_desc = make_port_desc(&port); + let port_desc = make_port_desc(&port); let c_item = CompletionItem { label: port.name, - detail: Some(param_desc), + detail: Some(port_desc), label_details: Some(label_details), kind: Some(CompletionItemKind::PROPERTY), ..CompletionItem::default() diff --git a/src/core/hdlparam.rs b/src/core/hdlparam.rs index b66ce32..63f4fd3 100644 --- a/src/core/hdlparam.rs +++ b/src/core/hdlparam.rs @@ -224,8 +224,8 @@ impl Instance { new_port_range.start.line = param_range.end.line - 1; new_port_range.start.character = param_range.end.character; } else { - new_port_range.start.line = self.range.end.line; - new_port_range.start.character = self.range.end.character + 1; + new_port_range.start.line = self.range.start.line; + new_port_range.start.character = self.range.start.character + 1; } new_port_range.end.line += 1; @@ -241,8 +241,8 @@ impl Instance { // TODO: 精心调制这个方法 if let Some(param_range) = &self.instparams { let mut new_param_range = param_range.clone(); - new_param_range.start.line = self.range.end.line; - new_param_range.start.character = self.range.end.character; + new_param_range.start.line = self.range.start.line; + new_param_range.start.character = self.range.start.character + 1; new_param_range.end.line += 1; return new_param_range; }