update syntax highlighting on edits

memory-refactor
Patrick Cleaveliln 2025-07-19 23:09:18 +00:00
parent df283ee49b
commit 0a0681c704
2 changed files with 8 additions and 0 deletions

View File

@ -978,6 +978,8 @@ insert_content :: proc(buffer: ^FileBuffer, to_be_inserted: []u8, append_to_end:
update_file_buffer_index_from_cursor(buffer); update_file_buffer_index_from_cursor(buffer);
move_cursor_right(buffer, false, amt = len(to_be_inserted) - 1); 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) { 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.line = it.cursor.line
buffer.history.cursor.col = it.cursor.col 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) { 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) delete_text_in_span(buffer_piece_table(buffer), &selection.start.index, &selection.end.index)
buffer.history.cursor.index = selection.start.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}; delete_content :: proc{delete_content_from_buffer_cursor, delete_content_from_selection};

View File

@ -433,12 +433,14 @@ file_buffer_text_input_actions :: proc(input_map: ^core.InputActions) {
buffer := &(&(transmute(^core.Panel)user_data).type.(core.FileBufferPanel)).buffer buffer := &(&(transmute(^core.Panel)user_data).type.(core.FileBufferPanel)).buffer
core.pop_snapshot(&buffer.history, true) core.pop_snapshot(&buffer.history, true)
ts.parse_buffer(&buffer.tree, core.tree_sitter_file_buffer_input(buffer))
}, "Undo"); }, "Undo");
core.register_ctrl_key_action(input_map, .R, proc(state: ^core.State, user_data: rawptr) { 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 buffer := &(&(transmute(^core.Panel)user_data).type.(core.FileBufferPanel)).buffer
core.recover_snapshot(&buffer.history) core.recover_snapshot(&buffer.history)
ts.parse_buffer(&buffer.tree, core.tree_sitter_file_buffer_input(buffer))
}, "Redo"); }, "Redo");
// TODO: add shift+o to insert newline above current one // TODO: add shift+o to insert newline above current one