From 4459b8b3aa9d73895391785a99dcc87134e80601 Mon Sep 17 00:00:00 2001 From: Albert Cervin Date: Tue, 17 Sep 2024 08:47:03 +0200 Subject: More lsp support This makes the LSP support complete for now: - Completion - Diagnostics - Goto implementation/declaration - Rename - Documentation - Find references --- src/main/lsp.h | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) (limited to 'src/main/lsp.h') diff --git a/src/main/lsp.h b/src/main/lsp.h index 736282d..27d8c93 100644 --- a/src/main/lsp.h +++ b/src/main/lsp.h @@ -1,11 +1,53 @@ #ifndef _MAIN_LSP_H #define _MAIN_LSP_H +#include + +#include "dged/location.h" +#include "dged/lsp.h" +#include "dged/s8.h" +#include "dged/vec.h" + +#include "lsp/types.h" + struct reactor; struct buffers; +struct commands; -void lang_servers_init(struct reactor *reactor, struct buffers *buffers); +void lang_servers_init(struct reactor *reactor, struct buffers *buffers, + struct commands *commands); void lang_servers_update(void); void lang_servers_teardown(void); +struct lsp_server; +struct buffer; +struct workspace_edit; + +struct lsp_server *lsp_server_for_lang_id(const char *id); +struct lsp_server *lsp_server_for_buffer(struct buffer *buffer); + +void lsp_server_reload(struct lsp_server *server); +void lsp_server_shutdown(struct lsp_server *server); +struct lsp *lsp_backend(struct lsp_server *server); + +bool apply_edits(struct lsp_server *server, + const struct workspace_edit *ws_edit); + +void apply_edits_buffer(struct lsp_server *, struct buffer *, text_edit_vec, + struct location *); + +typedef void (*response_handler)(struct lsp_server *, struct lsp_response *, + void *); +uint64_t new_pending_request(struct lsp_server *server, + response_handler handler, void *userdata); + +struct region lsp_range_to_coordinates(struct lsp_server *server, + struct buffer *buffer, + struct region range); + +struct region region_to_lsp(struct buffer *buffer, struct region region, + struct lsp_server *server); + +struct lsp_diagnostics *lsp_server_diagnostics(struct lsp_server *server); + #endif -- cgit v1.2.3