summaryrefslogtreecommitdiff
path: root/ide-definitions.c
diff options
context:
space:
mode:
Diffstat (limited to 'ide-definitions.c')
-rw-r--r--ide-definitions.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/ide-definitions.c b/ide-definitions.c
index d76925b..6c48e26 100644
--- a/ide-definitions.c
+++ b/ide-definitions.c
@@ -1,3 +1,8 @@
+void definition_cancel_lookup(Ted *ted) {
+ Definitions *defs = &ted->definitions;
+ lsp_cancel_request(ted_get_lsp_by_id(ted, defs->last_request_lsp), defs->last_request_id);
+ defs->last_request_id = 0;
+}
static SymbolKind symbol_kind_to_ted(LSPSymbolKind kind) {
switch (kind) {
@@ -51,8 +56,9 @@ void definition_goto(Ted *ted, LSP *lsp, const char *name, LSPDocumentPosition p
LSPRequest request = {.type = LSP_REQUEST_DEFINITION};
request.data.definition.position = position;
LSPRequestID id = lsp_send_request(lsp, &request);
- // @TODO : cancel old request
+ lsp_cancel_request(lsp, defs->last_request_id); // cancel old request
defs->last_request_id = id;
+ defs->last_request_lsp = lsp->id;
defs->last_request_time = ted->frame_time;
} else {
// just go to the tag
@@ -60,12 +66,6 @@ void definition_goto(Ted *ted, LSP *lsp, const char *name, LSPDocumentPosition p
}
}
-void definition_cancel_lookup(Ted *ted) {
- Definitions *defs = &ted->definitions;
- defs->last_request_id = 0;
-}
-
-
void definitions_frame(Ted *ted) {
Definitions *defs = &ted->definitions;
if (defs->last_request_id && timespec_sub(ted->frame_time, defs->last_request_time) > 0.2) {
@@ -193,6 +193,7 @@ void definitions_send_request_if_needed(Ted *ted) {
LSPRequestWorkspaceSymbols *syms = &request.data.workspace_symbols;
syms->query = str_dup(query);
defs->last_request_id = lsp_send_request(lsp, &request);
+ defs->last_request_lsp = lsp->id;
defs->last_request_time = ted->frame_time;
free(defs->last_request_query);
defs->last_request_query = query;
@@ -219,7 +220,7 @@ void definitions_selector_open(Ted *ted) {
void definitions_selector_close(Ted *ted) {
Definitions *defs = &ted->definitions;
definitions_clear_entries(defs);
- // @TODO : cancel
+ lsp_cancel_request(ted_get_lsp_by_id(ted, defs->last_request_lsp), defs->last_request_id);
defs->last_request_id = 0;
free(defs->last_request_query);
defs->last_request_query = NULL;