summaryrefslogtreecommitdiff
path: root/src/main/lsp.h
diff options
context:
space:
mode:
authorAlbert Cervin <albert@acervin.com>2024-09-17 08:47:03 +0200
committerAlbert Cervin <albert@acervin.com>2025-11-01 22:11:14 +0100
commit4459b8b3aa9d73895391785a99dcc87134e80601 (patch)
treea5204f447a0b2b05f63504c7fe958ef9bbf1918a /src/main/lsp.h
parent4689f3f38277bb64981fc960e8e384e2d065d659 (diff)
downloaddged-4459b8b3aa9d73895391785a99dcc87134e80601.tar.gz
dged-4459b8b3aa9d73895391785a99dcc87134e80601.tar.xz
dged-4459b8b3aa9d73895391785a99dcc87134e80601.zip
More lsp support
This makes the LSP support complete for now: - Completion - Diagnostics - Goto implementation/declaration - Rename - Documentation - Find references
Diffstat (limited to 'src/main/lsp.h')
-rw-r--r--src/main/lsp.h44
1 files changed, 43 insertions, 1 deletions
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 <stddef.h>
+
+#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