From 0a0681c704ad5d3e5d8add114d150c95ad36258e Mon Sep 17 00:00:00 2001 From: Patrick Cleaveliln Date: Sat, 19 Jul 2025 23:09:18 +0000 Subject: [PATCH] update syntax highlighting on edits --- src/core/file_buffer.odin | 6 ++++++ src/panels/file_buffer.odin | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/core/file_buffer.odin b/src/core/file_buffer.odin index abae2a9..0cf522b 100644 --- a/src/core/file_buffer.odin +++ b/src/core/file_buffer.odin @@ -978,6 +978,8 @@ insert_content :: proc(buffer: ^FileBuffer, to_be_inserted: []u8, append_to_end: update_file_buffer_index_from_cursor(buffer); move_cursor_right(buffer, false, amt = len(to_be_inserted) - 1); } + + ts.parse_buffer(&buffer.tree, tree_sitter_file_buffer_input(buffer)) } delete_content_from_buffer_cursor :: proc(buffer: ^FileBuffer, amount: int) { @@ -996,6 +998,8 @@ delete_content_from_buffer_cursor :: proc(buffer: ^FileBuffer, amount: int) { buffer.history.cursor.line = it.cursor.line buffer.history.cursor.col = it.cursor.col } + + ts.parse_buffer(&buffer.tree, tree_sitter_file_buffer_input(buffer)) } delete_content_from_selection :: proc(buffer: ^FileBuffer, selection: ^Selection) { @@ -1003,6 +1007,8 @@ delete_content_from_selection :: proc(buffer: ^FileBuffer, selection: ^Selection delete_text_in_span(buffer_piece_table(buffer), &selection.start.index, &selection.end.index) buffer.history.cursor.index = selection.start.index + + ts.parse_buffer(&buffer.tree, tree_sitter_file_buffer_input(buffer)) } delete_content :: proc{delete_content_from_buffer_cursor, delete_content_from_selection}; diff --git a/src/panels/file_buffer.odin b/src/panels/file_buffer.odin index 40ec8f0..f863ab9 100644 --- a/src/panels/file_buffer.odin +++ b/src/panels/file_buffer.odin @@ -433,12 +433,14 @@ file_buffer_text_input_actions :: proc(input_map: ^core.InputActions) { buffer := &(&(transmute(^core.Panel)user_data).type.(core.FileBufferPanel)).buffer core.pop_snapshot(&buffer.history, true) + ts.parse_buffer(&buffer.tree, core.tree_sitter_file_buffer_input(buffer)) }, "Undo"); core.register_ctrl_key_action(input_map, .R, proc(state: ^core.State, user_data: rawptr) { buffer := &(&(transmute(^core.Panel)user_data).type.(core.FileBufferPanel)).buffer core.recover_snapshot(&buffer.history) + ts.parse_buffer(&buffer.tree, core.tree_sitter_file_buffer_input(buffer)) }, "Redo"); // TODO: add shift+o to insert newline above current one