fix dot completion range

This commit is contained in:
light-ly 2024-11-02 13:20:19 +08:00
parent cdcea82947
commit dbac4132d0
2 changed files with 9 additions and 11 deletions

View File

@ -162,10 +162,8 @@ fn get_position_port_param_completion(
// 在当前文件的 fast 中寻找 // 在当前文件的 fast 中寻找
for module in &hdl_file.fast.content { for module in &hdl_file.fast.content {
for instance in &module.instances { for instance in &module.instances {
if let Some(param_range) = &instance.instparams { if let Some(_) = &instance.instparams {
let mut param_range = param_range.clone(); if instance.gen_dot_completion_param_range().contains(pos) {
param_range.affine(-1, -1);
if param_range.contains(pos) {
// 补全当前 module 的所有 param // 补全当前 module 的所有 param
let inst_module = hdl_param.find_module_by_name(&instance.inst_type); let inst_module = hdl_param.find_module_by_name(&instance.inst_type);
if inst_module.is_some() { if inst_module.is_some() {
@ -196,7 +194,7 @@ fn get_position_port_param_completion(
} }
if instance.instports.is_some() { 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) { if port_range.contains(pos) {
let inst_module = hdl_param.find_module_by_name(&instance.inst_type); let inst_module = hdl_param.find_module_by_name(&instance.inst_type);
if inst_module.is_some() { if inst_module.is_some() {
@ -208,10 +206,10 @@ fn get_position_port_param_completion(
..CompletionItemLabelDetails::default() ..CompletionItemLabelDetails::default()
}; };
let param_desc = make_port_desc(&port); let port_desc = make_port_desc(&port);
let c_item = CompletionItem { let c_item = CompletionItem {
label: port.name, label: port.name,
detail: Some(param_desc), detail: Some(port_desc),
label_details: Some(label_details), label_details: Some(label_details),
kind: Some(CompletionItemKind::PROPERTY), kind: Some(CompletionItemKind::PROPERTY),
..CompletionItem::default() ..CompletionItem::default()

View File

@ -224,8 +224,8 @@ impl Instance {
new_port_range.start.line = param_range.end.line - 1; new_port_range.start.line = param_range.end.line - 1;
new_port_range.start.character = param_range.end.character; new_port_range.start.character = param_range.end.character;
} else { } else {
new_port_range.start.line = self.range.end.line; new_port_range.start.line = self.range.start.line;
new_port_range.start.character = self.range.end.character + 1; new_port_range.start.character = self.range.start.character + 1;
} }
new_port_range.end.line += 1; new_port_range.end.line += 1;
@ -241,8 +241,8 @@ impl Instance {
// TODO: 精心调制这个方法 // TODO: 精心调制这个方法
if let Some(param_range) = &self.instparams { if let Some(param_range) = &self.instparams {
let mut new_param_range = param_range.clone(); let mut new_param_range = param_range.clone();
new_param_range.start.line = self.range.end.line; new_param_range.start.line = self.range.start.line;
new_param_range.start.character = self.range.end.character; new_param_range.start.character = self.range.start.character + 1;
new_param_range.end.line += 1; new_param_range.end.line += 1;
return new_param_range; return new_param_range;
} }