aboutsummaryrefslogtreecommitdiff
path: root/src/server/hover.odin
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/hover.odin')
-rw-r--r--src/server/hover.odin27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/server/hover.odin b/src/server/hover.odin
index e22e539..d14cd34 100644
--- a/src/server/hover.odin
+++ b/src/server/hover.odin
@@ -16,6 +16,33 @@ import "core:slice"
import "shared:common"
import "shared:index"
+write_hover_content :: proc(ast_context: ^AstContext, symbol: index.Symbol) -> MarkupContent {
+ content: MarkupContent;
+
+ symbol := symbol;
+
+ if untyped, ok := symbol.value.(index.SymbolUntypedValue); ok {
+ switch untyped.type {
+ case .String: symbol.signature = "string";
+ case .Bool: symbol.signature = "bool";
+ case .Float: symbol.signature = "float";
+ case .Integer: symbol.signature = "int";
+ }
+ }
+
+ cat := concatenate_symbols_information(ast_context, symbol, false);
+
+ if cat != "" {
+ content.kind = "markdown";
+ content.value = fmt.tprintf("```odin\n %v\n```\n%v", cat, symbol.doc);
+ } else {
+ content.kind = "plaintext";
+ }
+
+ return content;
+}
+
+
get_hover_information :: proc(document: ^Document, position: common.Position) -> (Hover, bool) {
hover := Hover {