summaryrefslogtreecommitdiff
path: root/lsp.c
diff options
context:
space:
mode:
authorpommicket <pommicket@gmail.com>2025-09-30 12:20:54 -0400
committerpommicket <pommicket@gmail.com>2025-09-30 12:20:54 -0400
commit13143e9d1a78c8e0135336bbfcc922ef28c0196a (patch)
tree24edf3f18907c3fda07cc2afabfcd5d9d8d72056 /lsp.c
parent345c3b1cc5aef6546a2880b5717bc861ffe65def (diff)
Handle java.apply.workspaceEdit
Diffstat (limited to 'lsp.c')
-rw-r--r--lsp.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/lsp.c b/lsp.c
index 32ccf29..13e9862 100644
--- a/lsp.c
+++ b/lsp.c
@@ -153,7 +153,7 @@ void lsp_request_free(LSPRequest *r) {
memset(r, 0, sizeof *r);
}
-static void lsp_workspace_edit_free(LSPWorkspaceEdit *edit) {
+void lsp_workspace_edit_free(LSPWorkspaceEdit *edit) {
arr_foreach_ptr(edit->changes, LSPWorkspaceChange, c) {
if (c->type == LSP_CHANGE_EDITS) {
arr_free(c->data.edit.edits);
@@ -196,6 +196,12 @@ void lsp_response_free(LSPResponse *r) {
case LSP_REQUEST_CODE_ACTION: {
LSPResponseCodeAction *c = &r->data.code_action;
arr_foreach_ptr(c->actions, LSPCodeAction, action) {
+ switch (action->command.kind) {
+ case LSP_COMMAND_WORKSPACE_EDIT:
+ lsp_workspace_edit_free(&action->command.data.edit);
+ break;
+ default: break;
+ }
lsp_workspace_edit_free(&action->edit);
}
arr_free(c->actions);
@@ -465,7 +471,7 @@ static bool lsp_receive(LSP *lsp, size_t max_size) {
arr_hdr_(lsp->received_data)->len = (u32)received_so_far;
lsp->received_data[received_so_far] = '\0';// null terminate
#if LSP_SHOW_S2C
- const int limit = 1000;
+ const int limit = 10000;
debug_println("%s%.*s%s%s",term_italics(stdout),limit,lsp->received_data,
strlen(lsp->received_data) > (size_t)limit ? "..." : "",
term_clear(stdout));