diff --git a/custom/4coder_default_colors.cpp b/custom/4coder_default_colors.cpp index e0820dd9..9a9ba453 100644 --- a/custom/4coder_default_colors.cpp +++ b/custom/4coder_default_colors.cpp @@ -123,7 +123,7 @@ set_default_color_scheme(Application_Links *app){ default_color_table.arrays[defcolor_list_item] = make_colors(arena, 0xFF181818); default_color_table.arrays[defcolor_list_item_hover] = make_colors(arena, 0xFF252525); default_color_table.arrays[defcolor_list_item_active] = make_colors(arena, 0xFF323232); - default_color_table.arrays[defcolor_cursor] = make_colors(arena, 0xFF00EE00); + default_color_table.arrays[defcolor_cursor] = make_colors(arena, 0xFF00EE00, 0xFFEE7700); default_color_table.arrays[defcolor_at_cursor] = make_colors(arena, 0xFF0C0C0C); default_color_table.arrays[defcolor_highlight_cursor_line] = make_colors(arena, 0xFF1E1E1E); default_color_table.arrays[defcolor_highlight] = make_colors(arena, 0xFFDDEE00); diff --git a/custom/4coder_default_framework_variables.cpp b/custom/4coder_default_framework_variables.cpp index bc8ded69..859143ff 100644 --- a/custom/4coder_default_framework_variables.cpp +++ b/custom/4coder_default_framework_variables.cpp @@ -86,5 +86,10 @@ global Mapping framework_mapping = {}; global Buffer_Modified_Set global_buffer_modified_set = {}; +//////////////////////////////// + +global b32 global_keyboard_macro_is_recording = false; +global Range_i64 global_keyboard_macro_range = {}; + // BOTTOM diff --git a/custom/4coder_draw.cpp b/custom/4coder_draw.cpp index 7ee104c6..006bbd31 100644 --- a/custom/4coder_draw.cpp +++ b/custom/4coder_draw.cpp @@ -706,17 +706,27 @@ draw_highlight_range(Application_Links *app, View_ID view_id, return(has_highlight_range); } +function i32 +default_cursor_sub_id(void){ + i32 result = 0; + if (global_keyboard_macro_is_recording){ + result = 1; + } + return(result); +} + function void draw_original_4coder_style_cursor_mark_highlight(Application_Links *app, View_ID view_id, b32 is_active_view, Buffer_ID buffer, Text_Layout_ID text_layout_id, f32 roundness, f32 outline_thickness){ b32 has_highlight_range = draw_highlight_range(app, view_id, buffer, text_layout_id, roundness); if (!has_highlight_range){ + i32 cursor_sub_id = default_cursor_sub_id(); i64 cursor_pos = view_get_cursor_pos(app, view_id); i64 mark_pos = view_get_mark_pos(app, view_id); if (is_active_view){ draw_character_block(app, text_layout_id, cursor_pos, roundness, - fcolor_id(defcolor_cursor)); + fcolor_id(defcolor_cursor, cursor_sub_id)); paint_text_color_pos(app, text_layout_id, cursor_pos, fcolor_id(defcolor_at_cursor)); draw_character_wire_frame(app, text_layout_id, mark_pos, @@ -729,7 +739,7 @@ draw_original_4coder_style_cursor_mark_highlight(Application_Links *app, View_ID fcolor_id(defcolor_mark)); draw_character_wire_frame(app, text_layout_id, cursor_pos, roundness, outline_thickness, - fcolor_id(defcolor_cursor)); + fcolor_id(defcolor_cursor, cursor_sub_id)); } } } @@ -740,6 +750,7 @@ draw_notepad_style_cursor_highlight(Application_Links *app, View_ID view_id, f32 roundness){ b32 has_highlight_range = draw_highlight_range(app, view_id, buffer, text_layout_id, roundness); if (!has_highlight_range){ + i32 cursor_sub_id = default_cursor_sub_id(); i64 cursor_pos = view_get_cursor_pos(app, view_id); i64 mark_pos = view_get_mark_pos(app, view_id); if (cursor_pos != mark_pos){ @@ -749,7 +760,7 @@ draw_notepad_style_cursor_highlight(Application_Links *app, View_ID view_id, paint_text_color_fcolor(app, text_layout_id, range, fcolor_id(defcolor_at_highlight)); } - draw_character_i_bar(app, text_layout_id, cursor_pos, fcolor_id(defcolor_cursor)); + draw_character_i_bar(app, text_layout_id, cursor_pos, fcolor_id(defcolor_cursor, cursor_sub_id)); } } diff --git a/custom/4coder_function_list.cpp b/custom/4coder_function_list.cpp index 1fcce23c..80ac51d8 100644 --- a/custom/4coder_function_list.cpp +++ b/custom/4coder_function_list.cpp @@ -277,13 +277,14 @@ CUSTOM_DOC("Creates a jump list of lines of the current buffer that appear to de CUSTOM_COMMAND_SIG(list_all_functions_current_buffer_lister) CUSTOM_DOC("Creates a lister of locations that look like function definitions and declarations in the buffer.") { + Heap *heap = &global_heap; View_ID view = get_active_view(app, Access_ReadVisible); Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); if (buffer != 0){ list_all_functions(app, buffer); view = get_active_view(app, Access_Always); buffer = view_get_buffer(app, view, Access_Always); - Marker_List *list = get_marker_list_for_buffer(buffer); + Marker_List *list = get_or_make_list_for_buffer(app, heap, buffer); if (list != 0){ Jump_Lister_Result jump = get_jump_index_from_user(app, list, "Function:"); @@ -301,13 +302,13 @@ CUSTOM_DOC("Creates a jump list of lines from all buffers that appear to define CUSTOM_COMMAND_SIG(list_all_functions_all_buffers_lister) CUSTOM_DOC("Creates a lister of locations that look like function definitions and declarations all buffers.") { + Heap *heap = &global_heap; list_all_functions(app, 0); View_ID view = get_active_view(app, Access_Always); Buffer_ID buffer = view_get_buffer(app, view, Access_Always); - Marker_List *list = get_marker_list_for_buffer(buffer); + Marker_List *list = get_or_make_list_for_buffer(app, heap, buffer); if (list != 0){ - Jump_Lister_Result jump = get_jump_index_from_user(app, list, - "Function:"); + Jump_Lister_Result jump = get_jump_index_from_user(app, list, "Function:"); jump_to_jump_lister_result(app, view, list, &jump); } } diff --git a/custom/4coder_jump_lister.cpp b/custom/4coder_jump_lister.cpp index d81cca76..5803d00c 100644 --- a/custom/4coder_jump_lister.cpp +++ b/custom/4coder_jump_lister.cpp @@ -59,9 +59,10 @@ jump_to_jump_lister_result(Application_Links *app, View_ID view, CUSTOM_COMMAND_SIG(view_jump_list_with_lister) CUSTOM_DOC("When executed on a buffer with jumps, creates a persistent lister for all the jumps") { + Heap *heap = &global_heap; View_ID view = get_active_view(app, Access_Always); Buffer_ID buffer = view_get_buffer(app, view, Access_Always); - Marker_List *list = get_marker_list_for_buffer(buffer); + Marker_List *list = get_or_make_list_for_buffer(app, heap, buffer); if (list != 0){ Jump_Lister_Result jump = get_jump_index_from_user(app, list, "Jump:"); jump_to_jump_lister_result(app, view, list, &jump); diff --git a/custom/4coder_keyboard_macro.cpp b/custom/4coder_keyboard_macro.cpp index 0d455c9c..eb721c11 100644 --- a/custom/4coder_keyboard_macro.cpp +++ b/custom/4coder_keyboard_macro.cpp @@ -4,9 +4,6 @@ // TOP -global b32 global_keyboard_macro_is_recording = false; -global Range_i64 global_keyboard_macro_range = {}; - function Buffer_ID get_keyboard_log_buffer(Application_Links *app){ return(get_buffer_by_name(app, string_u8_litexpr("*keyboard*"), Access_Always)); diff --git a/custom/generated/command_metadata.h b/custom/generated/command_metadata.h index db1e23b1..b45e901f 100644 --- a/custom/generated/command_metadata.h +++ b/custom/generated/command_metadata.h @@ -320,14 +320,14 @@ static Command_Metadata fcoder_metacmd_table[229] = { { PROC_LINKS(interactive_open_or_new, 0), true, "interactive_open_or_new", 23, "Interactively open a file out of the file system.", 49, "w:\\4ed\\code\\custom\\4coder_lists.cpp", 35, 563 }, { PROC_LINKS(interactive_switch_buffer, 0), true, "interactive_switch_buffer", 25, "Interactively switch to an open buffer.", 39, "w:\\4ed\\code\\custom\\4coder_lists.cpp", 35, 505 }, { PROC_LINKS(jump_to_definition, 0), true, "jump_to_definition", 18, "List all definitions in the code index and jump to one chosen by the user.", 74, "w:\\4ed\\code\\custom\\4coder_code_index_listers.cpp", 48, 12 }, -{ PROC_LINKS(keyboard_macro_finish_recording, 0), false, "keyboard_macro_finish_recording", 31, "Stop macro recording, do nothing if macro recording is not already started", 74, "w:\\4ed\\code\\custom\\4coder_keyboard_macro.cpp", 44, 57 }, -{ PROC_LINKS(keyboard_macro_replay, 0), false, "keyboard_macro_replay", 21, "Replay the most recently recorded keyboard macro", 48, "w:\\4ed\\code\\custom\\4coder_keyboard_macro.cpp", 44, 80 }, -{ PROC_LINKS(keyboard_macro_start_recording, 0), false, "keyboard_macro_start_recording", 30, "Start macro recording, do nothing if macro recording is already started", 71, "w:\\4ed\\code\\custom\\4coder_keyboard_macro.cpp", 44, 44 }, +{ PROC_LINKS(keyboard_macro_finish_recording, 0), false, "keyboard_macro_finish_recording", 31, "Stop macro recording, do nothing if macro recording is not already started", 74, "w:\\4ed\\code\\custom\\4coder_keyboard_macro.cpp", 44, 54 }, +{ PROC_LINKS(keyboard_macro_replay, 0), false, "keyboard_macro_replay", 21, "Replay the most recently recorded keyboard macro", 48, "w:\\4ed\\code\\custom\\4coder_keyboard_macro.cpp", 44, 77 }, +{ PROC_LINKS(keyboard_macro_start_recording, 0), false, "keyboard_macro_start_recording", 30, "Start macro recording, do nothing if macro recording is already started", 71, "w:\\4ed\\code\\custom\\4coder_keyboard_macro.cpp", 44, 41 }, { PROC_LINKS(kill_buffer, 0), false, "kill_buffer", 11, "Kills the current buffer.", 25, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1542 }, { PROC_LINKS(kill_tutorial, 0), false, "kill_tutorial", 13, "If there is an active tutorial, kill it.", 40, "w:\\4ed\\code\\custom\\4coder_tutorial.cpp", 38, 9 }, { PROC_LINKS(left_adjust_view, 0), false, "left_adjust_view", 16, "Sets the left size of the view near the x position of the cursor.", 65, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 211 }, -{ PROC_LINKS(list_all_functions_all_buffers, 0), false, "list_all_functions_all_buffers", 30, "Creates a jump list of lines from all buffers that appear to define or declare functions.", 89, "w:\\4ed\\code\\custom\\4coder_function_list.cpp", 43, 295 }, -{ PROC_LINKS(list_all_functions_all_buffers_lister, 0), false, "list_all_functions_all_buffers_lister", 37, "Creates a lister of locations that look like function definitions and declarations all buffers.", 95, "w:\\4ed\\code\\custom\\4coder_function_list.cpp", 43, 301 }, +{ PROC_LINKS(list_all_functions_all_buffers, 0), false, "list_all_functions_all_buffers", 30, "Creates a jump list of lines from all buffers that appear to define or declare functions.", 89, "w:\\4ed\\code\\custom\\4coder_function_list.cpp", 43, 296 }, +{ PROC_LINKS(list_all_functions_all_buffers_lister, 0), false, "list_all_functions_all_buffers_lister", 37, "Creates a lister of locations that look like function definitions and declarations all buffers.", 95, "w:\\4ed\\code\\custom\\4coder_function_list.cpp", 43, 302 }, { PROC_LINKS(list_all_functions_current_buffer, 0), false, "list_all_functions_current_buffer", 33, "Creates a jump list of lines of the current buffer that appear to define or declare functions.", 94, "w:\\4ed\\code\\custom\\4coder_function_list.cpp", 43, 267 }, { PROC_LINKS(list_all_functions_current_buffer_lister, 0), false, "list_all_functions_current_buffer_lister", 40, "Creates a lister of locations that look like function definitions and declarations in the buffer.", 97, "w:\\4ed\\code\\custom\\4coder_function_list.cpp", 43, 277 }, { PROC_LINKS(list_all_locations, 0), false, "list_all_locations", 18, "Queries the user for a string and lists all exact case-sensitive matches found in all open buffers.", 99, "w:\\4ed\\code\\custom\\4coder_search.cpp", 36, 162 }, diff --git a/ship_files/themes/theme-4coder.4coder b/ship_files/themes/theme-4coder.4coder index ad8da31d..224fb242 100644 --- a/ship_files/themes/theme-4coder.4coder +++ b/ship_files/themes/theme-4coder.4coder @@ -6,7 +6,7 @@ defcolor_margin_active = 0xFF323232; defcolor_list_item = defcolor_margin; defcolor_list_item_hover = defcolor_margin_hover; defcolor_list_item_active = defcolor_margin_active; -defcolor_cursor = 0xFF00EE00; +defcolor_cursor = {0xFF00EE00, 0xFFEE7700}; defcolor_at_cursor = defcolor_back; defcolor_highlight_cursor_line = 0xFF1E1E1E; defcolor_highlight = 0xFFDDEE00; diff --git a/ship_files/themes/theme-handmade-hero.4coder b/ship_files/themes/theme-handmade-hero.4coder index 1a314b8d..de1af82a 100644 --- a/ship_files/themes/theme-handmade-hero.4coder +++ b/ship_files/themes/theme-handmade-hero.4coder @@ -7,7 +7,7 @@ defcolor_margin_active = 0xFF404040; defcolor_list_item = defcolor_margin; defcolor_list_item_hover = defcolor_margin_hover; defcolor_list_item_active = defcolor_margin_active; -defcolor_cursor = 0xFF40FF40; +defcolor_cursor = {0xFF40FF40, 0xFFFF4040}; defcolor_at_cursor = defcolor_back; defcolor_highlight_cursor_line = 0xFF121E12; defcolor_highlight = 0xFF703419; diff --git a/ship_files/themes/theme-hjortshoej.4coder b/ship_files/themes/theme-hjortshoej.4coder index d7709ee4..917de699 100644 --- a/ship_files/themes/theme-hjortshoej.4coder +++ b/ship_files/themes/theme-hjortshoej.4coder @@ -7,7 +7,7 @@ defcolor_margin_active = 0xFF5C5C5C; defcolor_list_item = defcolor_margin; defcolor_list_item_hover = defcolor_margin_hover; defcolor_list_item_active = defcolor_margin_active; -defcolor_cursor = 0xFF000000; +defcolor_cursor = {0xFF000000, 0xFF002020}; defcolor_at_cursor = 0xFFD6D6D6; defcolor_highlight_cursor_line = 0xFFB8B098; defcolor_mark = 0xFF525252; diff --git a/ship_files/themes/theme-midnight.4coder b/ship_files/themes/theme-midnight.4coder index e77a1e46..cfa30340 100644 --- a/ship_files/themes/theme-midnight.4coder +++ b/ship_files/themes/theme-midnight.4coder @@ -6,7 +6,7 @@ defcolor_margin_active = 0xFF484848; defcolor_list_item = defcolor_margin; defcolor_list_item_hover = defcolor_margin_hover; defcolor_list_item_active = defcolor_margin_active; -defcolor_cursor = 0xFFDDDDDD; +defcolor_cursor = {0xFFDDDDDD, 0xFFDDF0F0}; defcolor_at_cursor = defcolor_back; defcolor_highlight_cursor_line = 0xFF383838; defcolor_mark = 0xFF808080; diff --git a/ship_files/themes/theme-stb-dark.4coder b/ship_files/themes/theme-stb-dark.4coder index c52c1728..5461f890 100644 --- a/ship_files/themes/theme-stb-dark.4coder +++ b/ship_files/themes/theme-stb-dark.4coder @@ -6,7 +6,7 @@ defcolor_margin_active = 0xFF484848; defcolor_list_item = defcolor_margin; defcolor_list_item_hover = defcolor_margin_hover; defcolor_list_item_active = defcolor_margin_active; -defcolor_cursor = 0xFFDDDDDD; +defcolor_cursor = {0xFFDDDDDD, 0xFFDDF0F0}; defcolor_at_cursor = defcolor_back; defcolor_highlight_cursor_line = 0xFF383838; defcolor_mark = 0xFF808080; diff --git a/ship_files/themes/theme-stb.4coder b/ship_files/themes/theme-stb.4coder index b8c0fc00..3cdce02b 100644 --- a/ship_files/themes/theme-stb.4coder +++ b/ship_files/themes/theme-stb.4coder @@ -6,7 +6,7 @@ defcolor_margin_active = 0xFF5C5C5C; defcolor_list_item = defcolor_margin; defcolor_list_item_hover = defcolor_margin_hover; defcolor_list_item_active = defcolor_margin_active; -defcolor_cursor = 0xFF000000; +defcolor_cursor = {0xFF000000, 0xFF002020}; defcolor_at_cursor = defcolor_back; defcolor_highlight_cursor_line = 0xFFBCBCBC; defcolor_mark = 0xFF525252; diff --git a/ship_files/themes/theme-strange.4coder b/ship_files/themes/theme-strange.4coder index b98b5d15..a023e650 100644 --- a/ship_files/themes/theme-strange.4coder +++ b/ship_files/themes/theme-strange.4coder @@ -7,7 +7,7 @@ defcolor_margin_active = 0xFF9A99E7; defcolor_list_item = defcolor_margin; defcolor_list_item_hover = defcolor_margin_hover; defcolor_list_item_active = defcolor_margin_active; -defcolor_cursor = 0xFFd96e26; +defcolor_cursor = {0xFFd96e26, 0xFFd9d926}; defcolor_at_cursor = defcolor_back; defcolor_highlight_cursor_line = 0xFF002222; defcolor_mark = 0xFF808080; diff --git a/ship_files/themes/theme-sunlight.4coder b/ship_files/themes/theme-sunlight.4coder index dd74810e..9439f4e3 100644 --- a/ship_files/themes/theme-sunlight.4coder +++ b/ship_files/themes/theme-sunlight.4coder @@ -6,7 +6,7 @@ defcolor_margin_active = 0xFFB7B7B7; defcolor_list_item = defcolor_margin; defcolor_list_item_hover = defcolor_margin_hover; defcolor_list_item_active = defcolor_margin_active; -defcolor_cursor = 0xFF222222; +defcolor_cursor = {0xFF222222, 0xFF442244}; defcolor_at_cursor = defcolor_back; defcolor_highlight_cursor_line = 0xFFC7C7C7; defcolor_mark = 0xFF797979; diff --git a/ship_files/themes/theme-twilight.4coder b/ship_files/themes/theme-twilight.4coder index 95a53d5d..ce266643 100644 --- a/ship_files/themes/theme-twilight.4coder +++ b/ship_files/themes/theme-twilight.4coder @@ -6,7 +6,7 @@ defcolor_margin_active = 0xFF405D82; defcolor_list_item = defcolor_margin; defcolor_list_item_hover = defcolor_margin_hover; defcolor_list_item_active = defcolor_margin_active; -defcolor_cursor = 0xFFEEE800; +defcolor_cursor = {0xFFEEE800, 0xFFEE00E8}; defcolor_at_cursor = defcolor_back; defcolor_highlight_cursor_line = 0xFF151F2A; defcolor_mark = 0xFF8BA8CC; diff --git a/ship_files/themes/theme-wombat.4coder b/ship_files/themes/theme-wombat.4coder index 2f5e2dc7..4a0501c2 100644 --- a/ship_files/themes/theme-wombat.4coder +++ b/ship_files/themes/theme-wombat.4coder @@ -7,7 +7,7 @@ defcolor_margin_active = 0xFF323232; defcolor_list_item = defcolor_margin; defcolor_list_item_hover = defcolor_margin_hover; defcolor_list_item_active = defcolor_margin_active; -defcolor_cursor = 0xFF656565; +defcolor_cursor = {0xFF656565, 0xFF654065}; defcolor_highlight = 0xFF636066; defcolor_mark = defcolor_cursor; defcolor_text_default = 0xFFe3e0d7;