Skip to content

Commit 59f9f10

Browse files
committed
Add cmd hover to alsp
1 parent b22a7df commit 59f9f10

1 file changed

Lines changed: 24 additions & 0 deletions

File tree

bin/alsp.c

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,23 @@ void showcompls(json_t *msg) {
208208
}
209209
}
210210

211+
void showhover(json_t *hover) {
212+
if (json_is_string(hover)) {
213+
printf("%s\n", json_string_value(hover));
214+
} else if (json_is_object(hover)) {
215+
printf("%s\n", json_string_value(GET(hover, "value")));
216+
}
217+
}
218+
219+
void showhovers(json_t *msg) {
220+
json_t *contents = GET(msg, "result", "contents");
221+
if (!json_is_array(contents)) {
222+
showhover(contents);
223+
} else for (size_t i = 0, n = json_array_size(contents); i < n; i++) {
224+
showhover(json_array_get(contents, i));
225+
}
226+
}
227+
211228
void showmatches(json_t *msg) {
212229
avim_buf data = NULL;
213230
avim_strv lines = NULL;
@@ -607,6 +624,8 @@ json_t *capabilities(void) {
607624
"documentSymbol", OBJ(
608625
"hierarchicalDocumentSymbolSupport",
609626
JSON(true)),
627+
"hover", OBJ(
628+
"contentFormat", JSON(string, "plaintext")),
610629
"implementation", JSON(object),
611630
"references", JSON(object),
612631
"typeDefinition", JSON(object),
@@ -759,6 +778,10 @@ void cmd_def(void) {
759778
txtdoc("textDocument/definition", gotomatch, JSON(object));
760779
}
761780

781+
void cmd_hover(void) {
782+
txtdoc("textDocument/hover", showhovers, JSON(object));
783+
}
784+
762785
void cmd_impl(void) {
763786
txtdoc("textDocument/implementation", gotomatch, JSON(object));
764787
}
@@ -798,6 +821,7 @@ void initmenu(json_t *cap) {
798821
addcmd("compl", cmd_compl, cap, "completionProvider");
799822
addcmd("decl", cmd_decl, cap, "declarationProvider");
800823
addcmd("def", cmd_def, cap, "definitionProvider");
824+
addcmd("hover", cmd_hover, cap, "hoverProvider");
801825
addcmd("impl", cmd_impl, cap, "implementationProvider");
802826
addcmd("all-", cmd_all_refs, cap, "referencesProvider");
803827
addcmd("refs", cmd_refs, cap, "referencesProvider");

0 commit comments

Comments
 (0)