diff options
Diffstat (limited to 'src/main/lsp.c')
| -rw-r--r-- | src/main/lsp.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/main/lsp.c b/src/main/lsp.c index ab9ba39..de7f553 100644 --- a/src/main/lsp.c +++ b/src/main/lsp.c @@ -50,6 +50,7 @@ struct lsp_server { enum position_encoding_kind position_encoding; struct lsp_diagnostics *diagnostics; + layer_id diagnostics_layer_id; struct completion_ctx *completion_ctx; }; @@ -192,6 +193,8 @@ 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 = diagnostics_for_buffer(server->diagnostics, buffer); if (diagnostics == NULL) { @@ -213,7 +216,8 @@ static void buffer_updated(struct buffer *buffer, void *userdata) { struct region reg = region_new( diag->region.begin, buffer_previous_char(buffer, diag->region.end)); - buffer_add_text_property(buffer, reg.begin, reg.end, prop); + buffer_add_text_property_to_layer(buffer, reg.begin, reg.end, prop, + server->diagnostics_layer_id); if (window_buffer(windows_get_active()) == buffer) { struct buffer_view *bv = window_buffer_view(windows_get_active()); @@ -589,6 +593,7 @@ 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; |
