From 6c4baeebd88352399059a8df8d38ebe3511588ea Mon Sep 17 00:00:00 2001 From: pommicket Date: Mon, 29 Sep 2025 13:29:56 -0400 Subject: Start code actions --- lsp-write.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'lsp-write.c') diff --git a/lsp-write.c b/lsp-write.c index c1c846a..e4caf4f 100644 --- a/lsp-write.c +++ b/lsp-write.c @@ -311,6 +311,8 @@ static const char *lsp_request_method(LSPRequest *request) { return "textDocument/rangeFormatting"; case LSP_REQUEST_FORMATTING: return "textDocument/formatting"; + case LSP_REQUEST_CODE_ACTION: + return "textDocument/codeAction"; } assert(0); return "$/ignore"; @@ -468,6 +470,9 @@ void write_request(LSP *lsp, LSPRequest *request, StrBuilder *builder) { write_key_obj_start(o, "publishDiagnostics"); write_key_bool(o, "codeDescriptionSupport", true); write_obj_end(o); + + write_key_obj_start(o, "codeAction"); + write_obj_end(o); write_obj_end(o); write_key_obj_start(o, "workspace"); write_key_bool(o, "workspaceFolders", true); @@ -670,6 +675,29 @@ void write_request(LSP *lsp, LSPRequest *request, StrBuilder *builder) { } write_obj_end(o); } break; + case LSP_REQUEST_CODE_ACTION: { + LSPRequestCodeAction *code_action = &request->data.code_action; + write_key_obj_start(o, "params"); + write_key_obj_start(o, "textDocument"); + write_key_file_uri(o, "uri", code_action->document); + write_obj_end(o); + write_key_range(o, "range", code_action->range); + write_key_obj_start(o, "context"); + write_key_arr_start(o, "diagnostics"); + write_arr_end(o); + write_key_arr_start(o, "only"); + write_arr_elem_string(o, "quickfix"); + write_arr_elem_string(o, "refactor"); + write_arr_elem_string(o, "refactor.extract"); + write_arr_elem_string(o, "refactor.inline"); + write_arr_elem_string(o, "refactor.rewrite"); + write_arr_elem_string(o, "source"); + write_arr_elem_string(o, "source.organizeImports"); + write_arr_elem_string(o, "source.fixAll"); + write_arr_end(o); + write_obj_end(o); + write_obj_end(o); + } break; } write_obj_end(o); -- cgit v1.2.3