修复 hover 显示错误 bug
This commit is contained in:
parent
fcfa4b141a
commit
089d6ab161
2
rust_hdl
2
rust_hdl
@ -1 +1 @@
|
||||
Subproject commit 0a335218d2f8e469ed3f510d168e4cd4ad2c1057
|
||||
Subproject commit 47686dd663b8fd063f4064fea012088a89f7aeb3
|
@ -156,11 +156,15 @@ fn get_position_port_param_completion(
|
||||
let path = PathBuf::from_str(url.path()).unwrap();
|
||||
let path = to_escape_path(&path);
|
||||
let path_string = path.to_str().unwrap();
|
||||
info!("enter get_position_port_param_completion, pos: {pos:?}");
|
||||
if let Some(hdl_file) = fast_map.get(path_string) {
|
||||
info!("find hdl_file, content: {:?}", hdl_file.fast.content);
|
||||
// 在当前文件的 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) {
|
||||
// 补全当前 module 的所有 param
|
||||
let inst_module = hdl_param.find_module_by_name(&instance.inst_type);
|
||||
@ -178,7 +182,7 @@ fn get_position_port_param_completion(
|
||||
label: param.name,
|
||||
detail: Some(param_desc),
|
||||
label_details: Some(label_details),
|
||||
kind: Some(CompletionItemKind::CONSTANT),
|
||||
kind: Some(CompletionItemKind::TYPE_PARAMETER),
|
||||
..CompletionItem::default()
|
||||
};
|
||||
completion_items.push(c_item);
|
||||
@ -191,7 +195,8 @@ fn get_position_port_param_completion(
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(port_range) = &instance.instports {
|
||||
if instance.instports.is_some() {
|
||||
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,7 +213,7 @@ fn get_position_port_param_completion(
|
||||
label: port.name,
|
||||
detail: Some(param_desc),
|
||||
label_details: Some(label_details),
|
||||
kind: Some(CompletionItemKind::CONSTANT),
|
||||
kind: Some(CompletionItemKind::PROPERTY),
|
||||
..CompletionItem::default()
|
||||
};
|
||||
completion_items.push(c_item);
|
||||
|
@ -117,6 +117,44 @@ pub struct Instance {
|
||||
pub range: Range
|
||||
}
|
||||
|
||||
impl Instance {
|
||||
pub fn gen_dot_completion_port_range(&self) -> Range {
|
||||
// TODO: 精心调制这个方法
|
||||
if let Some(port_range) = &self.instports {
|
||||
let mut new_port_range = port_range.clone();
|
||||
|
||||
info!("get port range: {new_port_range:?}, instance: {self:?}");
|
||||
|
||||
if let Some(param_range) = &self.instparams {
|
||||
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.end.line += 1;
|
||||
new_port_range.affine(-1, -1);
|
||||
return new_port_range;
|
||||
}
|
||||
|
||||
self.range.clone()
|
||||
}
|
||||
|
||||
pub fn gen_dot_completion_param_range(&self) -> Range {
|
||||
// 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.end.line += 1;
|
||||
return new_param_range;
|
||||
}
|
||||
|
||||
self.range.clone()
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||
pub struct Module {
|
||||
pub name: String,
|
||||
|
@ -52,6 +52,13 @@ mod test_fast {
|
||||
assert!(hdlparam.is_some());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_parent() {
|
||||
let fast = sv_parser("/home/dide/project/digital-lsp-server/testfiles/parent.v");
|
||||
let fast = fast.unwrap();
|
||||
println!("{:#?}", fast.content);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_testfiles() {
|
||||
let ws_path = env::current_dir().unwrap();
|
||||
|
@ -36,7 +36,8 @@ dependence_1 u_dependence_1_2(
|
||||
.a(a),
|
||||
.b(b),
|
||||
.c(c),
|
||||
.Result(Qus)
|
||||
.Result(Qus),
|
||||
|
||||
);
|
||||
|
||||
dependence_3 u_dependence_3(
|
||||
|
Loading…
x
Reference in New Issue
Block a user