diff --git a/src/definition/feature.rs b/src/definition/feature.rs index 343cf4c..22c06d5 100644 --- a/src/definition/feature.rs +++ b/src/definition/feature.rs @@ -123,11 +123,8 @@ fn goto_instantiation<'a>( if token_name == param.name { let def_path = server.srcs.hdl_param.find_module_definition_path(&module.name).unwrap(); let target_uri = Url::from_file_path(def_path).unwrap(); - let mut target_range = param.range.to_lsp_range(); - target_range.start.line -= 1; - target_range.start.character -= 1; - target_range.end.line -= 1; - target_range.end.character -= 1; + let target_range = param.range.clone(); + let target_range = target_range.to_lsp_range(); let link = vec![LocationLink { target_uri, @@ -155,8 +152,8 @@ fn goto_instantiation<'a>( if token_name == port.name { let def_path = server.srcs.hdl_param.find_module_definition_path(&module.name).unwrap(); let target_uri = Url::from_file_path(def_path).unwrap(); - let mut target_range = port.range.clone(); - let target_range = target_range.affine(-1, -1).to_lsp_range(); + let target_range = port.range.clone(); + let target_range = target_range.to_lsp_range(); let link = vec![LocationLink { target_uri, @@ -213,8 +210,8 @@ pub fn goto_module_declaration_definition( let def_path = server.srcs.hdl_param.find_module_definition_path(&module.name).unwrap(); let target_uri = Url::from_file_path(PathBuf::from_str(&def_path).unwrap()).unwrap(); - let mut target_range = module.range.clone(); - let target_range = target_range.affine(-1, -1).to_lsp_range(); + let target_range = module.range.clone(); + let target_range = target_range.to_lsp_range(); let link = vec![LocationLink { target_uri, diff --git a/src/definition/sv.rs b/src/definition/sv.rs index 056267c..929e629 100644 --- a/src/definition/sv.rs +++ b/src/definition/sv.rs @@ -30,7 +30,6 @@ pub fn goto_definition(server: &LSPServer, params: &GotoDefinitionParams) -> Opt } // match instance - let scope_tree = server.srcs.scope_tree.read().ok()?; // match position port & param diff --git a/src/hover/feature.rs b/src/hover/feature.rs index c82815f..ffa7dd1 100644 --- a/src/hover/feature.rs +++ b/src/hover/feature.rs @@ -223,8 +223,8 @@ fn goto_instantiation<'a>( None => return None }; - info!("current pos: {pos:#?}"); - info!("param_range: {param_range:#?}"); + // info!("current pos: {pos:#?}"); + // info!("param_range: {param_range:#?}"); // info!("position param find belong module: {:?}", module); for param in &module.params { @@ -244,8 +244,8 @@ fn goto_instantiation<'a>( None => return None }; - info!("current pos: {pos:#?}"); - info!("port_range: {port_range:#?}"); + // info!("current pos: {pos:#?}"); + // info!("port_range: {port_range:#?}"); // info!("position port find belong module: {:?}", module); for port in &module.ports { diff --git a/src/hover/sv.rs b/src/hover/sv.rs index e4b1471..4ceaa2b 100644 --- a/src/hover/sv.rs +++ b/src/hover/sv.rs @@ -33,20 +33,18 @@ pub fn hover(server: &LSPServer, params: &HoverParams) -> Option { return Some(hover); } - // info!("enter hover_position_port_param"); + info!("enter hover_position_port_param"); // match positional port param if let Some(hover) = hover_position_port_param(server, &line_text, doc, pos, &language_id) { return Some(hover); } - // info!("enter hover_module_declaration"); - + info!("enter hover_module_declaration"); // match module name if let Some(hover) = hover_module_declaration(server, &token, &language_id) { - // info!("[LSPServer] in hover: get module hover"); - + info!("[LSPServer] in hover: get module hover"); if hover_for_module(server, pos, doc) { - // info!("[LSPServer] in hover: it is instance"); + info!("[LSPServer] in hover: it is instance"); return Some(hover); } } @@ -302,14 +300,15 @@ fn hover_for_module(server: &LSPServer, pos: Position, doc: &Url) -> bool { let pathbuf = to_escape_path(&pathbuf); let path_string = pathbuf.to_str().unwrap().replace("\\", "/"); let hdlparam = server.srcs.hdl_param.clone(); - // info!("current pos: {pos:#?}"); + let find_instance_range = |_: &Module, instance: &Instance| { // info!("instance start pos: {:#?}", instance.range.start); - pos.line + 1 == instance.range.start.line + pos.line == instance.range.start.line }; let find_module_range = |module: &Module| { - pos.line + 1 == module.range.start.line + pos.line == module.range.start.line }; + if let Some(_) = hdlparam.walk_module(&path_string, find_module_range) { // info!("[LSPServer] in hover: it is module"); true