summaryrefslogtreecommitdiff
path: root/ide-definitions.c
diff options
context:
space:
mode:
authorpommicket <pommicket@gmail.com>2022-12-30 14:57:26 -0500
committerpommicket <pommicket@gmail.com>2022-12-30 14:57:26 -0500
commit547bfbba7a1ef84d397711882a501fc4914addba (patch)
treefd702946ac77db0c828e871f4ad90ae6fe99198b /ide-definitions.c
parentf2c8a3a77fdd7f397e04edcaf5dae5e7777f03b6 (diff)
show location in definitions menu
Diffstat (limited to 'ide-definitions.c')
-rw-r--r--ide-definitions.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/ide-definitions.c b/ide-definitions.c
index fa4d999..d76925b 100644
--- a/ide-definitions.c
+++ b/ide-definitions.c
@@ -76,6 +76,7 @@ void definitions_frame(Ted *ted) {
static void definitions_clear_entries(Definitions *defs) {
arr_foreach_ptr(defs->selector_all_definitions, SymbolInfo, def) {
free(def->name);
+ free(def->detail);
}
arr_clear(defs->selector_all_definitions);
arr_clear(defs->selector.entries);
@@ -107,6 +108,7 @@ static void definitions_selector_filter_entries(Ted *ted) {
SelectorEntry *entry = arr_addp(sel->entries);
entry->name = info->name;
entry->color = info->color;
+ entry->detail = info->detail;
}
}
free(search_term);
@@ -128,6 +130,7 @@ void definitions_process_lsp_response(Ted *ted, LSP *lsp, const LSPResponse *res
switch (response->request.type) {
case LSP_REQUEST_DEFINITION: {
+ // handle textDocument/definition response
const LSPResponseDefinition *response_def = &response->data.definition;
if (!arr_len(response_def->locations)) {
@@ -145,6 +148,7 @@ void definitions_process_lsp_response(Ted *ted, LSP *lsp, const LSPResponse *res
ted_go_to_lsp_document_position(ted, lsp, position);
} break;
case LSP_REQUEST_WORKSPACE_SYMBOLS: {
+ // handle workspace/symbol response
const LSPResponseWorkspaceSymbols *response_syms = &response->data.workspace_symbols;
const LSPSymbolInformation *symbols = response_syms->symbols;
const Settings *settings = ted_active_settings(ted);
@@ -161,6 +165,9 @@ void definitions_process_lsp_response(Ted *ted, LSP *lsp, const LSPResponse *res
def->color = colors[color_for_symbol_kind(kind)];
def->from_lsp = true;
def->position = lsp_location_start_position(symbol->location);
+ def->detail = a_sprintf("%s:%" PRIu32,
+ path_filename(lsp_document_path(lsp, def->position.document)),
+ def->position.pos.line + 1);
}
definitions_selector_filter_entries(ted);