diff --git a/src/hover/feature.rs b/src/hover/feature.rs index 47831df..f81b9e5 100644 --- a/src/hover/feature.rs +++ b/src/hover/feature.rs @@ -528,7 +528,34 @@ fn hover_primitives_module_declaration( #[allow(unused)] def_path: &str ) -> Option { - None + let primitive_map = server.srcs.primitive_text.name_to_text.read().unwrap(); + + if let Some(text) = primitive_map.get(token_name) { + let mut markdowns = Vec::::new(); + + let mut lines: Vec<&str> = text.split_inclusive('\n').collect(); + + if lines.len() > 1 { + lines.remove(0); + lines.pop(); + } + + let profile_markdown = LanguageString { + language: "systemverilog".to_string(), + value: lines.join("") + }; + + markdowns.push(MarkedString::LanguageString(profile_markdown)); + + let hover = Hover { + contents: HoverContents::Array(markdowns), + range: None + }; + + Some(hover) + } else { + None + } }