summaryrefslogtreecommitdiff
path: root/src/main/lsp.c
diff options
context:
space:
mode:
authorAlbert Cervin <albert@acervin.com>2025-11-21 23:19:59 +0100
committerAlbert Cervin <albert@acervin.com>2025-11-21 23:19:59 +0100
commit715165b53f055b785e005984038bcae8d88142db (patch)
treede98a91d22fa0303cdfd552ecb8fd3ed8e3bb8a9 /src/main/lsp.c
parente04a05de866f9b903bd426bfc6a4bada9b70c89a (diff)
downloaddged-715165b53f055b785e005984038bcae8d88142db.tar.gz
dged-715165b53f055b785e005984038bcae8d88142db.tar.xz
dged-715165b53f055b785e005984038bcae8d88142db.zip
Fix so more than one file gets error highlights
The previous fix for that did not take multiple files into account.
Diffstat (limited to 'src/main/lsp.c')
-rw-r--r--src/main/lsp.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/main/lsp.c b/src/main/lsp.c
index de7f553..a8e806b 100644
--- a/src/main/lsp.c
+++ b/src/main/lsp.c
@@ -50,7 +50,6 @@ struct lsp_server {
enum position_encoding_kind position_encoding;
struct lsp_diagnostics *diagnostics;
- layer_id diagnostics_layer_id;
struct completion_ctx *completion_ctx;
};
@@ -193,15 +192,15 @@ request_response_received(struct lsp_server *server, uint64_t id,
static void buffer_updated(struct buffer *buffer, void *userdata) {
struct lsp_server *server = (struct lsp_server *)userdata;
- buffer_clear_text_property_layer(buffer, server->diagnostics_layer_id);
-
- diagnostic_vec *diagnostics =
+ struct lsp_buffer_diagnostics *diagnostics =
diagnostics_for_buffer(server->diagnostics, buffer);
if (diagnostics == NULL) {
return;
}
- VEC_FOR_EACH(diagnostics, struct diagnostic * diag) {
+ buffer_clear_text_property_layer(buffer, diagnostics->layer);
+
+ VEC_FOR_EACH(&diagnostics->diagnostics, struct diagnostic * diag) {
struct text_property prop;
prop.type = TextProperty_Colors;
uint32_t color = diag_severity_color(diag->severity);
@@ -217,7 +216,7 @@ static void buffer_updated(struct buffer *buffer, void *userdata) {
diag->region.begin, buffer_previous_char(buffer, diag->region.end));
buffer_add_text_property_to_layer(buffer, reg.begin, reg.end, prop,
- server->diagnostics_layer_id);
+ diagnostics->layer);
if (window_buffer(windows_get_active()) == buffer) {
struct buffer_view *bv = window_buffer_view(windows_get_active());
@@ -593,7 +592,6 @@ static void create_lsp_client(struct buffer *buffer, void *userdata) {
}
new->value.diagnostics = diagnostics_create();
- new->value.diagnostics_layer_id = buffer_add_text_property_layer(buffer);
// support for this is determined later
new->value.completion_ctx = NULL;