Fix scroll/cursor linking (need more generic version though); cleanup access system; remove some unecessary enum types
							parent
							
								
									e3c4caf076
								
							
						
					
					
						commit
						8d4626f27c
					
				
							
								
								
									
										2
									
								
								4ed.cpp
								
								
								
								
							
							
						
						
									
										2
									
								
								4ed.cpp
								
								
								
								
							|  | @ -439,8 +439,6 @@ App_Init_Sig(app_init){ | |||
|     // NOTE(allen): miscellaneous init
 | ||||
|     hot_directory_init(arena, &models->hot_directory, current_directory); | ||||
|     child_process_container_init(models->tctx->allocator, &models->child_processes); | ||||
|     models->user_up_key = KeyCode_Up; | ||||
|     models->user_down_key = KeyCode_Down; | ||||
|     models->period_wakeup_timer = system_wake_up_timer_create(); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -10,8 +10,8 @@ | |||
| // TOP
 | ||||
| 
 | ||||
| function b32 | ||||
| access_test(u32 lock_flags, u32 access_flags){ | ||||
|     return((lock_flags & ~access_flags) == 0); | ||||
| access_test(Access_Flag object_flags, Access_Flag access_flags){ | ||||
|     return((object_flags & access_flags) == access_flags); | ||||
| } | ||||
| 
 | ||||
| function b32 | ||||
|  | @ -49,8 +49,7 @@ is_running_coroutine(Application_Links *app){ | |||
| } | ||||
| 
 | ||||
| api(custom) function b32 | ||||
| global_set_setting(Application_Links *app, Global_Setting_ID setting, i64 value) | ||||
| { | ||||
| global_set_setting(Application_Links *app, Global_Setting_ID setting, i64 value){ | ||||
|     Models *models = (Models*)app->cmd_context; | ||||
|     b32 result = true; | ||||
|     switch (setting){ | ||||
|  | @ -1116,15 +1115,16 @@ view_get_panel(Application_Links *app, View_ID view_id){ | |||
| } | ||||
| 
 | ||||
| api(custom) function View_ID | ||||
| panel_get_view(Application_Links *app, Panel_ID panel_id){ | ||||
| panel_get_view(Application_Links *app, Panel_ID panel_id, Access_Flag access){ | ||||
|     Models *models = (Models*)app->cmd_context; | ||||
|     Panel *panel = imp_get_panel(models, panel_id); | ||||
|     View_ID result = 0; | ||||
|     if (api_check_panel(panel)){ | ||||
|         if (panel->kind == PanelKind_Final){ | ||||
|             View *view = panel->view; | ||||
|             Assert(view != 0); | ||||
|             result = view_get_id(&models->live_set, view); | ||||
|             if (api_check_view(view, access)){ | ||||
|                 result = view_get_id(&models->live_set, view); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     return(result); | ||||
|  | @ -1157,17 +1157,20 @@ panel_is_leaf(Application_Links *app, Panel_ID panel_id){ | |||
| } | ||||
| 
 | ||||
| api(custom) function b32 | ||||
| panel_split(Application_Links *app, Panel_ID panel_id, Panel_Split_Orientation orientation){ | ||||
| panel_split(Application_Links *app, Panel_ID panel_id, Dimension split_dim){ | ||||
|     Models *models = (Models*)app->cmd_context; | ||||
|     Layout *layout = &models->layout; | ||||
|     b32 result = false; | ||||
|     Panel *panel = imp_get_panel(models, panel_id); | ||||
|     if (api_check_panel(panel)){ | ||||
|         Panel *new_panel = 0; | ||||
|         if (layout_split_panel(layout, panel, (orientation == PanelSplit_LeftAndRight), &new_panel)){ | ||||
|         if (layout_split_panel(layout, panel, (split_dim == Dimension_X), | ||||
|                                &new_panel)){ | ||||
|             Live_Views *live_set = &models->live_set; | ||||
|             View *new_view = live_set_alloc_view(&models->lifetime_allocator, live_set, new_panel); | ||||
|             view_init(models, new_view, models->scratch_buffer, models->view_event_handler); | ||||
|             View *new_view = live_set_alloc_view(&models->lifetime_allocator, | ||||
|                                                  live_set, new_panel); | ||||
|             view_init(models, new_view, models->scratch_buffer, | ||||
|                       models->view_event_handler); | ||||
|             result = true; | ||||
|         } | ||||
|     } | ||||
|  | @ -1175,7 +1178,8 @@ panel_split(Application_Links *app, Panel_ID panel_id, Panel_Split_Orientation o | |||
| } | ||||
| 
 | ||||
| api(custom) function b32 | ||||
| panel_set_split(Application_Links *app, Panel_ID panel_id, Panel_Split_Kind kind, float t){ | ||||
| panel_set_split(Application_Links *app, Panel_ID panel_id, Panel_Split_Kind kind, | ||||
|                 f32 t){ | ||||
|     Models *models = (Models*)app->cmd_context; | ||||
|     Layout *layout = &models->layout; | ||||
|     b32 result = false; | ||||
|  | @ -1236,7 +1240,7 @@ panel_get_parent(Application_Links *app, Panel_ID panel_id){ | |||
| } | ||||
| 
 | ||||
| api(custom) function Panel_ID | ||||
| panel_get_child(Application_Links *app, Panel_ID panel_id, Panel_Child which_child){ | ||||
| panel_get_child(Application_Links *app, Panel_ID panel_id, Side which_child){ | ||||
|     Models *models = (Models*)app->cmd_context; | ||||
|     Layout *layout = &models->layout; | ||||
|     Panel *panel = imp_get_panel(models, panel_id); | ||||
|  | @ -1245,11 +1249,11 @@ panel_get_child(Application_Links *app, Panel_ID panel_id, Panel_Child which_chi | |||
|         if (panel->kind == PanelKind_Intermediate){ | ||||
|             Panel *child = 0; | ||||
|             switch (which_child){ | ||||
|                 case PanelChild_Min: | ||||
|                 case Side_Min: | ||||
|                 { | ||||
|                     child = panel->tl_panel; | ||||
|                 }break; | ||||
|                 case PanelChild_Max: | ||||
|                 case Side_Max: | ||||
|                 { | ||||
|                     child = panel->br_panel; | ||||
|                 }break; | ||||
|  | @ -1587,7 +1591,7 @@ view_current_context(Application_Links *app, View_ID view_id){ | |||
|     View *view = imp_get_view(models, view_id); | ||||
|     View_Context result = {}; | ||||
|     if (api_check_view(view)){ | ||||
|         result = view_current_context(models, view); | ||||
|         result = view_current_context(view); | ||||
|     } | ||||
|     return(result); | ||||
| } | ||||
|  | @ -1599,7 +1603,7 @@ view_current_context_hook_memory(Application_Links *app, View_ID view_id, | |||
|     View *view = imp_get_view(models, view_id); | ||||
|     Data result = {}; | ||||
|     if (api_check_view(view)){ | ||||
|         View_Context_Node *ctx = view_current_context_node(models, view); | ||||
|         View_Context_Node *ctx = view_current_context_node(view); | ||||
|         if (ctx != 0){ | ||||
|             switch (hook_id){ | ||||
|                 case HookID_DeltaRule: | ||||
|  | @ -2586,16 +2590,6 @@ set_hot_directory(Application_Links *app, String_Const_u8 string) | |||
|     return(true); | ||||
| } | ||||
| 
 | ||||
| api(custom) function void | ||||
| set_gui_up_down_keys(Application_Links *app, Key_Code up_key, Key_Modifier up_key_modifier, Key_Code down_key, Key_Modifier down_key_modifier) | ||||
| { | ||||
|     Models *models = (Models*)app->cmd_context; | ||||
|     models->user_up_key = up_key; | ||||
|     models->user_up_key_modifier = up_key_modifier; | ||||
|     models->user_down_key = down_key; | ||||
|     models->user_down_key_modifier = down_key_modifier; | ||||
| } | ||||
| 
 | ||||
| api(custom) function void | ||||
| send_exit_signal(Application_Links *app) | ||||
| { | ||||
|  |  | |||
|  | @ -88,12 +88,6 @@ struct Models{ | |||
|      | ||||
|     b32 keep_playing; | ||||
|      | ||||
|     // TODO(allen): do(eliminate user_*_key* nonsense from the core)
 | ||||
|     Key_Code user_up_key; | ||||
|     Key_Code user_down_key; | ||||
|     Key_Modifier user_up_key_modifier; | ||||
|     Key_Modifier user_down_key_modifier; | ||||
|      | ||||
|     b32 has_new_title; | ||||
|     char *title_space; | ||||
|     i32 title_capacity; | ||||
|  |  | |||
|  | @ -56,11 +56,11 @@ file_get_face(Models *models, Editing_File *file){ | |||
|     return(font_set_face_from_id(&models->font_set, file->settings.face_id)); | ||||
| } | ||||
| 
 | ||||
| internal u32 | ||||
| internal Access_Flag | ||||
| file_get_access_flags(Editing_File *file){ | ||||
|     u32 flags = 0; | ||||
|     if (file->settings.read_only){ | ||||
|         flags |= AccessProtected; | ||||
|     Access_Flag flags = Access_Read|Access_Visible; | ||||
|     if (!file->settings.read_only){ | ||||
|         flags |= Access_Write; | ||||
|     } | ||||
|     return(flags); | ||||
| } | ||||
|  |  | |||
							
								
								
									
										66
									
								
								4ed_view.cpp
								
								
								
								
							
							
						
						
									
										66
									
								
								4ed_view.cpp
								
								
								
								
							|  | @ -77,14 +77,14 @@ view_get_map(View *view){ | |||
|     return(view->file->settings.base_map_id); | ||||
| } | ||||
| 
 | ||||
| internal u32 | ||||
| internal Access_Flag | ||||
| view_get_access_flags(View *view){ | ||||
|     u32 result = AccessOpen; | ||||
|     Access_Flag result = file_get_access_flags(view->file); | ||||
|     View_Context_Node *node = view->ctx; | ||||
|     if (node != 0 && node->ctx.hides_buffer){ | ||||
|         result |= AccessHidden; | ||||
|     b32 hides_buffer = (node != 0 && node->ctx.hides_buffer); | ||||
|     if (hides_buffer){ | ||||
|         RemFlag(result, Access_Visible); | ||||
|     } | ||||
|     result |= file_get_access_flags(view->file); | ||||
|     return(result); | ||||
| } | ||||
| 
 | ||||
|  | @ -281,31 +281,6 @@ view_compute_cursor(View *view, Buffer_Seek seek){ | |||
| 
 | ||||
| ////////////////////////////////
 | ||||
| 
 | ||||
| internal Interval_f32 | ||||
| view_acceptable_y(f32 view_height, f32 line_height){ | ||||
|     Interval_f32 acceptable_y = {}; | ||||
|     if (view_height <= line_height*5.f){ | ||||
|         if (view_height < line_height){ | ||||
|             acceptable_y.max = view_height; | ||||
|         } | ||||
|         else{ | ||||
|             acceptable_y.max = view_height - line_height; | ||||
|         } | ||||
|     } | ||||
|     else{ | ||||
|         acceptable_y = If32(line_height*2.f, view_height - line_height*2.f); | ||||
|     } | ||||
|     return(acceptable_y); | ||||
| } | ||||
| 
 | ||||
| internal Vec2_f32 | ||||
| view_safety_margin(f32 view_width, f32 acceptable_y_height, f32 line_height, f32 typical_advance){ | ||||
|     Vec2_f32 safety = {}; | ||||
|     safety.y = min(line_height*5.f, (acceptable_y_height + 1.f)*0.5f); | ||||
|     safety.x = min(view_width*0.5f, typical_advance*8.f); | ||||
|     return(safety); | ||||
| } | ||||
| 
 | ||||
| internal b32 | ||||
| view_move_view_to_cursor(Models *models, View *view, Buffer_Scroll *scroll){ | ||||
|     Editing_File *file = view->file; | ||||
|  | @ -320,23 +295,21 @@ view_move_view_to_cursor(Models *models, View *view, Buffer_Scroll *scroll){ | |||
|      | ||||
|     f32 line_height = face->line_height; | ||||
|     f32 typical_advance = face->typical_advance; | ||||
|     Interval_f32 acceptable_y = view_acceptable_y(view_dim.y, line_height); | ||||
|     Vec2_f32 safety = view_safety_margin(view_dim.x, range_size(acceptable_y), line_height, typical_advance); | ||||
|      | ||||
|     Vec2_f32 target_p_relative = {}; | ||||
|     if (p.y < acceptable_y.min){ | ||||
|         target_p_relative.y = p.y - safety.y; | ||||
|     if (p.y < 0.f){ | ||||
|         target_p_relative.y = p.y - line_height*1.5f; | ||||
|     } | ||||
|     else if (p.y > acceptable_y.max){ | ||||
|         target_p_relative.y = (p.y + safety.y) - view_dim.y; | ||||
|     else if (p.y > view_dim.y){ | ||||
|         target_p_relative.y = (p.y + line_height*1.5f) - view_dim.y; | ||||
|     } | ||||
|     if (p.x < 0.f){ | ||||
|         target_p_relative.x = p.x - safety.x; | ||||
|         target_p_relative.x = p.x - typical_advance*1.5f; | ||||
|     } | ||||
|     else if (p.x > view_dim.x){ | ||||
|         target_p_relative.x = (p.x + safety.x) - view_dim.x; | ||||
|         target_p_relative.x = (p.x + typical_advance*1.5f) - view_dim.x; | ||||
|     } | ||||
|     scroll->target.pixel_shift = target_p_relative; | ||||
|     scroll->target.pixel_shift += target_p_relative; | ||||
|     scroll->target = view_normalize_buffer_point(models, view, scroll->target); | ||||
|     scroll->target.pixel_shift.x = f32_round32(scroll->target.pixel_shift.x); | ||||
|     scroll->target.pixel_shift.y = f32_round32(scroll->target.pixel_shift.y); | ||||
|  | @ -355,16 +328,13 @@ view_move_cursor_to_view(Models *models, View *view, Buffer_Scroll scroll, i64 * | |||
|     p -= scroll.target.pixel_shift; | ||||
|      | ||||
|     f32 line_height = face->line_height; | ||||
|     Interval_f32 acceptable_y = view_acceptable_y(view_dim.y, line_height); | ||||
|     Vec2_f32 safety = view_safety_margin(view_dim.x, range_size(acceptable_y), | ||||
|                                          line_height, face->typical_advance); | ||||
|      | ||||
|     b32 adjusted_y = true; | ||||
|     if (p.y < acceptable_y.min){ | ||||
|         p.y = acceptable_y.min + safety.y; | ||||
|     if (p.y < 0.f){ | ||||
|         p.y = line_height*1.5f; | ||||
|     } | ||||
|     else if (p.y > acceptable_y.max){ | ||||
|         p.y = acceptable_y.max - safety.y; | ||||
|     else if (p.y > view_dim.y){ | ||||
|         p.y = view_dim.y - line_height*1.5f; | ||||
|     } | ||||
|     else{ | ||||
|         adjusted_y = false; | ||||
|  | @ -470,12 +440,12 @@ view_pop_context(View *view){ | |||
| } | ||||
| 
 | ||||
| function View_Context_Node* | ||||
| view_current_context_node(Models *models, View *view){ | ||||
| view_current_context_node(View *view){ | ||||
|     return(view->ctx); | ||||
| } | ||||
| 
 | ||||
| function View_Context | ||||
| view_current_context(Models *models, View *view){ | ||||
| view_current_context(View *view){ | ||||
|     View_Context ctx = {}; | ||||
|     View_Context_Node *node = view->ctx; | ||||
|     if (node != 0){ | ||||
|  |  | |||
|  | @ -356,8 +356,8 @@ auto_indent_buffer(Application_Links *app, Buffer_ID buffer, Range_i64 pos){ | |||
| CUSTOM_COMMAND_SIG(auto_indent_whole_file) | ||||
| CUSTOM_DOC("Audo-indents the entire current buffer.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     i64 buffer_size = buffer_get_size(app, buffer); | ||||
|     auto_indent_buffer(app, buffer, Ii64(0, buffer_size)); | ||||
| } | ||||
|  | @ -365,8 +365,8 @@ CUSTOM_DOC("Audo-indents the entire current buffer.") | |||
| CUSTOM_COMMAND_SIG(auto_indent_line_at_cursor) | ||||
| CUSTOM_DOC("Auto-indents the line on which the cursor sits.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     auto_indent_buffer(app, buffer, Ii64(pos)); | ||||
|     move_past_lead_whitespace(app, view, buffer); | ||||
|  | @ -375,8 +375,8 @@ CUSTOM_DOC("Auto-indents the line on which the cursor sits.") | |||
| CUSTOM_COMMAND_SIG(auto_indent_range) | ||||
| CUSTOM_DOC("Auto-indents the range between the cursor and the mark.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     Range_i64 range = get_view_range(app, view); | ||||
|     auto_indent_buffer(app, buffer, range); | ||||
|     move_past_lead_whitespace(app, view, buffer); | ||||
|  | @ -403,8 +403,8 @@ CUSTOM_DOC("Inserts text and auto-indents the line on which the cursor sits if a | |||
|             } | ||||
|         } | ||||
|         if (do_auto_indent){ | ||||
|             View_ID view = get_active_view(app, AccessOpen); | ||||
|             Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|             View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|             Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|             Range_i64 pos = {}; | ||||
|             pos.min = view_get_cursor_pos(app, view); | ||||
|             write_text_input(app); | ||||
|  |  | |||
|  | @ -8,13 +8,13 @@ moving the cursor, which work even without the default 4coder framework. | |||
| function void | ||||
| write_character_parameter(Application_Links *app, String_Const_u8 insert){ | ||||
|     if (insert.str != 0 && insert.size > 0){ | ||||
|         View_ID view = get_active_view(app, AccessOpen); | ||||
|         View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|         if_view_has_highlighted_range_delete_range(app, view); | ||||
|          | ||||
|         i64 pos = view_get_cursor_pos(app, view); | ||||
|         pos = view_get_character_legal_pos_from_pos(app, view, pos); | ||||
|          | ||||
|         Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|         Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|          | ||||
|         // NOTE(allen): consecutive inserts merge logic
 | ||||
|         History_Record_Index first_index = buffer_history_get_current_state_index(app, buffer); | ||||
|  | @ -78,9 +78,9 @@ CUSTOM_DOC("Inserts an underscore.") | |||
| CUSTOM_COMMAND_SIG(delete_char) | ||||
| CUSTOM_DOC("Deletes the character to the right of the cursor.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     if (!if_view_has_highlighted_range_delete_range(app, view)){ | ||||
|         Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|         Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|         i64 start = view_get_cursor_pos(app, view); | ||||
|         i64 buffer_size = buffer_get_size(app, buffer); | ||||
|         if (0 <= start && start < buffer_size){ | ||||
|  | @ -95,9 +95,9 @@ CUSTOM_DOC("Deletes the character to the right of the cursor.") | |||
| CUSTOM_COMMAND_SIG(backspace_char) | ||||
| CUSTOM_DOC("Deletes the character to the left of the cursor.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     if (!if_view_has_highlighted_range_delete_range(app, view)){ | ||||
|         Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|         Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|         i64 end = view_get_cursor_pos(app, view); | ||||
|         i64 buffer_size = buffer_get_size(app, buffer); | ||||
|         if (0 < end && end <= buffer_size){ | ||||
|  | @ -114,7 +114,7 @@ CUSTOM_DOC("Deletes the character to the left of the cursor.") | |||
| CUSTOM_COMMAND_SIG(set_mark) | ||||
| CUSTOM_DOC("Sets the mark to the current position of the cursor.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     view_set_mark(app, view, seek_pos(pos)); | ||||
|     view_set_cursor_and_preferred_x(app, view, seek_pos(pos)); | ||||
|  | @ -123,7 +123,7 @@ CUSTOM_DOC("Sets the mark to the current position of the cursor.") | |||
| CUSTOM_COMMAND_SIG(cursor_mark_swap) | ||||
| CUSTOM_DOC("Swaps the position of the cursor and the mark.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     i64 cursor = view_get_cursor_pos(app, view); | ||||
|     i64 mark = view_get_mark_pos(app, view); | ||||
|     view_set_cursor_and_preferred_x(app, view, seek_pos(mark)); | ||||
|  | @ -133,16 +133,16 @@ CUSTOM_DOC("Swaps the position of the cursor and the mark.") | |||
| CUSTOM_COMMAND_SIG(delete_range) | ||||
| CUSTOM_DOC("Deletes the text in the range between the cursor and the mark.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     Range_i64 range = get_view_range(app, view); | ||||
|     buffer_replace_range(app, buffer, range, string_u8_empty); | ||||
| } | ||||
| 
 | ||||
| function  void | ||||
| current_view_boundary_delete(Application_Links *app, Scan_Direction direction, Boundary_Function_List funcs){ | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     Range_i64 range = {}; | ||||
|     range.first = view_get_cursor_pos(app, view); | ||||
|     range.one_past_last = scan(app, funcs, buffer, direction, range.first); | ||||
|  | @ -171,8 +171,8 @@ CUSTOM_DOC("Delete characters between the cursor position and the first alphanum | |||
| 
 | ||||
| function void | ||||
| current_view_snipe_delete(Application_Links *app, Scan_Direction direction, Boundary_Function_List funcs){ | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     Range_i64 range = get_snipe_range(app, funcs, buffer, pos, direction); | ||||
|     buffer_replace_range(app, buffer, range, string_u8_litexpr("")); | ||||
|  | @ -199,7 +199,7 @@ CUSTOM_DOC("Delete a single, whole token on or to the right of the cursor and po | |||
| CUSTOM_COMMAND_SIG(center_view) | ||||
| CUSTOM_DOC("Centers the view vertically on the line on which the cursor sits.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Rect_f32 region = view_get_buffer_region(app, view); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     Buffer_Cursor cursor = view_compute_cursor(app, view, seek_pos(pos)); | ||||
|  | @ -213,7 +213,7 @@ CUSTOM_DOC("Centers the view vertically on the line on which the cursor sits.") | |||
| CUSTOM_COMMAND_SIG(left_adjust_view) | ||||
| CUSTOM_DOC("Sets the left size of the view near the x position of the cursor.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     Buffer_Cursor cursor = view_compute_cursor(app, view, seek_pos(pos)); | ||||
|     Vec2_f32 p = view_relative_xy_of_pos(app, view, cursor.line, pos); | ||||
|  | @ -225,7 +225,7 @@ CUSTOM_DOC("Sets the left size of the view near the x position of the cursor.") | |||
| CUSTOM_COMMAND_SIG(click_set_cursor_and_mark) | ||||
| CUSTOM_DOC("Sets the cursor position and mark to the mouse position.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Mouse_State mouse = get_mouse_state(app); | ||||
|     i64 pos = view_pos_from_xy(app, view, V2(mouse.p)); | ||||
|     view_set_cursor_and_preferred_x(app, view, seek_pos(pos)); | ||||
|  | @ -235,7 +235,7 @@ CUSTOM_DOC("Sets the cursor position and mark to the mouse position.") | |||
| CUSTOM_COMMAND_SIG(click_set_cursor) | ||||
| CUSTOM_DOC("Sets the cursor position to the mouse position.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Mouse_State mouse = get_mouse_state(app); | ||||
|     i64 pos = view_pos_from_xy(app, view, V2(mouse.p)); | ||||
|     view_set_cursor_and_preferred_x(app, view, seek_pos(pos)); | ||||
|  | @ -245,7 +245,7 @@ CUSTOM_DOC("Sets the cursor position to the mouse position.") | |||
| CUSTOM_COMMAND_SIG(click_set_cursor_if_lbutton) | ||||
| CUSTOM_DOC("If the mouse left button is pressed, sets the cursor position to the mouse position.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Mouse_State mouse = get_mouse_state(app); | ||||
|     if (mouse.l){ | ||||
|         i64 pos = view_pos_from_xy(app, view, V2(mouse.p)); | ||||
|  | @ -257,7 +257,7 @@ CUSTOM_DOC("If the mouse left button is pressed, sets the cursor position to the | |||
| CUSTOM_COMMAND_SIG(click_set_mark) | ||||
| CUSTOM_DOC("Sets the mark position to the mouse position.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Mouse_State mouse = get_mouse_state(app); | ||||
|     i64 pos = view_pos_from_xy(app, view, V2(mouse.p)); | ||||
|     view_set_mark(app, view, seek_pos(pos)); | ||||
|  | @ -267,7 +267,7 @@ CUSTOM_DOC("Sets the mark position to the mouse position.") | |||
| CUSTOM_COMMAND_SIG(mouse_wheel_scroll) | ||||
| CUSTOM_DOC("Reads the scroll wheel value from the mouse state and scrolls accordingly.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Mouse_State mouse = get_mouse_state(app); | ||||
|     if (mouse.wheel != 0){ | ||||
|         Buffer_Scroll scroll = view_get_buffer_scroll(app, view); | ||||
|  | @ -292,13 +292,13 @@ move_vertical_pixels(Application_Links *app, View_ID view, f32 pixels){ | |||
| 
 | ||||
| internal void | ||||
| move_vertical_pixels(Application_Links *app, f32 pixels){ | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     move_vertical_pixels(app, view, pixels); | ||||
| } | ||||
| 
 | ||||
| internal void | ||||
| move_vertical_lines(Application_Links *app, View_ID view, f32 lines){ | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|     Face_ID face_id = get_face_id(app, buffer); | ||||
|     Face_Metrics metrics = get_face_metrics(app, face_id); | ||||
|      | ||||
|  | @ -308,7 +308,7 @@ move_vertical_lines(Application_Links *app, View_ID view, f32 lines){ | |||
| 
 | ||||
| internal void | ||||
| move_vertical_lines(Application_Links *app, f32 lines){ | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     move_vertical_lines(app, view, lines); | ||||
| } | ||||
| 
 | ||||
|  | @ -345,7 +345,7 @@ CUSTOM_DOC("Moves the cursor down ten lines.") | |||
| CUSTOM_COMMAND_SIG(move_down_textual) | ||||
| CUSTOM_DOC("Moves down to the next line of actual text, regardless of line wrapping.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     Buffer_Cursor cursor = view_compute_cursor(app, view, seek_pos(pos)); | ||||
|     i64 next_line = cursor.line + 1; | ||||
|  | @ -355,7 +355,7 @@ CUSTOM_DOC("Moves down to the next line of actual text, regardless of line wrapp | |||
| CUSTOM_COMMAND_SIG(page_up) | ||||
| CUSTOM_DOC("Scrolls the view up one view height and moves the cursor up one view height.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     f32 page_jump = get_page_jump(app, view); | ||||
|     move_vertical_pixels(app, -page_jump); | ||||
| } | ||||
|  | @ -363,15 +363,15 @@ CUSTOM_DOC("Scrolls the view up one view height and moves the cursor up one view | |||
| CUSTOM_COMMAND_SIG(page_down) | ||||
| CUSTOM_DOC("Scrolls the view down one view height and moves the cursor down one view height.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     f32 page_jump = get_page_jump(app, view); | ||||
|     move_vertical_pixels(app, page_jump); | ||||
| } | ||||
| 
 | ||||
| internal void | ||||
| seek_blank_line(Application_Links *app, Scan_Direction direction, Position_Within_Line position){ | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     i64 new_pos = get_pos_of_blank_line_grouped(app, buffer, direction, pos); | ||||
|     switch (position){ | ||||
|  | @ -429,7 +429,7 @@ CUSTOM_DOC("Seeks the cursor down to the next blank line and places it at the en | |||
| CUSTOM_COMMAND_SIG(move_left) | ||||
| CUSTOM_DOC("Moves the cursor one character to the left.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     Buffer_Cursor cursor = view_compute_cursor(app, view, seek_pos(pos)); | ||||
|     i64 character = view_relative_character_from_pos(app, view, cursor.line, pos); | ||||
|  | @ -441,7 +441,7 @@ CUSTOM_DOC("Moves the cursor one character to the left.") | |||
| CUSTOM_COMMAND_SIG(move_right) | ||||
| CUSTOM_DOC("Moves the cursor one character to the right.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     Buffer_Cursor cursor = view_compute_cursor(app, view, seek_pos(pos)); | ||||
|     i64 character = view_relative_character_from_pos(app, view, cursor.line, pos); | ||||
|  | @ -452,8 +452,8 @@ CUSTOM_DOC("Moves the cursor one character to the right.") | |||
| 
 | ||||
| function void | ||||
| current_view_scan_move(Application_Links *app, Scan_Direction direction, Boundary_Function_List funcs){ | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|     i64 cursor_pos = view_get_cursor_pos(app, view); | ||||
|     i64 pos = scan(app, funcs, buffer, direction, cursor_pos); | ||||
|     view_set_cursor_and_preferred_x(app, view, seek_pos(pos)); | ||||
|  | @ -545,8 +545,8 @@ CUSTOM_DOC("Seek left for boundary between alphanumeric characters or camel case | |||
| CUSTOM_COMMAND_SIG(select_all) | ||||
| CUSTOM_DOC("Puts the cursor at the top of the file, and the mark at the bottom of the file.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|     i32 buffer_size = (i32)buffer_get_size(app, buffer); | ||||
|     view_set_cursor_and_preferred_x(app, view, seek_pos(0)); | ||||
|     view_set_mark(app, view, seek_pos(buffer_size)); | ||||
|  | @ -558,8 +558,8 @@ CUSTOM_DOC("Puts the cursor at the top of the file, and the mark at the bottom o | |||
| CUSTOM_COMMAND_SIG(to_uppercase) | ||||
| CUSTOM_DOC("Converts all ascii text in the range between the cursor and the mark to uppercase.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     Range_i64 range = get_view_range(app, view); | ||||
|     Scratch_Block scratch(app); | ||||
|     String_Const_u8 string = push_buffer_range(app, scratch, buffer, range); | ||||
|  | @ -571,8 +571,8 @@ CUSTOM_DOC("Converts all ascii text in the range between the cursor and the mark | |||
| CUSTOM_COMMAND_SIG(to_lowercase) | ||||
| CUSTOM_DOC("Converts all ascii text in the range between the cursor and the mark to lowercase.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     Range_i64 range = get_view_range(app, view); | ||||
|     Scratch_Block scratch(app); | ||||
|     String_Const_u8 string = push_buffer_range(app, scratch, buffer, range); | ||||
|  | @ -584,8 +584,8 @@ CUSTOM_DOC("Converts all ascii text in the range between the cursor and the mark | |||
| CUSTOM_COMMAND_SIG(clean_all_lines) | ||||
| CUSTOM_DOC("Removes trailing whitespace from all lines in the current buffer.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|      | ||||
|     Scratch_Block scratch(app); | ||||
|     Batch_Edit *batch_first = 0; | ||||
|  | @ -618,15 +618,15 @@ CUSTOM_DOC("Removes trailing whitespace from all lines in the current buffer.") | |||
| CUSTOM_COMMAND_SIG(basic_change_active_panel) | ||||
| CUSTOM_DOC("Change the currently active panel, moving to the panel with the next highest view_id.  Will not skipe the build panel if it is open.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     get_next_view_looped_all_panels(app, view, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     get_next_view_looped_all_panels(app, view, Access_Always); | ||||
|     view_set_active(app, view); | ||||
| } | ||||
| 
 | ||||
| CUSTOM_COMMAND_SIG(close_panel) | ||||
| CUSTOM_DOC("Closes the currently active panel if it is not the only panel open.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     view_close(app, view); | ||||
| } | ||||
| 
 | ||||
|  | @ -635,35 +635,35 @@ CUSTOM_DOC("Closes the currently active panel if it is not the only panel open." | |||
| CUSTOM_COMMAND_SIG(show_scrollbar) | ||||
| CUSTOM_DOC("Sets the current view to show it's scrollbar.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     view_set_setting(app, view, ViewSetting_ShowScrollbar, true); | ||||
| } | ||||
| 
 | ||||
| CUSTOM_COMMAND_SIG(hide_scrollbar) | ||||
| CUSTOM_DOC("Sets the current view to hide it's scrollbar.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     view_set_setting(app, view, ViewSetting_ShowScrollbar, false); | ||||
| } | ||||
| 
 | ||||
| CUSTOM_COMMAND_SIG(show_filebar) | ||||
| CUSTOM_DOC("Sets the current view to show it's filebar.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     view_set_setting(app, view, ViewSetting_ShowFileBar, true); | ||||
| } | ||||
| 
 | ||||
| CUSTOM_COMMAND_SIG(hide_filebar) | ||||
| CUSTOM_DOC("Sets the current view to hide it's filebar.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     view_set_setting(app, view, ViewSetting_ShowFileBar, false); | ||||
| } | ||||
| 
 | ||||
| CUSTOM_COMMAND_SIG(toggle_filebar) | ||||
| CUSTOM_DOC("Toggles the visibility status of the current view's filebar.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     b64 value = false; | ||||
|     view_get_setting(app, view, ViewSetting_ShowFileBar, &value); | ||||
|     view_set_setting(app, view, ViewSetting_ShowFileBar, !value); | ||||
|  | @ -678,8 +678,8 @@ CUSTOM_DOC("Toggles the visibility of the FPS performance meter") | |||
| CUSTOM_COMMAND_SIG(increase_face_size) | ||||
| CUSTOM_DOC("Increase the size of the face used by the current buffer.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_Always); | ||||
|     Face_ID face_id = get_face_id(app, buffer); | ||||
|     Face_Description description = get_face_description(app, face_id); | ||||
|     ++description.parameters.pt_size; | ||||
|  | @ -689,8 +689,8 @@ CUSTOM_DOC("Increase the size of the face used by the current buffer.") | |||
| CUSTOM_COMMAND_SIG(decrease_face_size) | ||||
| CUSTOM_DOC("Decrease the size of the face used by the current buffer.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_Always); | ||||
|     Face_ID face_id = get_face_id(app, buffer); | ||||
|     Face_Description description = get_face_description(app, face_id); | ||||
|     --description.parameters.pt_size; | ||||
|  | @ -717,8 +717,8 @@ CUSTOM_DOC("Reads the state of the mouse wheel and uses it to either increase or | |||
| CUSTOM_COMMAND_SIG(toggle_virtual_whitespace) | ||||
| CUSTOM_DOC("Toggles the current buffer's virtual whitespace status.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|     (void)buffer; | ||||
|     NotImplemented; | ||||
| } | ||||
|  | @ -726,7 +726,7 @@ CUSTOM_DOC("Toggles the current buffer's virtual whitespace status.") | |||
| CUSTOM_COMMAND_SIG(toggle_show_whitespace) | ||||
| CUSTOM_DOC("Toggles the current buffer's whitespace visibility status.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     b64 show_whitespace = false; | ||||
|     view_get_setting(app, view, ViewSetting_ShowWhitespace, &show_whitespace); | ||||
|     view_set_setting(app, view, ViewSetting_ShowWhitespace, !show_whitespace); | ||||
|  | @ -757,7 +757,7 @@ CUSTOM_DOC("Queries the user for a number, and jumps the cursor to the correspon | |||
|     bar.string_capacity = sizeof(string_space); | ||||
|     if (query_user_number(app, &bar)){ | ||||
|         i32 line_number = (i32)string_to_integer(bar.string, 10); | ||||
|         View_ID view = get_active_view(app, AccessProtected); | ||||
|         View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|         view_set_cursor_and_preferred_x(app, view, seek_line_col(line_number, 0)); | ||||
|     } | ||||
| } | ||||
|  | @ -774,8 +774,8 @@ isearch__update_highlight(Application_Links *app, View_ID view, Range_i64 range) | |||
| function void | ||||
| isearch(Application_Links *app, Scan_Direction start_scan, i64 first_pos, | ||||
|         String_Const_u8 query_init){ | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|     if (!buffer_exists(app, buffer)){ | ||||
|         return; | ||||
|     } | ||||
|  | @ -951,22 +951,22 @@ isearch(Application_Links *app, Scan_Direction start_scan, i64 first_pos, | |||
| 
 | ||||
| function void | ||||
| isearch(Application_Links *app, Scan_Direction start_scan, String_Const_u8 query_init){ | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view);; | ||||
|     isearch(app, start_scan, pos, query_init); | ||||
| } | ||||
| 
 | ||||
| function void | ||||
| isearch(Application_Links *app, Scan_Direction start_scan){ | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view);; | ||||
|     isearch(app, start_scan, pos, SCu8()); | ||||
| } | ||||
| 
 | ||||
| function void | ||||
| isearch_identifier(Application_Links *app, Scan_Direction scan){ | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     Buffer_ID buffer_id = view_get_buffer(app, view, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Buffer_ID buffer_id = view_get_buffer(app, view, Access_ReadVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     Scratch_Block scratch(app); | ||||
|     Range_i64 range = enclose_pos_alpha_numeric_underscore(app, buffer_id, pos); | ||||
|  | @ -1042,8 +1042,8 @@ replace_in_range_query_user(Application_Links *app, Buffer_ID buffer, Range_i64 | |||
| CUSTOM_COMMAND_SIG(replace_in_range) | ||||
| CUSTOM_DOC("Queries the user for a needle and string. Replaces all occurences of needle with string in the range between cursor and the mark in the active buffer.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     Range_i64 range = get_view_range(app, view); | ||||
|     replace_in_range_query_user(app, buffer, range); | ||||
| } | ||||
|  | @ -1051,8 +1051,8 @@ CUSTOM_DOC("Queries the user for a needle and string. Replaces all occurences of | |||
| CUSTOM_COMMAND_SIG(replace_in_buffer) | ||||
| CUSTOM_DOC("Queries the user for a needle and string. Replaces all occurences of needle with string in the active buffer.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     Range_i64 range = buffer_range(app, buffer); | ||||
|     replace_in_range_query_user(app, buffer, range); | ||||
| } | ||||
|  | @ -1065,9 +1065,9 @@ CUSTOM_DOC("Queries the user for a needle and string. Replaces all occurences of | |||
|     Scratch_Block scratch(app); | ||||
|     Query_Bar_Group group(app); | ||||
|     String_Pair pair = query_user_replace_pair(app, scratch); | ||||
|     for (Buffer_ID buffer = get_buffer_next(app, 0, AccessOpen); | ||||
|     for (Buffer_ID buffer = get_buffer_next(app, 0, Access_ReadWriteVisible); | ||||
|          buffer != 0; | ||||
|          buffer = get_buffer_next(app, buffer, AccessOpen)){ | ||||
|          buffer = get_buffer_next(app, buffer, Access_ReadWriteVisible)){ | ||||
|         Range_i64 range = buffer_range(app, buffer); | ||||
|         replace_in_range(app, buffer, range, pair.a, pair.b); | ||||
|     } | ||||
|  | @ -1135,8 +1135,8 @@ query_replace_parameter(Application_Links *app, String_Const_u8 replace_str, i64 | |||
|         String_Const_u8 r = replace.string; | ||||
|         String_Const_u8 w = with.string; | ||||
|          | ||||
|         View_ID view = get_active_view(app, AccessProtected); | ||||
|         Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|         View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|         Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|         i64 pos = start_pos; | ||||
|          | ||||
|         Query_Bar bar = {}; | ||||
|  | @ -1150,8 +1150,8 @@ query_replace_parameter(Application_Links *app, String_Const_u8 replace_str, i64 | |||
| CUSTOM_COMMAND_SIG(query_replace) | ||||
| CUSTOM_DOC("Queries the user for two strings, and incrementally replaces every occurence of the first string with the second string.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     if (buffer != 0){ | ||||
|         Query_Bar_Group group(app); | ||||
|         Query_Bar replace = {}; | ||||
|  | @ -1171,8 +1171,8 @@ CUSTOM_DOC("Queries the user for two strings, and incrementally replaces every o | |||
| CUSTOM_COMMAND_SIG(query_replace_identifier) | ||||
| CUSTOM_DOC("Queries the user for a string, and incrementally replace every occurence of the word or token found at the cursor with the specified string.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     if (buffer != 0){ | ||||
|         Scratch_Block scratch(app); | ||||
|         i64 pos = view_get_cursor_pos(app, view); | ||||
|  | @ -1187,8 +1187,8 @@ CUSTOM_DOC("Queries the user for a string, and incrementally replace every occur | |||
| CUSTOM_COMMAND_SIG(query_replace_selection) | ||||
| CUSTOM_DOC("Queries the user for a string, and incrementally replace every occurence of the string found in the selected range with the specified string.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     if (buffer != 0){ | ||||
|         Scratch_Block scratch(app); | ||||
|         Range_i64 range = get_view_range(app, view); | ||||
|  | @ -1204,9 +1204,9 @@ CUSTOM_DOC("Queries the user for a string, and incrementally replace every occur | |||
| function void | ||||
| save_all_dirty_buffers_with_postfix(Application_Links *app, String_Const_u8 postfix){ | ||||
|     Scratch_Block scratch(app); | ||||
|     for (Buffer_ID buffer = get_buffer_next(app, 0, AccessOpen); | ||||
|     for (Buffer_ID buffer = get_buffer_next(app, 0, Access_ReadWriteVisible); | ||||
|          buffer != 0; | ||||
|          buffer = get_buffer_next(app, buffer, AccessOpen)){ | ||||
|          buffer = get_buffer_next(app, buffer, Access_ReadWriteVisible)){ | ||||
|         Dirty_State dirty = buffer_get_dirty_state(app, buffer); | ||||
|         if (dirty == DirtyState_UnsavedChanges){ | ||||
|             Temp_Memory temp = begin_temp(scratch); | ||||
|  | @ -1247,8 +1247,8 @@ delete_file_base(Application_Links *app, String_Const_u8 file_name, Buffer_ID bu | |||
| CUSTOM_COMMAND_SIG(delete_file_query) | ||||
| CUSTOM_DOC("Deletes the file of the current buffer if 4coder has the appropriate access rights. Will ask the user for confirmation first.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_Always); | ||||
|     Scratch_Block scratch(app); | ||||
|     String_Const_u8 file_name = push_buffer_file_name(app, scratch, buffer); | ||||
|     if (file_name.size > 0){ | ||||
|  | @ -1291,8 +1291,8 @@ CUSTOM_DOC("Deletes the file of the current buffer if 4coder has the appropriate | |||
| CUSTOM_COMMAND_SIG(save_to_query) | ||||
| CUSTOM_DOC("Queries the user for a file name and saves the contents of the current buffer, altering the buffer's name too.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_Always); | ||||
|      | ||||
|     Scratch_Block scratch(app); | ||||
|     Query_Bar_Group group(app); | ||||
|  | @ -1324,8 +1324,8 @@ CUSTOM_DOC("Queries the user for a file name and saves the contents of the curre | |||
| CUSTOM_COMMAND_SIG(rename_file_query) | ||||
| CUSTOM_DOC("Queries the user for a new name and renames the file of the current buffer, altering the buffer's name too.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_Always); | ||||
|      | ||||
|     Scratch_Block scratch(app); | ||||
|      | ||||
|  | @ -1385,8 +1385,8 @@ CUSTOM_DOC("Queries the user for a name and creates a new directory with the giv | |||
| 
 | ||||
| internal void | ||||
| current_view_move_line(Application_Links *app, Scan_Direction direction){ | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     i64 line_number = get_line_number_from_pos(app, buffer, pos); | ||||
|     pos = move_line(app, buffer, line_number, direction); | ||||
|  | @ -1408,8 +1408,8 @@ CUSTOM_DOC("Swaps the line under the cursor with the line below it, and moves th | |||
| CUSTOM_COMMAND_SIG(duplicate_line) | ||||
| CUSTOM_DOC("Create a copy of the line on which the cursor sits.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     i64 line = get_line_number_from_pos(app, buffer, pos); | ||||
|     Scratch_Block scratch(app); | ||||
|  | @ -1422,8 +1422,8 @@ CUSTOM_DOC("Create a copy of the line on which the cursor sits.") | |||
| CUSTOM_COMMAND_SIG(delete_line) | ||||
| CUSTOM_DOC("Delete the line the on which the cursor sits.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     i64 line = get_line_number_from_pos(app, buffer, pos); | ||||
|     Range_i64 range = get_line_pos_range(app, buffer, line); | ||||
|  | @ -1487,8 +1487,8 @@ get_cpp_matching_file(Application_Links *app, Buffer_ID buffer, Buffer_ID *buffe | |||
| CUSTOM_COMMAND_SIG(open_file_in_quotes) | ||||
| CUSTOM_DOC("Reads a filename from surrounding '\"' characters and attempts to open the corresponding file.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|     if (buffer_exists(app, buffer)){ | ||||
|         Scratch_Block scratch(app); | ||||
|          | ||||
|  | @ -1507,7 +1507,7 @@ CUSTOM_DOC("Reads a filename from surrounding '\"' characters and attempts to op | |||
|          | ||||
|         String_Const_u8 new_file_name = push_u8_stringf(scratch, "%.*s/%.*s", string_expand(path), string_expand(quoted_name)); | ||||
|          | ||||
|         view = get_next_view_looped_primary_panels(app, view, AccessAll); | ||||
|         view = get_next_view_looped_primary_panels(app, view, Access_Always); | ||||
|         if (view != 0){ | ||||
|             if (view_open_file(app, view, new_file_name, true)){ | ||||
|                 view_set_active(app, view); | ||||
|  | @ -1519,11 +1519,11 @@ CUSTOM_DOC("Reads a filename from surrounding '\"' characters and attempts to op | |||
| CUSTOM_COMMAND_SIG(open_matching_file_cpp) | ||||
| CUSTOM_DOC("If the current file is a *.cpp or *.h, attempts to open the corresponding *.h or *.cpp file in the other view.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_Always); | ||||
|     Buffer_ID new_buffer = 0; | ||||
|     if (get_cpp_matching_file(app, buffer, &new_buffer)){ | ||||
|         view = get_next_view_looped_primary_panels(app, view, AccessAll); | ||||
|         view = get_next_view_looped_primary_panels(app, view, Access_Always); | ||||
|         view_set_buffer(app, view, new_buffer, 0); | ||||
|         view_set_active(app, view); | ||||
|     } | ||||
|  | @ -1532,11 +1532,11 @@ CUSTOM_DOC("If the current file is a *.cpp or *.h, attempts to open the correspo | |||
| CUSTOM_COMMAND_SIG(view_buffer_other_panel) | ||||
| CUSTOM_DOC("Set the other non-active panel to view the buffer that the active panel views, and switch to that panel.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_Always); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     change_active_panel(app); | ||||
|     view = get_active_view(app, AccessAll); | ||||
|     view = get_active_view(app, Access_Always); | ||||
|     view_set_buffer(app, view, buffer, 0); | ||||
|     view_set_cursor_and_preferred_x(app, view, seek_pos(pos)); | ||||
| } | ||||
|  | @ -1544,13 +1544,13 @@ CUSTOM_DOC("Set the other non-active panel to view the buffer that the active pa | |||
| CUSTOM_COMMAND_SIG(swap_buffers_between_panels) | ||||
| CUSTOM_DOC("Set the other non-active panel to view the buffer that the active panel views, and switch to that panel.") | ||||
| { | ||||
|     View_ID view1 = get_active_view(app, AccessProtected); | ||||
|     View_ID view1 = get_active_view(app, Access_ReadVisible); | ||||
|     change_active_panel(app); | ||||
|     View_ID view2 = get_active_view(app, AccessProtected); | ||||
|     View_ID view2 = get_active_view(app, Access_ReadVisible); | ||||
|      | ||||
|     if (view1 != view2){ | ||||
|         Buffer_ID buffer1 = view_get_buffer(app, view1, AccessAll); | ||||
|         Buffer_ID buffer2 = view_get_buffer(app, view2, AccessAll); | ||||
|         Buffer_ID buffer1 = view_get_buffer(app, view1, Access_Always); | ||||
|         Buffer_ID buffer2 = view_get_buffer(app, view2, Access_Always); | ||||
|         if (buffer1 != buffer2){ | ||||
|             view_set_buffer(app, view1, buffer2, 0); | ||||
|             view_set_buffer(app, view2, buffer1, 0); | ||||
|  | @ -1578,16 +1578,16 @@ CUSTOM_DOC("Set the other non-active panel to view the buffer that the active pa | |||
| CUSTOM_COMMAND_SIG(kill_buffer) | ||||
| CUSTOM_DOC("Kills the current buffer.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|     try_buffer_kill(app, buffer, view, 0); | ||||
| } | ||||
| 
 | ||||
| CUSTOM_COMMAND_SIG(save) | ||||
| CUSTOM_DOC("Saves the current buffer.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|     Scratch_Block scratch(app); | ||||
|     String_Const_u8 file_name = push_buffer_file_name(app, scratch, buffer); | ||||
|     buffer_save(app, buffer, file_name, 0); | ||||
|  | @ -1596,8 +1596,8 @@ CUSTOM_DOC("Saves the current buffer.") | |||
| CUSTOM_COMMAND_SIG(reopen) | ||||
| CUSTOM_DOC("Reopen the current buffer from the hard drive.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|     buffer_reopen(app, buffer, 0); | ||||
| } | ||||
| 
 | ||||
|  | @ -1608,7 +1608,7 @@ CUSTOM_COMMAND_SIG(multi_paste){ | |||
|      | ||||
|     i32 count = clipboard_count(app, 0); | ||||
|     if (count > 0){ | ||||
|         View_ID view = get_active_view(app, AccessOpen); | ||||
|         View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|         Managed_Scope scope = view_get_managed_scope(app, view); | ||||
|          | ||||
|         Rewrite_Type *rewrite = scope_attachment(app, scope, view_rewrite_loc, Rewrite_Type); | ||||
|  | @ -1623,7 +1623,7 @@ CUSTOM_COMMAND_SIG(multi_paste){ | |||
|              | ||||
|             String_Const_u8 insert_string = push_u8_stringf(scratch, "\n%.*s", string_expand(string)); | ||||
|              | ||||
|             Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|             Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|             Range_i64 range = get_view_range(app, view); | ||||
|             buffer_replace_range(app, buffer, Ii64(range.max), insert_string); | ||||
|             view_set_mark(app, view, seek_pos(range.max + 1)); | ||||
|  | @ -1646,7 +1646,7 @@ multi_paste_range(Application_Links *app, View_ID view, Range_i64 range, i32 pas | |||
|      | ||||
|     Range_i64 finish_range = range; | ||||
|     if (paste_count >= 1){ | ||||
|         Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|         Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|         if (buffer != 0){ | ||||
|             i64 total_size = 0; | ||||
|             for (i32 paste_index = 0; paste_index < paste_count; ++paste_index){ | ||||
|  | @ -1699,7 +1699,7 @@ multi_paste_range(Application_Links *app, View_ID view, Range_i64 range, i32 pas | |||
| 
 | ||||
| function void | ||||
| multi_paste_interactive_up_down(Application_Links *app, i32 paste_count, i32 clip_count){ | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     b32 old_to_new = true; | ||||
|     Range_i64 range = multi_paste_range(app, view, Ii64(pos), paste_count, old_to_new); | ||||
|  | @ -1741,7 +1741,7 @@ multi_paste_interactive_up_down(Application_Links *app, i32 paste_count, i32 cli | |||
|     } | ||||
|      | ||||
|     if (in.abort){ | ||||
|         Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|         Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|         buffer_replace_range(app, buffer, range, SCu8("")); | ||||
|     } | ||||
| } | ||||
|  | @ -1825,8 +1825,8 @@ record_get_new_cursor_position_redo(Application_Links *app, Buffer_ID buffer_id, | |||
| CUSTOM_COMMAND_SIG(undo) | ||||
| CUSTOM_DOC("Advances backwards through the undo history of the current buffer.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     History_Record_Index current = buffer_history_get_current_state_index(app, buffer); | ||||
|     if (current > 0){ | ||||
|         i32 new_position = record_get_new_cursor_position_undo(app, buffer, current); | ||||
|  | @ -1838,8 +1838,8 @@ CUSTOM_DOC("Advances backwards through the undo history of the current buffer.") | |||
| CUSTOM_COMMAND_SIG(redo) | ||||
| CUSTOM_DOC("Advances forwards through the undo history of the current buffer.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     History_Record_Index current = buffer_history_get_current_state_index(app, buffer); | ||||
|     History_Record_Index max_index = buffer_history_get_max_record_index(app, buffer); | ||||
|     if (current < max_index){ | ||||
|  | @ -1859,9 +1859,9 @@ CUSTOM_DOC("Advances backward through the undo history in the buffer containing | |||
|     i32 match_count = 0; | ||||
|      | ||||
|     { | ||||
|         for (Buffer_ID buffer = get_buffer_next(app, 0, AccessAll); | ||||
|         for (Buffer_ID buffer = get_buffer_next(app, 0, Access_Always); | ||||
|              buffer != 0; | ||||
|              buffer = get_buffer_next(app, buffer, AccessAll)){ | ||||
|              buffer = get_buffer_next(app, buffer, Access_Always)){ | ||||
|             History_Record_Index index = buffer_history_get_current_state_index(app, buffer); | ||||
|             if (index > 0){ | ||||
|                 Record_Info record = buffer_history_get_record_info(app, buffer, index); | ||||
|  | @ -1886,7 +1886,7 @@ CUSTOM_DOC("Advances backward through the undo history in the buffer containing | |||
|     if (highest_edit_number != -1){ | ||||
|         for (Buffer_ID buffer = first_buffer_match; | ||||
|              buffer != 0; | ||||
|              buffer = get_buffer_next(app, buffer, AccessAll)){ | ||||
|              buffer = get_buffer_next(app, buffer, Access_Always)){ | ||||
|             b32 did_match = false; | ||||
|             i32 new_edit_position = 0; | ||||
|             for (;;){ | ||||
|  | @ -1931,9 +1931,9 @@ CUSTOM_DOC("Advances forward through the undo history in the buffer containing t | |||
|     i32 match_count = 0; | ||||
|      | ||||
|     { | ||||
|         for (Buffer_ID buffer = get_buffer_next(app, 0, AccessAll); | ||||
|         for (Buffer_ID buffer = get_buffer_next(app, 0, Access_Always); | ||||
|              buffer != 0; | ||||
|              buffer = get_buffer_next(app, buffer, AccessAll)){ | ||||
|              buffer = get_buffer_next(app, buffer, Access_Always)){ | ||||
|             History_Record_Index max_index = buffer_history_get_max_record_index(app, buffer); | ||||
|             History_Record_Index index = buffer_history_get_current_state_index(app, buffer); | ||||
|             if (index < max_index){ | ||||
|  | @ -1959,7 +1959,7 @@ CUSTOM_DOC("Advances forward through the undo history in the buffer containing t | |||
|     if (lowest_edit_number != -1){ | ||||
|         for (Buffer_ID buffer = first_buffer_match; | ||||
|              buffer != 0; | ||||
|              buffer = get_buffer_next(app, buffer, AccessAll)){ | ||||
|              buffer = get_buffer_next(app, buffer, Access_Always)){ | ||||
|             b32 did_match = false; | ||||
|             i32 new_edit_position = 0; | ||||
|             History_Record_Index max_index = buffer_history_get_max_record_index(app, buffer); | ||||
|  |  | |||
|  | @ -128,8 +128,8 @@ standard_search_and_build(Application_Links *app, View_ID view, Buffer_ID active | |||
| CUSTOM_COMMAND_SIG(build_search) | ||||
| CUSTOM_DOC("Looks for a build.bat, build.sh, or makefile in the current and parent directories.  Runs the first that it finds and prints the output to *compilation*.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_Always); | ||||
|     standard_search_and_build(app, view, buffer); | ||||
|     block_zero_struct(&prev_location); | ||||
|     lock_jump_buffer(app, string_u8_litexpr("*compilation*")); | ||||
|  | @ -137,7 +137,7 @@ CUSTOM_DOC("Looks for a build.bat, build.sh, or makefile in the current and pare | |||
| 
 | ||||
| static Buffer_ID | ||||
| get_comp_buffer(Application_Links *app){ | ||||
|     return(get_buffer_by_name(app, string_u8_litexpr("*compilation*"), AccessAll)); | ||||
|     return(get_buffer_by_name(app, string_u8_litexpr("*compilation*"), Access_Always)); | ||||
| } | ||||
| 
 | ||||
| static View_ID | ||||
|  | @ -163,8 +163,8 @@ set_fancy_compilation_buffer_font(Application_Links *app){ | |||
| CUSTOM_COMMAND_SIG(build_in_build_panel) | ||||
| CUSTOM_DOC("Looks for a build.bat, build.sh, or makefile in the current and parent directories.  Runs the first that it finds and prints the output to *compilation*.  Puts the *compilation* buffer in a panel at the footer of the current view.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_Always); | ||||
|      | ||||
|     View_ID build_view = get_or_open_build_panel(app); | ||||
|      | ||||
|  |  | |||
|  | @ -12,7 +12,7 @@ CUSTOM_DOC("If the command execute_any_cli has already been used, this will exec | |||
|     String_Const_u8 hot_directory = SCu8(hot_directory_space); | ||||
|      | ||||
|     if (out_buffer.size > 0 && cmd.size > 0 && hot_directory.size > 0){ | ||||
|         View_ID view = get_active_view(app, AccessAll); | ||||
|         View_ID view = get_active_view(app, Access_Always); | ||||
|         Buffer_Identifier id = buffer_identifier(out_buffer); | ||||
|         exec_system_command(app, view, id, hot_directory, cmd, CLI_OverlapWithConflict|CLI_CursorAtEnd|CLI_SendEndSignal); | ||||
|         lock_jump_buffer(app, out_buffer); | ||||
|  |  | |||
|  | @ -19,8 +19,8 @@ clipboard_post_buffer_range(Application_Links *app, i32 clipboard_index, Buffer_ | |||
| CUSTOM_COMMAND_SIG(copy) | ||||
| CUSTOM_DOC("Copy the text in the range from the cursor to the mark onto the clipboard.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|     Range_i64 range = get_view_range(app, view); | ||||
|     clipboard_post_buffer_range(app, 0, buffer, range); | ||||
| } | ||||
|  | @ -28,8 +28,8 @@ CUSTOM_DOC("Copy the text in the range from the cursor to the mark onto the clip | |||
| CUSTOM_COMMAND_SIG(cut) | ||||
| CUSTOM_DOC("Cut the text in the range from the cursor to the mark onto the clipboard.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     Range_i64 range = get_view_range(app, view); | ||||
|     if (clipboard_post_buffer_range(app, 0, buffer, range)){ | ||||
|         buffer_replace_range(app, buffer, range, string_u8_empty); | ||||
|  | @ -41,7 +41,7 @@ CUSTOM_DOC("At the cursor, insert the text at the top of the clipboard.") | |||
| { | ||||
|     i32 count = clipboard_count(app, 0); | ||||
|     if (count > 0){ | ||||
|         View_ID view = get_active_view(app, AccessOpen); | ||||
|         View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|         if_view_has_highlighted_range_delete_range(app, view); | ||||
|          | ||||
|         Managed_Scope scope = view_get_managed_scope(app, view); | ||||
|  | @ -54,7 +54,7 @@ CUSTOM_DOC("At the cursor, insert the text at the top of the clipboard.") | |||
|          | ||||
|         String_Const_u8 string = push_clipboard_index(app, scratch, 0, *paste_index); | ||||
|         if (string.size > 0){ | ||||
|             Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|             Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|              | ||||
|             i64 pos = view_get_cursor_pos(app, view); | ||||
|             buffer_replace_range(app, buffer, Ii64(pos), string); | ||||
|  | @ -77,7 +77,7 @@ CUSTOM_DOC("If the previous command was paste or paste_next, replaces the paste | |||
|      | ||||
|     i32 count = clipboard_count(app, 0); | ||||
|     if (count > 0){ | ||||
|         View_ID view = get_active_view(app, AccessOpen); | ||||
|         View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|         Managed_Scope scope = view_get_managed_scope(app, view); | ||||
|         no_mark_snap_to_cursor(app, scope); | ||||
|          | ||||
|  | @ -92,7 +92,7 @@ CUSTOM_DOC("If the previous command was paste or paste_next, replaces the paste | |||
|              | ||||
|             String_Const_u8 string = push_clipboard_index(app, scratch, 0, paste_index); | ||||
|              | ||||
|             Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|             Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|              | ||||
|             Range_i64 range = get_view_range(app, view); | ||||
|             i64 pos = range.min; | ||||
|  |  | |||
|  | @ -13,8 +13,8 @@ write_string(Application_Links *app, View_ID view, Buffer_ID buffer, String_Cons | |||
| 
 | ||||
| static void | ||||
| write_string(Application_Links *app, String_Const_u8 string){ | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     write_string(app, view, buffer, string); | ||||
| } | ||||
| 
 | ||||
|  | @ -34,8 +34,8 @@ write_named_comment_string(Application_Links *app, char *type_string){ | |||
| 
 | ||||
| static void | ||||
| long_braces(Application_Links *app, char *text, i32 size){ | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     buffer_replace_range(app, buffer, Ii64(pos), SCu8(text, size)); | ||||
|     view_set_cursor_and_preferred_x(app, view, seek_pos(pos + 2)); | ||||
|  | @ -125,8 +125,8 @@ c_line_comment_starts_at_position(Application_Links *app, Buffer_ID buffer, i64 | |||
| CUSTOM_COMMAND_SIG(comment_line) | ||||
| CUSTOM_DOC("Insert '//' at the beginning of the line after leading whitespace.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     i64 pos = get_start_of_line_at_cursor(app, view, buffer); | ||||
|     b32 alread_has_comment = c_line_comment_starts_at_position(app, buffer, pos); | ||||
|     if (!alread_has_comment){ | ||||
|  | @ -137,8 +137,8 @@ CUSTOM_DOC("Insert '//' at the beginning of the line after leading whitespace.") | |||
| CUSTOM_COMMAND_SIG(uncomment_line) | ||||
| CUSTOM_DOC("If present, delete '//' at the beginning of the line after leading whitespace.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     i64 pos = get_start_of_line_at_cursor(app, view, buffer); | ||||
|     b32 alread_has_comment = c_line_comment_starts_at_position(app, buffer, pos); | ||||
|     if (alread_has_comment){ | ||||
|  | @ -149,8 +149,8 @@ CUSTOM_DOC("If present, delete '//' at the beginning of the line after leading w | |||
| CUSTOM_COMMAND_SIG(comment_line_toggle) | ||||
| CUSTOM_DOC("Turns uncommented lines into commented lines and vice versa for comments starting with '//'.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     i64 pos = get_start_of_line_at_cursor(app, view, buffer); | ||||
|     b32 alread_has_comment = c_line_comment_starts_at_position(app, buffer, pos); | ||||
|     if (alread_has_comment){ | ||||
|  | @ -202,7 +202,7 @@ activate_snippet(Application_Links *app, View_ID view, Lister *lister, String_Co | |||
|     if (0 <= index && index < snippets.count){ | ||||
|         Snippet snippet = snippets.snippets[index]; | ||||
|         lister_default(app, view, lister, ListerActivation_Finished); | ||||
|         Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|         Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|         i64 pos = view_get_cursor_pos(app, view); | ||||
|         buffer_replace_range(app, buffer, Ii64(pos), SCu8(snippet.text)); | ||||
|         view_set_cursor_and_preferred_x(app, view, seek_pos(pos + snippet.cursor_offset)); | ||||
|  | @ -216,7 +216,7 @@ activate_snippet(Application_Links *app, View_ID view, Lister *lister, String_Co | |||
| 
 | ||||
| static void | ||||
| snippet_lister__parameterized(Application_Links *app, Snippet_Array snippet_array){ | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     Scratch_Block scratch(app, Scratch_Share); | ||||
|     i32 option_count = snippet_array.count; | ||||
|     Lister_Option *options = push_array(scratch, Lister_Option, option_count); | ||||
|  |  | |||
|  | @ -38,7 +38,7 @@ function Buffer_ID | |||
| get_locked_jump_buffer(Application_Links *app){ | ||||
|     Buffer_ID result = 0; | ||||
|     if (locked_buffer.size > 0){ | ||||
|         result = get_buffer_by_name(app, locked_buffer, AccessAll); | ||||
|         result = get_buffer_by_name(app, locked_buffer, Access_Always); | ||||
|     } | ||||
|     if (result == 0){ | ||||
|         unlock_jump_buffer(); | ||||
|  | @ -88,7 +88,7 @@ static View_ID | |||
| open_footer_panel(Application_Links *app, View_ID view){ | ||||
|     View_ID special_view = open_view(app, view, ViewSplit_Bottom); | ||||
|     new_view_settings(app, special_view); | ||||
|     Buffer_ID buffer = view_get_buffer(app, special_view, AccessAll); | ||||
|     Buffer_ID buffer = view_get_buffer(app, special_view, Access_Always); | ||||
|     Face_ID face_id = get_face_id(app, buffer); | ||||
|     Face_Metrics metrics = get_face_metrics(app, face_id); | ||||
|     view_set_split_pixel_size(app, special_view, (i32)(metrics.line_height*20.f)); | ||||
|  | @ -107,7 +107,7 @@ close_build_footer_panel(Application_Links *app){ | |||
| static View_ID | ||||
| open_build_footer_panel(Application_Links *app){ | ||||
|     if (build_footer_panel_view_id == 0){ | ||||
|         View_ID view = get_active_view(app, AccessAll); | ||||
|         View_ID view = get_active_view(app, Access_Always); | ||||
|         build_footer_panel_view_id = open_footer_panel(app, view); | ||||
|         view_set_active(app, view); | ||||
|     } | ||||
|  | @ -159,10 +159,10 @@ view_buffer_set(Application_Links *app, Buffer_ID *buffers, i32 *positions, i32 | |||
|             View_ID view_id; | ||||
|         }; | ||||
|          | ||||
|         View_ID active_view_id = get_active_view(app, AccessAll); | ||||
|         View_ID active_view_id = get_active_view(app, Access_Always); | ||||
|         View_ID first_view_id = active_view_id; | ||||
|         if (view_get_is_passive(app, active_view_id)){ | ||||
|             first_view_id = get_next_view_looped_primary_panels(app, active_view_id, AccessAll); | ||||
|             first_view_id = get_next_view_looped_primary_panels(app, active_view_id, Access_Always); | ||||
|         } | ||||
|          | ||||
|         View_ID view_id = first_view_id; | ||||
|  | @ -176,7 +176,7 @@ view_buffer_set(Application_Links *app, Buffer_ID *buffers, i32 *positions, i32 | |||
|         primary_view_last->view_id = view_id; | ||||
|         available_view_count += 1; | ||||
|         for (;;){ | ||||
|             view_id = get_next_view_looped_primary_panels(app, view_id, AccessAll); | ||||
|             view_id = get_next_view_looped_primary_panels(app, view_id, Access_Always); | ||||
|             if (view_id == first_view_id){ | ||||
|                 break; | ||||
|             } | ||||
|  | @ -203,8 +203,8 @@ view_buffer_set(Application_Links *app, Buffer_ID *buffers, i32 *positions, i32 | |||
| CUSTOM_COMMAND_SIG(change_active_panel) | ||||
| CUSTOM_DOC("Change the currently active panel, moving to the panel with the next highest view_id.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     view = get_next_view_looped_primary_panels(app, view, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     view = get_next_view_looped_primary_panels(app, view, Access_Always); | ||||
|     if (view != 0){ | ||||
|         view_set_active(app, view); | ||||
|     } | ||||
|  | @ -213,8 +213,8 @@ CUSTOM_DOC("Change the currently active panel, moving to the panel with the next | |||
| CUSTOM_COMMAND_SIG(change_active_panel_backwards) | ||||
| CUSTOM_DOC("Change the currently active panel, moving to the panel with the next lowest view_id.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     view = get_prev_view_looped_primary_panels(app, view, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     view = get_prev_view_looped_primary_panels(app, view, Access_Always); | ||||
|     if (view != 0){ | ||||
|         view_set_active(app, view); | ||||
|     } | ||||
|  | @ -223,20 +223,20 @@ CUSTOM_DOC("Change the currently active panel, moving to the panel with the next | |||
| CUSTOM_COMMAND_SIG(open_panel_vsplit) | ||||
| CUSTOM_DOC("Create a new panel by vertically splitting the active panel.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     View_ID new_view = open_view(app, view, ViewSplit_Right); | ||||
|     new_view_settings(app, new_view); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessAll); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_Always); | ||||
|     view_set_buffer(app, new_view, buffer, 0); | ||||
| } | ||||
| 
 | ||||
| CUSTOM_COMMAND_SIG(open_panel_hsplit) | ||||
| CUSTOM_DOC("Create a new panel by horizontally splitting the active panel.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     View_ID new_view = open_view(app, view, ViewSplit_Bottom); | ||||
|     new_view_settings(app, new_view); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessAll); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_Always); | ||||
|     view_set_buffer(app, new_view, buffer, 0); | ||||
| } | ||||
| 
 | ||||
|  | @ -246,7 +246,7 @@ CUSTOM_DOC("Create a new panel by horizontally splitting the active panel.") | |||
| 
 | ||||
| static Buffer_ID | ||||
| create_or_switch_to_buffer_and_clear_by_name(Application_Links *app, String_Const_u8 name_string, View_ID default_target_view){ | ||||
|     Buffer_ID search_buffer = get_buffer_by_name(app, name_string, AccessAll); | ||||
|     Buffer_ID search_buffer = get_buffer_by_name(app, name_string, Access_Always); | ||||
|     if (search_buffer != 0){ | ||||
|         buffer_set_setting(app, search_buffer, BufferSetting_ReadOnly, true); | ||||
|          | ||||
|  | @ -434,13 +434,13 @@ default_4coder_side_by_side_panels(Application_Links *app, | |||
|     Buffer_ID right_id = buffer_identifier_to_id(app, right); | ||||
|      | ||||
|     // Left Panel
 | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     new_view_settings(app, view); | ||||
|     view_set_buffer(app, view, left_id, 0); | ||||
|      | ||||
|     // Right Panel
 | ||||
|     open_panel_vsplit(app); | ||||
|     View_ID right_view = get_active_view(app, AccessAll); | ||||
|     View_ID right_view = get_active_view(app, Access_Always); | ||||
|     view_set_buffer(app, right_view, right_id, 0); | ||||
|      | ||||
|     // Restore Active to Left
 | ||||
|  | @ -476,7 +476,7 @@ default_4coder_side_by_side_panels(Application_Links *app){ | |||
| static void | ||||
| default_4coder_one_panel(Application_Links *app, Buffer_Identifier buffer){ | ||||
|     Buffer_ID id = buffer_identifier_to_id(app, buffer); | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     new_view_settings(app, view); | ||||
|     view_set_buffer(app, view, id, 0); | ||||
| } | ||||
|  |  | |||
|  | @ -26,9 +26,9 @@ CUSTOM_DOC("Default command for responding to a try-exit event") | |||
|         b32 do_exit = true; | ||||
|         if (!allow_immediate_close_without_checking_for_changes){ | ||||
|             b32 has_unsaved_changes = false; | ||||
|             for (Buffer_ID buffer = get_buffer_next(app, 0, AccessAll); | ||||
|             for (Buffer_ID buffer = get_buffer_next(app, 0, Access_Always); | ||||
|                  buffer != 0; | ||||
|                  buffer = get_buffer_next(app, buffer, AccessAll)){ | ||||
|                  buffer = get_buffer_next(app, buffer, Access_Always)){ | ||||
|                 Dirty_State dirty = buffer_get_dirty_state(app, buffer); | ||||
|                 if (HasFlag(dirty, DirtyState_UnsavedChanges)){ | ||||
|                     has_unsaved_changes = true; | ||||
|  | @ -36,7 +36,7 @@ CUSTOM_DOC("Default command for responding to a try-exit event") | |||
|                 } | ||||
|             } | ||||
|             if (has_unsaved_changes){ | ||||
|                 View_ID view = get_active_view(app, AccessAll); | ||||
|                 View_ID view = get_active_view(app, Access_Always); | ||||
|                 do_exit = do_gui_sure_to_close_4coder(app, view); | ||||
|             } | ||||
|         } | ||||
|  | @ -69,9 +69,9 @@ CUSTOM_DOC("Input consumption loop for default view behavior") | |||
|             continue; | ||||
|         } | ||||
|          | ||||
|         View_ID view = get_active_view(app, AccessAll); | ||||
|         View_ID view = get_active_view(app, Access_Always); | ||||
|          | ||||
|         Buffer_ID buffer = view_get_buffer(app, view, AccessAll); | ||||
|         Buffer_ID buffer = view_get_buffer(app, view, Access_Always); | ||||
|         Managed_Scope buffer_scope = buffer_get_managed_scope(app, buffer); | ||||
|         Command_Map_ID *map_id_ptr = | ||||
|             scope_attachment(app, buffer_scope, buffer_map_id, Command_Map_ID); | ||||
|  | @ -94,9 +94,9 @@ CUSTOM_DOC("Input consumption loop for default view behavior") | |||
|             Rewrite_Type *next_rewrite = scope_attachment(app, scope, view_next_rewrite_loc, Rewrite_Type); | ||||
|             *next_rewrite = Rewrite_None; | ||||
|             if (fcoder_mode == FCoderMode_NotepadLike){ | ||||
|                 for (View_ID view_it = get_view_next(app, 0, AccessAll); | ||||
|                 for (View_ID view_it = get_view_next(app, 0, Access_Always); | ||||
|                      view_it != 0; | ||||
|                      view_it = get_view_next(app, view_it, AccessAll)){ | ||||
|                      view_it = get_view_next(app, view_it, Access_Always)){ | ||||
|                     Managed_Scope scope_it = view_get_managed_scope(app, view_it); | ||||
|                     b32 *snap_mark_to_cursor = scope_attachment(app, scope_it, view_snap_mark_to_cursor, b32); | ||||
|                     *snap_mark_to_cursor = true; | ||||
|  | @ -112,9 +112,9 @@ CUSTOM_DOC("Input consumption loop for default view behavior") | |||
|                 Rewrite_Type *rewrite = scope_attachment(app, scope, view_rewrite_loc, Rewrite_Type); | ||||
|                 *rewrite = *next_rewrite; | ||||
|                 if (fcoder_mode == FCoderMode_NotepadLike){ | ||||
|                     for (View_ID view_it = get_view_next(app, 0, AccessAll); | ||||
|                     for (View_ID view_it = get_view_next(app, 0, Access_Always); | ||||
|                          view_it != 0; | ||||
|                          view_it = get_view_next(app, view_it, AccessAll)){ | ||||
|                          view_it = get_view_next(app, view_it, Access_Always)){ | ||||
|                         Managed_Scope scope_it = view_get_managed_scope(app, view_it); | ||||
|                         b32 *snap_mark_to_cursor = scope_attachment(app, scope_it, view_snap_mark_to_cursor, b32); | ||||
|                         if (*snap_mark_to_cursor){ | ||||
|  | @ -193,7 +193,7 @@ MODIFY_COLOR_TABLE_SIG(default_modify_color_table){ | |||
| 
 | ||||
| function Rect_f32 | ||||
| default_buffer_region(Application_Links *app, View_ID view_id, Rect_f32 region){ | ||||
|     Buffer_ID buffer = view_get_buffer(app, view_id, AccessAll); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view_id, Access_Always); | ||||
|     Face_ID face_id = get_face_id(app, buffer); | ||||
|     Face_Metrics metrics = get_face_metrics(app, face_id); | ||||
|     f32 line_height = metrics.line_height; | ||||
|  | @ -269,7 +269,7 @@ default_render_buffer(Application_Links *app, View_ID view_id, b32 is_active_vie | |||
|     if (global_config.use_error_highlight || global_config.use_jump_highlight){ | ||||
|         // NOTE(allen): Error highlight
 | ||||
|         String_Const_u8 name = string_u8_litexpr("*compilation*"); | ||||
|         Buffer_ID compilation_buffer = get_buffer_by_name(app, name, AccessAll); | ||||
|         Buffer_ID compilation_buffer = get_buffer_by_name(app, name, Access_Always); | ||||
|         if (global_config.use_error_highlight){ | ||||
|             draw_jump_highlights(app, buffer, text_layout_id, compilation_buffer, Stag_Highlight_Junk); | ||||
|         } | ||||
|  | @ -321,13 +321,13 @@ default_render_buffer(Application_Links *app, View_ID view_id, b32 is_active_vie | |||
| 
 | ||||
| function void | ||||
| default_render_caller(Application_Links *app, Frame_Info frame_info, View_ID view_id){ | ||||
|     View_ID active_view = get_active_view(app, AccessAll); | ||||
|     View_ID active_view = get_active_view(app, Access_Always); | ||||
|     b32 is_active_view = (active_view == view_id); | ||||
|      | ||||
|     Rect_f32 region = draw_background_and_margin(app, view_id, is_active_view); | ||||
|     Rect_f32 prev_clip = draw_set_clip(app, region); | ||||
|      | ||||
|     Buffer_ID buffer = view_get_buffer(app, view_id, AccessAll); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view_id, Access_Always); | ||||
|     Face_ID face_id = get_face_id(app, buffer); | ||||
|     Face_Metrics face_metrics = get_face_metrics(app, face_id); | ||||
|     f32 line_height = face_metrics.line_height; | ||||
|  |  | |||
|  | @ -173,7 +173,7 @@ draw_background_and_margin(Application_Links *app, View_ID view, b32 is_active_v | |||
| 
 | ||||
| function Rect_f32 | ||||
| draw_background_and_margin(Application_Links *app, View_ID view){ | ||||
|     View_ID active_view = get_active_view(app, AccessAll); | ||||
|     View_ID active_view = get_active_view(app, Access_Always); | ||||
|     b32 is_active_view = (active_view == view); | ||||
|     return(draw_background_and_margin(app, view, is_active_view)); | ||||
| } | ||||
|  |  | |||
|  | @ -80,8 +80,8 @@ rewrite_lines_to_lf(Application_Links *app, Buffer_ID buffer){ | |||
| CUSTOM_COMMAND_SIG(set_eol_mode_to_crlf) | ||||
| CUSTOM_DOC("Puts the buffer in crlf line ending mode.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     Managed_Scope scope = buffer_get_managed_scope(app, buffer); | ||||
|     Line_Ending_Kind *eol_setting = scope_attachment(app, scope, buffer_eol_setting, | ||||
|                                                      Line_Ending_Kind); | ||||
|  | @ -91,8 +91,8 @@ CUSTOM_DOC("Puts the buffer in crlf line ending mode.") | |||
| CUSTOM_COMMAND_SIG(set_eol_mode_to_lf) | ||||
| CUSTOM_DOC("Puts the buffer in lf line ending mode.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     Managed_Scope scope = buffer_get_managed_scope(app, buffer); | ||||
|     Line_Ending_Kind *eol_setting = scope_attachment(app, scope, buffer_eol_setting, | ||||
|                                                      Line_Ending_Kind); | ||||
|  | @ -102,8 +102,8 @@ CUSTOM_DOC("Puts the buffer in lf line ending mode.") | |||
| CUSTOM_COMMAND_SIG(set_eol_mode_to_binary) | ||||
| CUSTOM_DOC("Puts the buffer in bin line ending mode.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     Managed_Scope scope = buffer_get_managed_scope(app, buffer); | ||||
|     Line_Ending_Kind *eol_setting = scope_attachment(app, scope, buffer_eol_setting, | ||||
|                                                      Line_Ending_Kind); | ||||
|  | @ -113,8 +113,8 @@ CUSTOM_DOC("Puts the buffer in bin line ending mode.") | |||
| CUSTOM_COMMAND_SIG(set_eol_mode_from_contents) | ||||
| CUSTOM_DOC("Sets the buffer's line ending mode to match the contents of the buffer.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     Line_Ending_Kind setting = guess_line_ending_kind_from_buffer_contents(app, buffer); | ||||
|     Managed_Scope scope = buffer_get_managed_scope(app, buffer); | ||||
|     Line_Ending_Kind *eol_setting = scope_attachment(app, scope, buffer_eol_setting, | ||||
|  |  | |||
|  | @ -207,7 +207,7 @@ static void | |||
| list_all_functions(Application_Links *app, Buffer_ID optional_target_buffer){ | ||||
|     // TODO(allen): Use create or switch to buffer and clear here?
 | ||||
|     String_Const_u8 decls_name = string_u8_litexpr("*decls*"); | ||||
|     Buffer_ID decls_buffer = get_buffer_by_name(app, decls_name, AccessAll); | ||||
|     Buffer_ID decls_buffer = get_buffer_by_name(app, decls_name, Access_Always); | ||||
|     if (!buffer_exists(app, decls_buffer)){ | ||||
|         decls_buffer = create_buffer(app, decls_name, BufferCreate_AlwaysNew); | ||||
|         buffer_set_setting(app, decls_buffer, BufferSetting_Unimportant, true); | ||||
|  | @ -228,9 +228,9 @@ list_all_functions(Application_Links *app, Buffer_ID optional_target_buffer){ | |||
|     Cursor insertion_cursor = make_cursor(push_array(scratch, u8, KB(256)), KB(256)); | ||||
|     Buffer_Insertion out = begin_buffer_insertion_at_buffered(app, decls_buffer, 0, &insertion_cursor); | ||||
|      | ||||
|     for (Buffer_ID buffer_it = get_buffer_next(app, 0, AccessAll); | ||||
|     for (Buffer_ID buffer_it = get_buffer_next(app, 0, Access_Always); | ||||
|          buffer_it != 0; | ||||
|          buffer_it = get_buffer_next(app, buffer_it, AccessAll)){ | ||||
|          buffer_it = get_buffer_next(app, buffer_it, Access_Always)){ | ||||
|         Buffer_ID buffer = buffer_it; | ||||
|         if (optional_target_buffer != 0){ | ||||
|             buffer = optional_target_buffer; | ||||
|  | @ -258,7 +258,7 @@ list_all_functions(Application_Links *app, Buffer_ID optional_target_buffer){ | |||
|      | ||||
|     end_buffer_insertion(&out); | ||||
|      | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     view_set_buffer(app, view, decls_buffer, 0); | ||||
|      | ||||
|     lock_jump_buffer(app, decls_name); | ||||
|  | @ -267,8 +267,8 @@ list_all_functions(Application_Links *app, Buffer_ID optional_target_buffer){ | |||
| CUSTOM_COMMAND_SIG(list_all_functions_current_buffer) | ||||
| CUSTOM_DOC("Creates a jump list of lines of the current buffer that appear to define or declare functions.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|     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); | ||||
|     } | ||||
|  | @ -277,11 +277,11 @@ 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.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|     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, AccessAll); | ||||
|         view = get_active_view(app, Access_Always); | ||||
|         open_jump_lister(app, &global_heap, view, buffer, JumpListerActivation_OpenInUIView, 0); | ||||
|     } | ||||
| } | ||||
|  | @ -296,8 +296,8 @@ 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.") | ||||
| { | ||||
|     list_all_functions(app, 0); | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_Always); | ||||
|     open_jump_lister(app, &global_heap, view, buffer, JumpListerActivation_OpenInUIView, 0); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -145,7 +145,7 @@ buffer_seek_character_class_change_0_1(Application_Links *app, Buffer_ID buffer, | |||
| 
 | ||||
| internal i64 | ||||
| view_pos_from_xy(Application_Links *app, View_ID view, Vec2_f32 p){ | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|     Rect_f32 region = view_get_buffer_region(app, view); | ||||
|     f32 width = rect_width(region); | ||||
|     Face_ID face_id = get_face_id(app, buffer); | ||||
|  | @ -912,13 +912,13 @@ push_whole_buffer(Application_Links *app, Arena *arena, Buffer_ID buffer){ | |||
| 
 | ||||
| internal String_Const_u8 | ||||
| push_view_range_string(Application_Links *app, Arena *arena, View_ID view){ | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|     return(push_buffer_range(app, arena, buffer, get_view_range(app, view))); | ||||
| } | ||||
| 
 | ||||
| internal String_Const_u8 | ||||
| push_view_range_string(Application_Links *app, Arena *arena){ | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     return(push_view_range_string(app, arena, view)); | ||||
| } | ||||
| 
 | ||||
|  | @ -1042,7 +1042,7 @@ move_past_lead_whitespace(Application_Links *app, View_ID view, Buffer_ID buffer | |||
| 
 | ||||
| internal void | ||||
| move_past_lead_whitespace(Application_Links *app, View_ID view){ | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|     move_past_lead_whitespace(app, view, buffer); | ||||
| } | ||||
| 
 | ||||
|  | @ -1250,9 +1250,9 @@ clear_buffer(Application_Links *app, Buffer_ID buffer){ | |||
| internal String_Match_List | ||||
| find_all_matches_all_buffers(Application_Links *app, Arena *arena, String_Const_u8_Array match_patterns, String_Match_Flag must_have_flags, String_Match_Flag must_not_have_flags){ | ||||
|     String_Match_List all_matches = {}; | ||||
|     for (Buffer_ID buffer = get_buffer_next(app, 0, AccessAll); | ||||
|     for (Buffer_ID buffer = get_buffer_next(app, 0, Access_Always); | ||||
|          buffer != 0; | ||||
|          buffer = get_buffer_next(app, buffer, AccessAll)){ | ||||
|          buffer = get_buffer_next(app, buffer, Access_Always)){ | ||||
|         String_Match_List buffer_matches = {}; | ||||
|         for (i32 i = 0; i < match_patterns.count; i += 1){ | ||||
|             Range_i64 range = buffer_range(app, buffer); | ||||
|  | @ -1329,7 +1329,7 @@ backspace_utf8(String_Const_u8 string){ | |||
| 
 | ||||
| Query_Bar_Group::Query_Bar_Group(Application_Links *app){ | ||||
|     this->app = app; | ||||
|     this->view = get_active_view(app, AccessAll); | ||||
|     this->view = get_active_view(app, Access_Always); | ||||
| } | ||||
| 
 | ||||
| Query_Bar_Group::Query_Bar_Group(Application_Links *app, View_ID view){ | ||||
|  | @ -1457,9 +1457,9 @@ buffer_identifier_to_id(Application_Links *app, Buffer_Identifier identifier){ | |||
|     } | ||||
|     else{ | ||||
|         String_Const_u8 name = SCu8(identifier.name, identifier.name_len); | ||||
|         id = get_buffer_by_name(app, name, AccessAll); | ||||
|         id = get_buffer_by_name(app, name, Access_Always); | ||||
|         if (id == 0){ | ||||
|             id = get_buffer_by_file_name(app, name, AccessAll); | ||||
|             id = get_buffer_by_file_name(app, name, Access_Always); | ||||
|         } | ||||
|     } | ||||
|     return(id); | ||||
|  | @ -1470,7 +1470,7 @@ buffer_identifier_to_id_create_out_buffer(Application_Links *app, Buffer_Identif | |||
|     Buffer_ID result = 0; | ||||
|     if (buffer_id.name != 0 && buffer_id.name_len > 0){ | ||||
|         String_Const_u8 buffer_name = SCu8(buffer_id.name, buffer_id.name_len); | ||||
|         Buffer_ID buffer_attach_id = get_buffer_by_name(app, buffer_name, AccessAll); | ||||
|         Buffer_ID buffer_attach_id = get_buffer_by_name(app, buffer_name, Access_Always); | ||||
|         if (buffer_attach_id != 0){ | ||||
|             result = buffer_attach_id; | ||||
|         } | ||||
|  | @ -1493,8 +1493,8 @@ buffer_identifier_to_id_create_out_buffer(Application_Links *app, Buffer_Identif | |||
| 
 | ||||
| function void | ||||
| place_begin_and_end_on_own_lines(Application_Links *app, char *begin, char *end){ | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|      | ||||
|     Range_i64 range = get_view_range(app, view); | ||||
|     Range_i64 lines = get_line_range_from_pos_range(app, buffer, range); | ||||
|  | @ -1548,18 +1548,39 @@ place_begin_and_end_on_own_lines(Application_Links *app, char *begin, char *end) | |||
| 
 | ||||
| ////////////////////////////////
 | ||||
| 
 | ||||
| function Face_ID | ||||
| get_view_face_id(Application_Links *app, View_ID view){ | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_Always); | ||||
|     return(get_face_id(app, buffer)); | ||||
| } | ||||
| 
 | ||||
| function Face_Metrics | ||||
| get_view_face_metrics(Application_Links *app, View_ID view){ | ||||
|     Face_ID face = get_view_face_id(app, view); | ||||
|     return(get_face_metrics(app, face)); | ||||
| } | ||||
| 
 | ||||
| function f32 | ||||
| get_view_line_height(Application_Links *app, View_ID view){ | ||||
|     Face_Metrics metrics = get_view_face_metrics(app, view); | ||||
|     return(metrics.line_height); | ||||
| } | ||||
| 
 | ||||
| internal View_ID | ||||
| open_view(Application_Links *app, View_ID view_location, View_Split_Position position){ | ||||
|     View_ID result = 0; | ||||
|     if (view_location != 0 && view_exists(app, view_location)){ | ||||
|         Panel_ID panel_id = view_get_panel(app, view_location); | ||||
|         if (panel_id != 0){ | ||||
|             b32 vertical = (position == ViewSplit_Left || position == ViewSplit_Right); | ||||
|             if (panel_split(app, panel_id, vertical?PanelSplit_LeftAndRight:PanelSplit_TopAndBottom)){ | ||||
|                 Panel_Child child = (position == ViewSplit_Left || position == ViewSplit_Top)?PanelChild_Min:PanelChild_Max; | ||||
|                 Panel_ID new_panel_id = panel_get_child(app, panel_id, child); | ||||
|             Dimension split = (position == ViewSplit_Left || | ||||
|                                position == ViewSplit_Right)?Dimension_X:Dimension_Y; | ||||
|             Side side = (position == ViewSplit_Left || | ||||
|                          position == ViewSplit_Top)?Side_Min:Side_Max; | ||||
|             if (panel_split(app, panel_id, split)){ | ||||
|                 Panel_ID new_panel_id = panel_get_child(app, panel_id, side); | ||||
|                 if (new_panel_id != 0){ | ||||
|                     View_ID new_view_id = panel_get_view(app, new_panel_id); | ||||
|                     View_ID new_view_id = panel_get_view(app, new_panel_id, | ||||
|                                                          Access_Always); | ||||
|                     if (new_view_id != 0){ | ||||
|                         result = new_view_id; | ||||
|                     } | ||||
|  | @ -1574,10 +1595,10 @@ internal View_ID | |||
| get_first_view_with_buffer(Application_Links *app, Buffer_ID buffer_id){ | ||||
|     View_ID result = {}; | ||||
|     if (buffer_id != 0){ | ||||
|         for (View_ID test = get_view_next(app, 0, AccessAll); | ||||
|         for (View_ID test = get_view_next(app, 0, Access_Always); | ||||
|              test != 0; | ||||
|              test = get_view_next(app, test, AccessAll)){ | ||||
|             Buffer_ID test_buffer = view_get_buffer(app, test, AccessAll); | ||||
|              test = get_view_next(app, test, Access_Always)){ | ||||
|             Buffer_ID test_buffer = view_get_buffer(app, test, Access_Always); | ||||
|             if (test_buffer == buffer_id){ | ||||
|                 result = test; | ||||
|                 break; | ||||
|  | @ -1590,7 +1611,7 @@ get_first_view_with_buffer(Application_Links *app, Buffer_ID buffer_id){ | |||
| internal b32 | ||||
| open_file(Application_Links *app, Buffer_ID *buffer_out, String_Const_u8 file_name, b32 background, b32 never_new){ | ||||
|     b32 result = false; | ||||
|     Buffer_ID buffer = get_buffer_by_name(app, file_name, AccessProtected); | ||||
|     Buffer_ID buffer = get_buffer_by_name(app, file_name, Access_ReadVisible); | ||||
|     b32 exists = buffer_exists(app, buffer); | ||||
|     if (!exists){ | ||||
|         Buffer_Create_Flag flags = 0; | ||||
|  | @ -1640,7 +1661,7 @@ internal void | |||
| view_set_highlight_range(Application_Links *app, View_ID view, Range_i64 range){ | ||||
|     view_disable_highlight_range(app, view); | ||||
|      | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessAll); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_Always); | ||||
|     Managed_Scope scope = view_get_managed_scope(app, view); | ||||
|     Managed_Object *highlight = scope_attachment(app, scope, view_highlight_range, Managed_Object); | ||||
|     *highlight = alloc_buffer_markers_on_buffer(app, buffer, 2, &scope); | ||||
|  | @ -1669,9 +1690,10 @@ view_look_at_region(Application_Links *app, View_ID view, i64 major_pos, i64 min | |||
|             f32 skirt_height = view_height*.1f; | ||||
|             Interval_f32 acceptable_y = If32(skirt_height, view_height*.9f); | ||||
|              | ||||
|             f32 target_height = view_line_y_difference(app, view, bottom.line, top.line); | ||||
|             f32 target_height = view_line_y_difference(app, view, bottom.line + 1, top.line); | ||||
|              | ||||
|             if (target_height > view_height){ | ||||
|             f32 line_height = get_view_line_height(app, view); | ||||
|             if (target_height + 2*line_height > view_height){ | ||||
|                 i64 major_line = bottom.line; | ||||
|                 if (range.min == major_pos){ | ||||
|                     major_line = top.line; | ||||
|  | @ -1689,7 +1711,7 @@ view_look_at_region(Application_Links *app, View_ID view, i64 major_pos, i64 min | |||
|                 if (top_p.y < acceptable_y.min){ | ||||
|                     scroll.target.line_number = top.line; | ||||
|                     scroll.target.pixel_shift.y = -skirt_height; | ||||
|                     view_set_buffer_scroll(app, view, scroll, SetBufferScroll_SnapCursorIntoView); | ||||
|                     view_set_buffer_scroll(app, view, scroll, SetBufferScroll_NoCursorChange); | ||||
|                 } | ||||
|                 else{ | ||||
|                     Vec2_f32 bot_p = view_relative_xy_of_pos(app, view, scroll.position.line_number, range.max); | ||||
|  | @ -1697,7 +1719,7 @@ view_look_at_region(Application_Links *app, View_ID view, i64 major_pos, i64 min | |||
|                     if (bot_p.y > acceptable_y.max){ | ||||
|                         scroll.target.line_number = bottom.line; | ||||
|                         scroll.target.pixel_shift.y = skirt_height - view_height; | ||||
|                         view_set_buffer_scroll(app, view, scroll, SetBufferScroll_SnapCursorIntoView); | ||||
|                         view_set_buffer_scroll(app, view, scroll, SetBufferScroll_NoCursorChange); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|  | @ -1705,6 +1727,11 @@ view_look_at_region(Application_Links *app, View_ID view, i64 major_pos, i64 min | |||
|     } | ||||
| } | ||||
| 
 | ||||
| function void | ||||
| view_look_at_region(Application_Links *app, View_ID view, Range_i64 range){ | ||||
|     view_look_at_region(app, view, range.min, range.max); | ||||
| } | ||||
| 
 | ||||
| ////////////////////////////////
 | ||||
| 
 | ||||
| internal View_ID | ||||
|  | @ -1782,8 +1809,8 @@ push_token_or_word_under_pos(Application_Links *app, Arena *arena, Buffer_ID buf | |||
| 
 | ||||
| internal String_Const_u8 | ||||
| push_token_or_word_under_active_cursor(Application_Links *app, Arena *arena){ | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_Always); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     return(push_token_or_word_under_pos(app, arena, buffer, pos)); | ||||
| } | ||||
|  | @ -1989,7 +2016,7 @@ if_view_has_highlighted_range_delete_range(Application_Links *app, View_ID view_ | |||
|     b32 result = false; | ||||
|     if (view_has_highlighted_range(app, view_id)){ | ||||
|         Range_i64 range = get_view_range(app, view_id); | ||||
|         Buffer_ID buffer = view_get_buffer(app, view_id, AccessOpen); | ||||
|         Buffer_ID buffer = view_get_buffer(app, view_id, Access_ReadWriteVisible); | ||||
|         buffer_replace_range(app, buffer, range, string_u8_litexpr("")); | ||||
|         result = true; | ||||
|     } | ||||
|  | @ -1999,9 +2026,9 @@ if_view_has_highlighted_range_delete_range(Application_Links *app, View_ID view_ | |||
| internal void | ||||
| begin_notepad_mode(Application_Links *app){ | ||||
|     fcoder_mode = FCoderMode_NotepadLike; | ||||
|     for (View_ID view = get_view_next(app, 0, AccessAll); | ||||
|     for (View_ID view = get_view_next(app, 0, Access_Always); | ||||
|          view != 0; | ||||
|          view = get_view_next(app, view, AccessAll)){ | ||||
|          view = get_view_next(app, view, Access_Always)){ | ||||
|         i64 pos = view_get_cursor_pos(app, view); | ||||
|         view_set_mark(app, view, seek_pos(pos)); | ||||
|     } | ||||
|  | @ -2011,8 +2038,8 @@ begin_notepad_mode(Application_Links *app){ | |||
| 
 | ||||
| internal void | ||||
| seek_pos_of_textual_line(Application_Links *app, Side side){ | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     i64 new_pos = get_line_side_pos_from_pos(app, buffer, pos, side); | ||||
|     view_set_cursor_and_preferred_x(app, view, seek_pos(new_pos)); | ||||
|  | @ -2021,7 +2048,7 @@ seek_pos_of_textual_line(Application_Links *app, Side side){ | |||
| 
 | ||||
| internal void | ||||
| seek_pos_of_visual_line(Application_Links *app, Side side){ | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     Buffer_Cursor cursor = view_compute_cursor(app, view, seek_pos(pos)); | ||||
|     Vec2_f32 p = view_relative_xy_of_pos(app, view, cursor.line, pos); | ||||
|  | @ -2058,7 +2085,7 @@ CUSTOM_DOC("Seeks the cursor to the end of the visual line.") | |||
| CUSTOM_COMMAND_SIG(goto_beginning_of_file) | ||||
| CUSTOM_DOC("Sets the cursor to the beginning of the file.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     view_set_cursor_and_preferred_x(app, view, seek_pos(0)); | ||||
|     no_mark_snap_to_cursor_if_shift(app, view); | ||||
| } | ||||
|  | @ -2066,8 +2093,8 @@ CUSTOM_DOC("Sets the cursor to the beginning of the file.") | |||
| CUSTOM_COMMAND_SIG(goto_end_of_file) | ||||
| CUSTOM_DOC("Sets the cursor to the end of the file.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     Buffer_ID buffer_id = view_get_buffer(app, view, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Buffer_ID buffer_id = view_get_buffer(app, view, Access_ReadVisible); | ||||
|     i32 size = (i32)buffer_get_size(app, buffer_id); | ||||
|     view_set_cursor_and_preferred_x(app, view, seek_pos(size)); | ||||
|     no_mark_snap_to_cursor_if_shift(app, view); | ||||
|  | @ -2083,7 +2110,7 @@ view_set_split(Application_Links *app, View_ID view, View_Split_Kind kind, f32 t | |||
|         if (panel_id != 0){ | ||||
|             Panel_ID parent_panel_id = panel_get_parent(app, panel_id); | ||||
|             if (parent_panel_id != 0){ | ||||
|                 Panel_ID min_child_id = panel_get_child(app, parent_panel_id, PanelChild_Min); | ||||
|                 Panel_ID min_child_id = panel_get_child(app, parent_panel_id, Side_Min); | ||||
|                 if (min_child_id != 0){ | ||||
|                     b32 panel_is_min = (min_child_id == panel_id); | ||||
|                     Panel_Split_Kind panel_kind = ((kind == ViewSplitKind_Ratio)? | ||||
|  |  | |||
|  | @ -31,8 +31,8 @@ begin_buffer_insertion_at_buffered(Application_Links *app, Buffer_ID buffer_id, | |||
| 
 | ||||
| static Buffer_Insertion | ||||
| begin_buffer_insertion(Application_Links *app){ | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_Always); | ||||
|     i64 cursor_pos = view_get_cursor_pos(app, view); | ||||
|     Buffer_Insertion result = begin_buffer_insertion_at(app, buffer, cursor_pos); | ||||
|     return(result); | ||||
|  |  | |||
|  | @ -36,14 +36,16 @@ activate_jump(Application_Links *app, | |||
|             case JumpListerActivation_OpenInNextViewKeepUI: | ||||
|             { | ||||
|                 target_view = view; | ||||
|                 target_view = get_next_view_looped_primary_panels(app, target_view, AccessAll); | ||||
|                 target_view = get_next_view_looped_primary_panels(app, target_view, | ||||
|                                                                   Access_Always); | ||||
|                 result_code = ListerActivation_Continue; | ||||
|             }break; | ||||
|              | ||||
|             case JumpListerActivation_OpenInNextViewCloseUI: | ||||
|             { | ||||
|                 target_view = view; | ||||
|                 target_view = get_next_view_looped_primary_panels(app, target_view, AccessAll); | ||||
|                 target_view = get_next_view_looped_primary_panels(app, target_view, | ||||
|                                                                   Access_Always); | ||||
|                 result_code = ListerActivation_Finished; | ||||
|             }break; | ||||
|         } | ||||
|  | @ -102,8 +104,8 @@ open_jump_lister(Application_Links *app, Heap *heap, View_ID ui_view, Buffer_ID | |||
| 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") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_Always); | ||||
|     open_jump_lister(app, &global_heap, view, buffer, JumpListerActivation_OpenInNextViewKeepUI, 0); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -348,8 +348,8 @@ CUSTOM_DOC("If the cursor is found to be on a jump location, parses the jump loc | |||
| { | ||||
|     Heap *heap = &global_heap; | ||||
|      | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|     Marker_List *list = get_or_make_list_for_buffer(app, heap, buffer); | ||||
|      | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|  | @ -362,7 +362,7 @@ CUSTOM_DOC("If the cursor is found to be on a jump location, parses the jump loc | |||
|         if (get_jump_from_list(app, list, list_index, &location)){ | ||||
|             if (get_jump_buffer(app, &buffer, &location)){ | ||||
|                 change_active_panel(app); | ||||
|                 View_ID target_view = get_active_view(app, AccessAll); | ||||
|                 View_ID target_view = get_active_view(app, Access_Always); | ||||
|                 switch_to_existing_view(app, target_view, buffer); | ||||
|                 jump_to_location(app, target_view, buffer, location); | ||||
|             } | ||||
|  | @ -375,8 +375,8 @@ CUSTOM_DOC("If the cursor is found to be on a jump location, parses the jump loc | |||
| { | ||||
|     Heap *heap = &global_heap; | ||||
|      | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|      | ||||
|     Marker_List *list = get_or_make_list_for_buffer(app, heap, buffer); | ||||
|      | ||||
|  | @ -399,10 +399,10 @@ internal void | |||
| goto_jump_in_order(Application_Links *app, Marker_List *list, View_ID jump_view, ID_Pos_Jump_Location location){ | ||||
|     Buffer_ID buffer = {}; | ||||
|     if (get_jump_buffer(app, &buffer, &location)){ | ||||
|         View_ID target_view = get_active_view(app, AccessAll); | ||||
|         View_ID target_view = get_active_view(app, Access_Always); | ||||
|         if (target_view == jump_view){ | ||||
|             change_active_panel(app); | ||||
|             target_view = get_active_view(app, AccessAll); | ||||
|             target_view = get_active_view(app, Access_Always); | ||||
|         } | ||||
|         switch_to_existing_view(app, target_view, buffer); | ||||
|         jump_to_location(app, target_view, buffer, location); | ||||
|  | @ -449,7 +449,7 @@ get_locked_jump_state(Application_Links *app, Heap *heap){ | |||
|     Locked_Jump_State result = {}; | ||||
|     result.view = get_view_for_locked_jump_buffer(app); | ||||
|     if (result.view != 0){ | ||||
|         Buffer_ID buffer = view_get_buffer(app, result.view, AccessAll); | ||||
|         Buffer_ID buffer = view_get_buffer(app, result.view, Access_Always); | ||||
|         result.list = get_or_make_list_for_buffer(app, heap, buffer); | ||||
|          | ||||
|         i64 cursor_position = view_get_cursor_pos(app, result.view); | ||||
|  | @ -562,10 +562,10 @@ CUSTOM_DOC("If a buffer containing jump locations has been locked in, goes to th | |||
| CUSTOM_COMMAND_SIG(if_read_only_goto_position) | ||||
| CUSTOM_DOC("If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     if (buffer == 0){ | ||||
|         buffer = view_get_buffer(app, view, AccessProtected); | ||||
|         buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|         if (buffer != 0){ | ||||
|             goto_jump_at_cursor(app); | ||||
|             lock_jump_buffer(app, buffer); | ||||
|  | @ -579,10 +579,10 @@ CUSTOM_DOC("If the buffer in the active view is writable, inserts a character, o | |||
| CUSTOM_COMMAND_SIG(if_read_only_goto_position_same_panel) | ||||
| CUSTOM_DOC("If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor_same_panel.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     if (buffer == 0){ | ||||
|         buffer = view_get_buffer(app, view, AccessProtected); | ||||
|         buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|         if (buffer != 0){ | ||||
|             goto_jump_at_cursor_same_panel(app); | ||||
|             lock_jump_buffer(app, buffer); | ||||
|  |  | |||
|  | @ -219,12 +219,12 @@ get_jump_buffer(Application_Links *app, Buffer_ID *buffer, ID_Pos_Jump_Location | |||
| 
 | ||||
| static b32 | ||||
| get_jump_buffer(Application_Links *app, Buffer_ID *buffer, ID_Pos_Jump_Location *location){ | ||||
|     return(get_jump_buffer(app, buffer, location, AccessAll)); | ||||
|     return(get_jump_buffer(app, buffer, location, Access_Always)); | ||||
| } | ||||
| 
 | ||||
| static View_ID | ||||
| switch_to_existing_view(Application_Links *app, View_ID view, Buffer_ID buffer){ | ||||
|     Buffer_ID current_buffer = view_get_buffer(app, view, AccessAll); | ||||
|     Buffer_ID current_buffer = view_get_buffer(app, view, Access_Always); | ||||
|     if (view != 0 || current_buffer != buffer){ | ||||
|         View_ID existing_view = get_first_view_with_buffer(app, buffer); | ||||
|         if (existing_view != 0){ | ||||
|  | @ -236,7 +236,7 @@ switch_to_existing_view(Application_Links *app, View_ID view, Buffer_ID buffer){ | |||
| 
 | ||||
| static void | ||||
| set_view_to_location(Application_Links *app, View_ID view, Buffer_ID buffer, Buffer_Seek seek){ | ||||
|     Buffer_ID current_buffer = view_get_buffer(app, view, AccessAll); | ||||
|     Buffer_ID current_buffer = view_get_buffer(app, view, Access_Always); | ||||
|     if (current_buffer != buffer){ | ||||
|         view_set_buffer(app, view, buffer, 0); | ||||
|     } | ||||
|  | @ -293,7 +293,7 @@ seek_next_jump_in_buffer(Application_Links *app, Arena *arena, | |||
| static ID_Line_Column_Jump_Location | ||||
| convert_name_based_to_id_based(Application_Links *app, Name_Line_Column_Location loc){ | ||||
|     ID_Line_Column_Jump_Location result = {}; | ||||
|     Buffer_ID buffer = get_buffer_by_name(app, loc.file, AccessAll); | ||||
|     Buffer_ID buffer = get_buffer_by_name(app, loc.file, Access_Always); | ||||
|     if (buffer != 0){ | ||||
|         result.buffer_id = buffer; | ||||
|         result.line = loc.line; | ||||
|  | @ -307,7 +307,7 @@ seek_next_jump_in_view(Application_Links *app, Arena *arena, View_ID view, i32 s | |||
|     i64 cursor_position = view_get_cursor_pos(app, view); | ||||
|     Buffer_Cursor cursor = view_compute_cursor(app, view, seek_pos(cursor_position)); | ||||
|     i64 line = cursor.line; | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessAll); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_Always); | ||||
|     Parsed_Jump jump = seek_next_jump_in_buffer(app, arena, buffer, line + direction, skip_sub_errors, direction, &line); | ||||
|     if (jump.success){ | ||||
|         *line_out = line; | ||||
|  | @ -370,10 +370,10 @@ seek_jump_(Application_Links *app, b32 skip_repeats, b32 skip_sub_errors, i32 di | |||
|         if (advance_cursor_in_jump_view(app, view, skip_repeats, skip_sub_errors, direction, &location)){ | ||||
|             Buffer_ID buffer = {}; | ||||
|             if (get_jump_buffer(app, &buffer, &location)){ | ||||
|                 View_ID target_view = get_active_view(app, AccessAll); | ||||
|                 View_ID target_view = get_active_view(app, Access_Always); | ||||
|                 if (target_view == view){ | ||||
|                     change_active_panel(app); | ||||
|                     target_view = get_active_view(app, AccessAll); | ||||
|                     target_view = get_active_view(app, Access_Always); | ||||
|                 } | ||||
|                 switch_to_existing_view(app, target_view, buffer); | ||||
|                 jump_to_location(app, target_view, buffer, location); | ||||
|  |  | |||
|  | @ -164,7 +164,7 @@ lister_render(Application_Links *app, Frame_Info frame_info, View_ID view){ | |||
|         showing_file_bar && | ||||
|         !global_config.hide_file_bar_in_ui){ | ||||
|         Rect_f32_Pair pair = layout_file_bar_on_top(region, line_height); | ||||
|         Buffer_ID buffer = view_get_buffer(app, view, AccessAll); | ||||
|         Buffer_ID buffer = view_get_buffer(app, view, Access_Always); | ||||
|         draw_file_bar(app, view, buffer, face_id, pair.min); | ||||
|         region = pair.max; | ||||
|     } | ||||
|  | @ -725,7 +725,7 @@ lister_add_item(Lister *lister, String_Const_u8 string, String_Const_u8 status, | |||
| 
 | ||||
| function void | ||||
| lister__write_string__default(Application_Links *app){ | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     Lister *lister = view_get_lister(view); | ||||
|     if (lister != 0){ | ||||
|         User_Input in = get_current_input(app); | ||||
|  | @ -742,7 +742,7 @@ lister__write_string__default(Application_Links *app){ | |||
| 
 | ||||
| function void | ||||
| lister__backspace_text_field__default(Application_Links *app){ | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     Lister *lister = view_get_lister(view); | ||||
|     if (lister != 0){ | ||||
|         lister->text_field.string = backspace_utf8(lister->text_field.string); | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ such as open file, switch buffer, or kill buffer. | |||
| 
 | ||||
| function void | ||||
| lister__write_character__file_path(Application_Links *app){ | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     Lister *lister = view_get_lister(view); | ||||
|     if (lister != 0){ | ||||
|         User_Input in = get_current_input(app); | ||||
|  | @ -30,7 +30,7 @@ lister__write_character__file_path(Application_Links *app){ | |||
| 
 | ||||
| function void | ||||
| lister__backspace_text_field__file_path(Application_Links *app){ | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     Lister *lister = view_get_lister(view); | ||||
|     if (lister != 0){ | ||||
|         if (lister->text_field.size > 0){ | ||||
|  | @ -68,7 +68,7 @@ lister__backspace_text_field__file_path(Application_Links *app){ | |||
| function Lister_Activation_Code | ||||
| lister__key_stroke__fixed_list(Application_Links *app){ | ||||
|     Lister_Activation_Code result = ListerActivation_Continue; | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     Lister *lister = view_get_lister(view); | ||||
|     if (lister != 0){ | ||||
|         User_Input in = get_current_input(app); | ||||
|  | @ -223,10 +223,10 @@ generate_all_buffers_list(Application_Links *app, Lister *lister){ | |||
|      | ||||
|     // List currently viewed buffers
 | ||||
|     { | ||||
|         for (View_ID view = get_view_next(app, 0, AccessAll); | ||||
|         for (View_ID view = get_view_next(app, 0, Access_Always); | ||||
|              view != 0; | ||||
|              view = get_view_next(app, view, AccessAll)){ | ||||
|             Buffer_ID new_buffer_id = view_get_buffer(app, view, AccessAll); | ||||
|              view = get_view_next(app, view, Access_Always)){ | ||||
|             Buffer_ID new_buffer_id = view_get_buffer(app, view, Access_Always); | ||||
|             for (i32 i = 0; i < currently_viewed_buffer_count; i += 1){ | ||||
|                 if (new_buffer_id == buffers_currently_being_viewed[i]){ | ||||
|                     goto skip0; | ||||
|  | @ -239,9 +239,9 @@ generate_all_buffers_list(Application_Links *app, Lister *lister){ | |||
|      | ||||
|     // Regular Buffers
 | ||||
|     { | ||||
|         for (Buffer_ID buffer = get_buffer_next(app, 0, AccessAll); | ||||
|         for (Buffer_ID buffer = get_buffer_next(app, 0, Access_Always); | ||||
|              buffer != 0; | ||||
|              buffer = get_buffer_next(app, buffer, AccessAll)){ | ||||
|              buffer = get_buffer_next(app, buffer, Access_Always)){ | ||||
|             for (i32 i = 0; i < currently_viewed_buffer_count; i += 1){ | ||||
|                 if (buffer == buffers_currently_being_viewed[i]){ | ||||
|                     goto skip1; | ||||
|  | @ -255,9 +255,9 @@ generate_all_buffers_list(Application_Links *app, Lister *lister){ | |||
|     } | ||||
|     // Buffers Starting with *
 | ||||
|     { | ||||
|         for (Buffer_ID buffer = get_buffer_next(app, 0, AccessAll); | ||||
|         for (Buffer_ID buffer = get_buffer_next(app, 0, Access_Always); | ||||
|              buffer != 0; | ||||
|              buffer = get_buffer_next(app, buffer, AccessAll)){ | ||||
|              buffer = get_buffer_next(app, buffer, Access_Always)){ | ||||
|             for (i32 i = 0; i < currently_viewed_buffer_count; i += 1){ | ||||
|                 if (buffer == buffers_currently_being_viewed[i]){ | ||||
|                     goto skip2; | ||||
|  | @ -324,7 +324,7 @@ generate_hot_directory_file_list(Application_Links *app, Lister *lister){ | |||
|                 string_list_push(lister->arena, &list, hot); | ||||
|                 string_list_push_overlap(lister->arena, &list, '/', (**info).file_name); | ||||
|                 String_Const_u8 full_file_path = string_list_flatten(lister->arena, list); | ||||
|                 buffer = get_buffer_by_file_name(app, full_file_path, AccessAll); | ||||
|                 buffer = get_buffer_by_file_name(app, full_file_path, Access_Always); | ||||
|                 end_temp(path_temp); | ||||
|             } | ||||
|              | ||||
|  | @ -487,7 +487,7 @@ activate_switch_buffer(Application_Links *app, | |||
| CUSTOM_COMMAND_SIG(interactive_switch_buffer) | ||||
| CUSTOM_DOC("Interactively switch to an open buffer.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     run_lister_buffer_list(app, "Switch:", activate_switch_buffer, 0, 0, view); | ||||
| } | ||||
| 
 | ||||
|  | @ -506,7 +506,7 @@ activate_kill_buffer(Application_Links *app, | |||
| CUSTOM_COMMAND_SIG(interactive_kill_buffer) | ||||
| CUSTOM_DOC("Interactively kill an open buffer.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     run_lister_buffer_list(app, "Kill:", activate_kill_buffer, 0, 0, view); | ||||
| } | ||||
| 
 | ||||
|  | @ -577,7 +577,7 @@ activate_open_or_new(Application_Links *app, | |||
| CUSTOM_COMMAND_SIG(interactive_open_or_new) | ||||
| CUSTOM_DOC("Interactively open a file out of the file system.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     run_lister_file_system_list(app, "Open:", activate_open_or_new, 0, 0, view); | ||||
| } | ||||
| 
 | ||||
|  | @ -616,7 +616,7 @@ activate_new(Application_Links *app, | |||
| CUSTOM_COMMAND_SIG(interactive_new) | ||||
| CUSTOM_DOC("Interactively creates a new file.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     run_lister_file_system_list(app, "New:", activate_new, 0, 0, view); | ||||
| } | ||||
| 
 | ||||
|  | @ -649,7 +649,7 @@ activate_open(Application_Links *app, | |||
| CUSTOM_COMMAND_SIG(interactive_open) | ||||
| CUSTOM_DOC("Interactively opens a file.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     run_lister_file_system_list(app, "Open:", activate_open, 0, 0, view); | ||||
| } | ||||
| 
 | ||||
|  | @ -688,7 +688,7 @@ launch_custom_command_lister(Application_Links *app, i32 *command_ids, i32 comma | |||
|     } | ||||
|      | ||||
|     Scratch_Block scratch(app, Scratch_Share); | ||||
|     View_ID view = get_active_view(app, AccessAll); | ||||
|     View_ID view = get_active_view(app, Access_Always); | ||||
|     Lister_Option *options = push_array(scratch, Lister_Option, command_id_count); | ||||
|     for (i32 i = 0; i < command_id_count; i += 1){ | ||||
|         i32 j = i; | ||||
|  |  | |||
|  | @ -665,7 +665,7 @@ internal void | |||
| log_graph_render(Application_Links *app, Frame_Info frame_info, View_ID view){ | ||||
|     if (log_parse.arena != 0){ | ||||
|         ////////////////////////////////
 | ||||
|         View_ID active_view = get_active_view(app, AccessAll); | ||||
|         View_ID active_view = get_active_view(app, Access_Always); | ||||
|         b32 is_active_view = (active_view == view); | ||||
|          | ||||
|         Rect_f32 view_rect = view_get_screen_rect(app, view); | ||||
|  | @ -966,12 +966,13 @@ log_graph__click_jump_to_event_source(Application_Links *app, Vec2_f32 m_p){ | |||
|             Log_Event *event = box_node->event; | ||||
|             log_graph.selected_event = event; | ||||
|              | ||||
|             View_ID target_view = get_next_view_looped_primary_panels(app, log_view, AccessProtected); | ||||
|             View_ID target_view = get_next_view_looped_primary_panels(app, log_view, | ||||
|                                                                       Access_ReadVisible); | ||||
|             if (target_view != 0){ | ||||
|                 String_Const_u8 file_name = log_parse__get_string(&log_parse, event->src_file_name); | ||||
|                 Buffer_ID target_buffer = get_buffer_by_file_name(app, file_name, AccessAll); | ||||
|                 Buffer_ID target_buffer = get_buffer_by_file_name(app, file_name, Access_Always); | ||||
|                 if (target_buffer == 0){ | ||||
|                     target_buffer = get_buffer_by_name(app, file_name, AccessAll); | ||||
|                     target_buffer = get_buffer_by_name(app, file_name, Access_Always); | ||||
|                 } | ||||
|                 if (target_buffer != 0){ | ||||
|                     set_view_to_location(app, target_view, target_buffer, | ||||
|  | @ -989,11 +990,11 @@ log_graph__click_jump_to_event_source(Application_Links *app, Vec2_f32 m_p){ | |||
| CUSTOM_COMMAND_SIG(show_the_log_graph) | ||||
| CUSTOM_DOC("Parses *log* and displays the 'log graph' UI") | ||||
| { | ||||
|     Buffer_ID log_buffer = get_buffer_by_name(app, string_u8_litexpr("*log*"), AccessAll); | ||||
|     Buffer_ID log_buffer = get_buffer_by_name(app, string_u8_litexpr("*log*"), Access_Always); | ||||
|     log_parse_fill(app, log_buffer); | ||||
|      | ||||
|     if (log_view == 0){ | ||||
|         log_view = get_active_view(app, AccessAll); | ||||
|         log_view = get_active_view(app, Access_Always); | ||||
|     } | ||||
|      | ||||
|     View_ID view = log_view; | ||||
|  |  | |||
|  | @ -29,8 +29,8 @@ get_numeric_at_cursor(Application_Links *app, Buffer_ID buffer, i64 pos, Miblo_N | |||
| CUSTOM_COMMAND_SIG(miblo_increment_basic) | ||||
| CUSTOM_DOC("Increment an integer under the cursor by one.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     Miblo_Number_Info number = {}; | ||||
|     if (get_numeric_at_cursor(app, buffer, pos, &number)){ | ||||
|  | @ -44,8 +44,8 @@ CUSTOM_DOC("Increment an integer under the cursor by one.") | |||
| CUSTOM_COMMAND_SIG(miblo_decrement_basic) | ||||
| CUSTOM_DOC("Decrement an integer under the cursor by one.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     Miblo_Number_Info number = {}; | ||||
|     if (get_numeric_at_cursor(app, buffer, pos, &number)){ | ||||
|  | @ -214,8 +214,8 @@ get_timestamp_at_cursor(Application_Links *app, Buffer_ID buffer, i64 pos, Miblo | |||
| 
 | ||||
| static void | ||||
| miblo_time_stamp_alter(Application_Links *app, i32 unit_type, i32 amt){ | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|      | ||||
|     Miblo_Timestamp_Info timestamp = {}; | ||||
|  |  | |||
|  | @ -35,9 +35,9 @@ close_all_files_with_extension(Application_Links *app, String_Const_u8_Array ext | |||
|         i32 buffers_to_close_count = 0; | ||||
|         do_repeat = false; | ||||
|          | ||||
|         for (Buffer_ID buffer = get_buffer_next(app, 0, AccessAll); | ||||
|         for (Buffer_ID buffer = get_buffer_next(app, 0, Access_Always); | ||||
|              buffer != 0; | ||||
|              buffer = get_buffer_next(app, buffer, AccessAll)){ | ||||
|              buffer = get_buffer_next(app, buffer, Access_Always)){ | ||||
|             b32 is_match = true; | ||||
|              | ||||
|             if (extension_array.count > 0){ | ||||
|  | @ -847,7 +847,7 @@ exec_project_command(Application_Links *app, Project_Command *command){ | |||
|                 Buffer_ID buffer = buffer_identifier_to_id(app, buffer_id); | ||||
|                 view = get_first_view_with_buffer(app, buffer); | ||||
|                 if (view == 0){ | ||||
|                     view = get_active_view(app, AccessAll); | ||||
|                     view = get_active_view(app, Access_Always); | ||||
|                 } | ||||
|             } | ||||
|              | ||||
|  | @ -1341,7 +1341,7 @@ CUSTOM_DOC("Open a lister of all commands in the currently loaded project.") | |||
|     if (current_project.loaded){ | ||||
|         Scratch_Block scratch(app, Scratch_Share); | ||||
|          | ||||
|         View_ID view = get_active_view(app, AccessAll); | ||||
|         View_ID view = get_active_view(app, Access_Always); | ||||
|         i32 option_count = current_project.command_array.count; | ||||
|         Lister_Option *options = push_array(scratch, Lister_Option, option_count); | ||||
|         for (i32 i = 0; | ||||
|  |  | |||
|  | @ -7,8 +7,8 @@ | |||
| CUSTOM_COMMAND_SIG(select_surrounding_scope) | ||||
| CUSTOM_DOC("Finds the scope enclosed by '{' '}' surrounding the cursor and puts the cursor and mark on the '{' and '}'.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     Range_i64 range = {}; | ||||
|     if (find_surrounding_nest(app, buffer, pos, FindNest_Scope, &range)){ | ||||
|  | @ -32,8 +32,8 @@ select_next_scope_after_pos(Application_Links *app, View_ID view, Buffer_ID buff | |||
| CUSTOM_COMMAND_SIG(select_next_scope_absolute) | ||||
| CUSTOM_DOC("Finds the first scope started by '{' after the cursor and puts the cursor and mark on the '{' and '}'.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     select_next_scope_after_pos(app, view, buffer, pos); | ||||
| } | ||||
|  | @ -41,8 +41,8 @@ CUSTOM_DOC("Finds the first scope started by '{' after the cursor and puts the c | |||
| CUSTOM_COMMAND_SIG(select_next_scope_after_current) | ||||
| CUSTOM_DOC("Finds the first scope started by '{' after the mark and puts the cursor and mark on the '{' and '}'.  This command is meant to be used after a scope is already selected so that it will have the effect of selecting the next scope after the current scope.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|     i64 pos = view_get_mark_pos(app, view); | ||||
|     select_next_scope_after_pos(app, view, buffer, pos); | ||||
| } | ||||
|  | @ -50,8 +50,8 @@ CUSTOM_DOC("Finds the first scope started by '{' after the mark and puts the cur | |||
| CUSTOM_COMMAND_SIG(select_prev_scope_absolute) | ||||
| CUSTOM_DOC("Finds the first scope started by '{' before the cursor and puts the cursor and mark on the '{' and '}'.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessProtected); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); | ||||
|     View_ID view = get_active_view(app, Access_ReadVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||
|     i64 pos = view_get_cursor_pos(app, view); | ||||
|     Find_Nest_Flag flags = FindNest_Scope; | ||||
|     Range_i64 range = {}; | ||||
|  | @ -73,8 +73,8 @@ CUSTOM_DOC("Wraps the code contained in the range between cursor and mark with a | |||
| CUSTOM_COMMAND_SIG(delete_current_scope) | ||||
| CUSTOM_DOC("Deletes the braces surrounding the currently selected scope.  Leaves the contents within the scope.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|      | ||||
|     Range_i64 range = get_view_range(app, view); | ||||
|     if (buffer_get_char(app, buffer, range.min) == '{' && | ||||
|  |  | |||
|  | @ -122,7 +122,7 @@ query_user_list_definition_needle(Application_Links *app, Arena *arena){ | |||
| internal void | ||||
| list_all_locations__generic(Application_Links *app, String_Const_u8_Array needle, List_All_Locations_Flag flags){ | ||||
|     if (needle.count > 0){ | ||||
|         View_ID target_view = get_next_view_after_active(app, AccessAll); | ||||
|         View_ID target_view = get_next_view_after_active(app, Access_Always); | ||||
|         String_Match_Flag must_have_flags = 0; | ||||
|         String_Match_Flag must_not_have_flags = 0; | ||||
|         if (HasFlag(flags, ListAllLocationsFlag_CaseSensitive)){ | ||||
|  | @ -378,8 +378,8 @@ get_word_complete_list(Application_Links *app, Arena *arena, String_Const_u8 nee | |||
| CUSTOM_COMMAND_SIG(word_complete) | ||||
| CUSTOM_DOC("Iteratively tries completing the word to the left of the cursor with other words in open buffers that have the same prefix string.") | ||||
| { | ||||
|     View_ID view = get_active_view(app, AccessOpen); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); | ||||
|     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||
|     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||
|     if (buffer != 0){ | ||||
|         Managed_Scope scope = view_get_managed_scope(app, view); | ||||
|          | ||||
|  |  | |||
|  | @ -145,11 +145,17 @@ ENUM(i32, Buffer_Reopen_Result){ | |||
|     BufferReopenResult_Failed = 1, | ||||
| }; | ||||
| 
 | ||||
| ENUM(u32, Access_Flag){ | ||||
|     AccessOpen      = 0x0, | ||||
|     AccessProtected = 0x1, | ||||
|     AccessHidden    = 0x2, | ||||
|     AccessAll       = 0xFF | ||||
| typedef u32 Access_Flag; | ||||
| enum{ | ||||
|     Access_Write = 0x1, | ||||
|     Access_Read = 0x2, | ||||
|     Access_Visible = 0x4, | ||||
| }; | ||||
| enum{ | ||||
|     Access_Always = 0, | ||||
|     Access_ReadWrite = Access_Write|Access_Read, | ||||
|     Access_ReadVisible = Access_Read|Access_Visible, | ||||
|     Access_ReadWriteVisible = Access_Write|Access_Read|Access_Visible, | ||||
| }; | ||||
| 
 | ||||
| ENUM(u32, Dirty_State){ | ||||
|  | @ -189,16 +195,6 @@ ENUM(i32, Panel_Split_Kind){ | |||
|     PanelSplitKind_FixedPixels_Max = 3, | ||||
| }; | ||||
| 
 | ||||
| ENUM(i32, Panel_Split_Orientation){ | ||||
|     PanelSplit_LeftAndRight = 0, | ||||
|     PanelSplit_TopAndBottom = 1, | ||||
| }; | ||||
| 
 | ||||
| ENUM(i32, Panel_Child){ | ||||
|     PanelChild_Min = 0, | ||||
|     PanelChild_Max = 1, | ||||
| }; | ||||
| 
 | ||||
| TYPEDEF u8 Key_Modifier; | ||||
| 
 | ||||
| STRUCT Mouse_State{ | ||||
|  |  | |||
|  | @ -229,12 +229,12 @@ i32 line_number; | |||
| }; | ||||
| static Command_Metadata fcoder_metacmd_table[207] = { | ||||
| { PROC_LINKS(default_view_input_handler, 0), "default_view_input_handler", 26,  "Input consumption loop for default view behavior", 48, "w:\\4ed\\code\\custom\\4coder_default_hooks.cpp", 43, 56 }, | ||||
| { PROC_LINKS(seek_beginning_of_textual_line, 0), "seek_beginning_of_textual_line", 30,  "Seeks the cursor to the beginning of the line across all text.", 62, "w:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2034 }, | ||||
| { PROC_LINKS(seek_end_of_textual_line, 0), "seek_end_of_textual_line", 24,  "Seeks the cursor to the end of the line across all text.", 56, "w:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2040 }, | ||||
| { PROC_LINKS(seek_beginning_of_line, 0), "seek_beginning_of_line", 22,  "Seeks the cursor to the beginning of the visual line.", 53, "w:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2046 }, | ||||
| { PROC_LINKS(seek_end_of_line, 0), "seek_end_of_line", 16,  "Seeks the cursor to the end of the visual line.", 47, "w:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2052 }, | ||||
| { PROC_LINKS(goto_beginning_of_file, 0), "goto_beginning_of_file", 22,  "Sets the cursor to the beginning of the file.", 45, "w:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2058 }, | ||||
| { PROC_LINKS(goto_end_of_file, 0), "goto_end_of_file", 16,  "Sets the cursor to the end of the file.", 39, "w:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2066 }, | ||||
| { PROC_LINKS(seek_beginning_of_textual_line, 0), "seek_beginning_of_textual_line", 30,  "Seeks the cursor to the beginning of the line across all text.", 62, "w:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2061 }, | ||||
| { PROC_LINKS(seek_end_of_textual_line, 0), "seek_end_of_textual_line", 24,  "Seeks the cursor to the end of the line across all text.", 56, "w:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2067 }, | ||||
| { PROC_LINKS(seek_beginning_of_line, 0), "seek_beginning_of_line", 22,  "Seeks the cursor to the beginning of the visual line.", 53, "w:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2073 }, | ||||
| { PROC_LINKS(seek_end_of_line, 0), "seek_end_of_line", 16,  "Seeks the cursor to the end of the visual line.", 47, "w:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2079 }, | ||||
| { PROC_LINKS(goto_beginning_of_file, 0), "goto_beginning_of_file", 22,  "Sets the cursor to the beginning of the file.", 45, "w:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2085 }, | ||||
| { PROC_LINKS(goto_end_of_file, 0), "goto_end_of_file", 16,  "Sets the cursor to the end of the file.", 39, "w:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2093 }, | ||||
| { PROC_LINKS(change_active_panel, 0), "change_active_panel", 19,  "Change the currently active panel, moving to the panel with the next highest view_id.", 85, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 203 }, | ||||
| { PROC_LINKS(change_active_panel_backwards, 0), "change_active_panel_backwards", 29,  "Change the currently active panel, moving to the panel with the next lowest view_id.", 84, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 213 }, | ||||
| { PROC_LINKS(open_panel_vsplit, 0), "open_panel_vsplit", 17,  "Create a new panel by vertically splitting the active panel.", 60, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 223 }, | ||||
|  | @ -379,8 +379,8 @@ static Command_Metadata fcoder_metacmd_table[207] = { | |||
| { PROC_LINKS(goto_first_jump_same_panel_sticky, 0), "goto_first_jump_same_panel_sticky", 33,  "If a buffer containing jump locations has been locked in, goes to the first jump in the buffer and views the buffer in the panel where the jump list was.", 153, "w:\\4ed\\code\\custom\\4coder_jump_sticky.cpp", 41, 540 }, | ||||
| { PROC_LINKS(if_read_only_goto_position, 0), "if_read_only_goto_position", 26,  "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor.", 106, "w:\\4ed\\code\\custom\\4coder_jump_sticky.cpp", 41, 562 }, | ||||
| { PROC_LINKS(if_read_only_goto_position_same_panel, 0), "if_read_only_goto_position_same_panel", 37,  "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor_same_panel.", 117, "w:\\4ed\\code\\custom\\4coder_jump_sticky.cpp", 41, 579 }, | ||||
| { PROC_LINKS(view_jump_list_with_lister, 0), "view_jump_list_with_lister", 26,  "When executed on a buffer with jumps, creates a persistent lister for all the jumps", 83, "w:\\4ed\\code\\custom\\4coder_jump_lister.cpp", 41, 102 }, | ||||
| { PROC_LINKS(show_the_log_graph, 0), "show_the_log_graph", 18,  "Parses *log* and displays the 'log graph' UI", 44, "w:\\4ed\\code\\custom\\4coder_log_parser.cpp", 40, 989 }, | ||||
| { PROC_LINKS(view_jump_list_with_lister, 0), "view_jump_list_with_lister", 26,  "When executed on a buffer with jumps, creates a persistent lister for all the jumps", 83, "w:\\4ed\\code\\custom\\4coder_jump_lister.cpp", 41, 104 }, | ||||
| { PROC_LINKS(show_the_log_graph, 0), "show_the_log_graph", 18,  "Parses *log* and displays the 'log graph' UI", 44, "w:\\4ed\\code\\custom\\4coder_log_parser.cpp", 40, 990 }, | ||||
| { PROC_LINKS(copy, 0), "copy", 4,  "Copy the text in the range from the cursor to the mark onto the clipboard.", 74, "w:\\4ed\\code\\custom\\4coder_clipboard.cpp", 39, 19 }, | ||||
| { PROC_LINKS(cut, 0), "cut", 3,  "Cut the text in the range from the cursor to the mark onto the clipboard.", 73, "w:\\4ed\\code\\custom\\4coder_clipboard.cpp", 39, 28 }, | ||||
| { PROC_LINKS(paste, 0), "paste", 5,  "At the cursor, insert the text at the top of the clipboard.", 59, "w:\\4ed\\code\\custom\\4coder_clipboard.cpp", 39, 39 }, | ||||
|  |  | |||
|  | @ -150,7 +150,6 @@ vtable->get_theme_colors = get_theme_colors; | |||
| vtable->finalize_color = finalize_color; | ||||
| vtable->push_hot_directory = push_hot_directory; | ||||
| vtable->set_hot_directory = set_hot_directory; | ||||
| vtable->set_gui_up_down_keys = set_gui_up_down_keys; | ||||
| vtable->send_exit_signal = send_exit_signal; | ||||
| vtable->set_window_title = set_window_title; | ||||
| vtable->draw_string_oriented = draw_string_oriented; | ||||
|  | @ -324,7 +323,6 @@ get_theme_colors = vtable->get_theme_colors; | |||
| finalize_color = vtable->finalize_color; | ||||
| push_hot_directory = vtable->push_hot_directory; | ||||
| set_hot_directory = vtable->set_hot_directory; | ||||
| set_gui_up_down_keys = vtable->set_gui_up_down_keys; | ||||
| send_exit_signal = vtable->send_exit_signal; | ||||
| set_window_title = vtable->set_window_title; | ||||
| draw_string_oriented = vtable->draw_string_oriented; | ||||
|  |  | |||
|  | @ -62,14 +62,14 @@ | |||
| #define custom_view_set_preferred_x_sig() b32 custom_view_set_preferred_x(Application_Links* app, View_ID view_id, f32 x) | ||||
| #define custom_view_get_screen_rect_sig() Rect_f32 custom_view_get_screen_rect(Application_Links* app, View_ID view_id) | ||||
| #define custom_view_get_panel_sig() Panel_ID custom_view_get_panel(Application_Links* app, View_ID view_id) | ||||
| #define custom_panel_get_view_sig() View_ID custom_panel_get_view(Application_Links* app, Panel_ID panel_id) | ||||
| #define custom_panel_get_view_sig() View_ID custom_panel_get_view(Application_Links* app, Panel_ID panel_id, Access_Flag access) | ||||
| #define custom_panel_is_split_sig() b32 custom_panel_is_split(Application_Links* app, Panel_ID panel_id) | ||||
| #define custom_panel_is_leaf_sig() b32 custom_panel_is_leaf(Application_Links* app, Panel_ID panel_id) | ||||
| #define custom_panel_split_sig() b32 custom_panel_split(Application_Links* app, Panel_ID panel_id, Panel_Split_Orientation orientation) | ||||
| #define custom_panel_set_split_sig() b32 custom_panel_set_split(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, float t) | ||||
| #define custom_panel_split_sig() b32 custom_panel_split(Application_Links* app, Panel_ID panel_id, Dimension split_dim) | ||||
| #define custom_panel_set_split_sig() b32 custom_panel_set_split(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, f32 t) | ||||
| #define custom_panel_swap_children_sig() b32 custom_panel_swap_children(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, float t) | ||||
| #define custom_panel_get_parent_sig() Panel_ID custom_panel_get_parent(Application_Links* app, Panel_ID panel_id) | ||||
| #define custom_panel_get_child_sig() Panel_ID custom_panel_get_child(Application_Links* app, Panel_ID panel_id, Panel_Child which_child) | ||||
| #define custom_panel_get_child_sig() Panel_ID custom_panel_get_child(Application_Links* app, Panel_ID panel_id, Side which_child) | ||||
| #define custom_panel_get_max_sig() Panel_ID custom_panel_get_max(Application_Links* app, Panel_ID panel_id) | ||||
| #define custom_panel_get_margin_sig() Rect_i32 custom_panel_get_margin(Application_Links* app, Panel_ID panel_id) | ||||
| #define custom_view_close_sig() b32 custom_view_close(Application_Links* app, View_ID view_id) | ||||
|  | @ -148,7 +148,6 @@ | |||
| #define custom_finalize_color_sig() argb_color custom_finalize_color(Application_Links* app, int_color color) | ||||
| #define custom_push_hot_directory_sig() String_Const_u8 custom_push_hot_directory(Application_Links* app, Arena* arena) | ||||
| #define custom_set_hot_directory_sig() b32 custom_set_hot_directory(Application_Links* app, String_Const_u8 string) | ||||
| #define custom_set_gui_up_down_keys_sig() void custom_set_gui_up_down_keys(Application_Links* app, Key_Code up_key, Key_Modifier up_key_modifier, Key_Code down_key, Key_Modifier down_key_modifier) | ||||
| #define custom_send_exit_signal_sig() void custom_send_exit_signal(Application_Links* app) | ||||
| #define custom_set_window_title_sig() b32 custom_set_window_title(Application_Links* app, String_Const_u8 title) | ||||
| #define custom_draw_string_oriented_sig() Vec2 custom_draw_string_oriented(Application_Links* app, Face_ID font_id, String_Const_u8 str, Vec2 point, int_color color, u32 flags, Vec2 delta) | ||||
|  | @ -232,14 +231,14 @@ typedef f32 custom_view_get_preferred_x_type(Application_Links* app, View_ID vie | |||
| typedef b32 custom_view_set_preferred_x_type(Application_Links* app, View_ID view_id, f32 x); | ||||
| typedef Rect_f32 custom_view_get_screen_rect_type(Application_Links* app, View_ID view_id); | ||||
| typedef Panel_ID custom_view_get_panel_type(Application_Links* app, View_ID view_id); | ||||
| typedef View_ID custom_panel_get_view_type(Application_Links* app, Panel_ID panel_id); | ||||
| typedef View_ID custom_panel_get_view_type(Application_Links* app, Panel_ID panel_id, Access_Flag access); | ||||
| typedef b32 custom_panel_is_split_type(Application_Links* app, Panel_ID panel_id); | ||||
| typedef b32 custom_panel_is_leaf_type(Application_Links* app, Panel_ID panel_id); | ||||
| typedef b32 custom_panel_split_type(Application_Links* app, Panel_ID panel_id, Panel_Split_Orientation orientation); | ||||
| typedef b32 custom_panel_set_split_type(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, float t); | ||||
| typedef b32 custom_panel_split_type(Application_Links* app, Panel_ID panel_id, Dimension split_dim); | ||||
| typedef b32 custom_panel_set_split_type(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, f32 t); | ||||
| typedef b32 custom_panel_swap_children_type(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, float t); | ||||
| typedef Panel_ID custom_panel_get_parent_type(Application_Links* app, Panel_ID panel_id); | ||||
| typedef Panel_ID custom_panel_get_child_type(Application_Links* app, Panel_ID panel_id, Panel_Child which_child); | ||||
| typedef Panel_ID custom_panel_get_child_type(Application_Links* app, Panel_ID panel_id, Side which_child); | ||||
| typedef Panel_ID custom_panel_get_max_type(Application_Links* app, Panel_ID panel_id); | ||||
| typedef Rect_i32 custom_panel_get_margin_type(Application_Links* app, Panel_ID panel_id); | ||||
| typedef b32 custom_view_close_type(Application_Links* app, View_ID view_id); | ||||
|  | @ -318,7 +317,6 @@ typedef void custom_get_theme_colors_type(Application_Links* app, Theme_Color* c | |||
| typedef argb_color custom_finalize_color_type(Application_Links* app, int_color color); | ||||
| typedef String_Const_u8 custom_push_hot_directory_type(Application_Links* app, Arena* arena); | ||||
| typedef b32 custom_set_hot_directory_type(Application_Links* app, String_Const_u8 string); | ||||
| typedef void custom_set_gui_up_down_keys_type(Application_Links* app, Key_Code up_key, Key_Modifier up_key_modifier, Key_Code down_key, Key_Modifier down_key_modifier); | ||||
| typedef void custom_send_exit_signal_type(Application_Links* app); | ||||
| typedef b32 custom_set_window_title_type(Application_Links* app, String_Const_u8 title); | ||||
| typedef Vec2 custom_draw_string_oriented_type(Application_Links* app, Face_ID font_id, String_Const_u8 str, Vec2 point, int_color color, u32 flags, Vec2 delta); | ||||
|  | @ -489,7 +487,6 @@ custom_get_theme_colors_type *get_theme_colors; | |||
| custom_finalize_color_type *finalize_color; | ||||
| custom_push_hot_directory_type *push_hot_directory; | ||||
| custom_set_hot_directory_type *set_hot_directory; | ||||
| custom_set_gui_up_down_keys_type *set_gui_up_down_keys; | ||||
| custom_send_exit_signal_type *send_exit_signal; | ||||
| custom_set_window_title_type *set_window_title; | ||||
| custom_draw_string_oriented_type *draw_string_oriented; | ||||
|  | @ -575,14 +572,14 @@ internal f32 view_get_preferred_x(Application_Links* app, View_ID view_id); | |||
| internal b32 view_set_preferred_x(Application_Links* app, View_ID view_id, f32 x); | ||||
| internal Rect_f32 view_get_screen_rect(Application_Links* app, View_ID view_id); | ||||
| internal Panel_ID view_get_panel(Application_Links* app, View_ID view_id); | ||||
| internal View_ID panel_get_view(Application_Links* app, Panel_ID panel_id); | ||||
| internal View_ID panel_get_view(Application_Links* app, Panel_ID panel_id, Access_Flag access); | ||||
| internal b32 panel_is_split(Application_Links* app, Panel_ID panel_id); | ||||
| internal b32 panel_is_leaf(Application_Links* app, Panel_ID panel_id); | ||||
| internal b32 panel_split(Application_Links* app, Panel_ID panel_id, Panel_Split_Orientation orientation); | ||||
| internal b32 panel_set_split(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, float t); | ||||
| internal b32 panel_split(Application_Links* app, Panel_ID panel_id, Dimension split_dim); | ||||
| internal b32 panel_set_split(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, f32 t); | ||||
| internal b32 panel_swap_children(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, float t); | ||||
| internal Panel_ID panel_get_parent(Application_Links* app, Panel_ID panel_id); | ||||
| internal Panel_ID panel_get_child(Application_Links* app, Panel_ID panel_id, Panel_Child which_child); | ||||
| internal Panel_ID panel_get_child(Application_Links* app, Panel_ID panel_id, Side which_child); | ||||
| internal Panel_ID panel_get_max(Application_Links* app, Panel_ID panel_id); | ||||
| internal Rect_i32 panel_get_margin(Application_Links* app, Panel_ID panel_id); | ||||
| internal b32 view_close(Application_Links* app, View_ID view_id); | ||||
|  | @ -661,7 +658,6 @@ internal void get_theme_colors(Application_Links* app, Theme_Color* colors, i32 | |||
| internal argb_color finalize_color(Application_Links* app, int_color color); | ||||
| internal String_Const_u8 push_hot_directory(Application_Links* app, Arena* arena); | ||||
| internal b32 set_hot_directory(Application_Links* app, String_Const_u8 string); | ||||
| internal void set_gui_up_down_keys(Application_Links* app, Key_Code up_key, Key_Modifier up_key_modifier, Key_Code down_key, Key_Modifier down_key_modifier); | ||||
| internal void send_exit_signal(Application_Links* app); | ||||
| internal b32 set_window_title(Application_Links* app, String_Const_u8 title); | ||||
| internal Vec2 draw_string_oriented(Application_Links* app, Face_ID font_id, String_Const_u8 str, Vec2 point, int_color color, u32 flags, Vec2 delta); | ||||
|  | @ -833,7 +829,6 @@ global custom_get_theme_colors_type *get_theme_colors = 0; | |||
| global custom_finalize_color_type *finalize_color = 0; | ||||
| global custom_push_hot_directory_type *push_hot_directory = 0; | ||||
| global custom_set_hot_directory_type *set_hot_directory = 0; | ||||
| global custom_set_gui_up_down_keys_type *set_gui_up_down_keys = 0; | ||||
| global custom_send_exit_signal_type *send_exit_signal = 0; | ||||
| global custom_set_window_title_type *set_window_title = 0; | ||||
| global custom_draw_string_oriented_type *draw_string_oriented = 0; | ||||
|  |  | |||
|  | @ -62,14 +62,14 @@ api(custom) function f32 view_get_preferred_x(Application_Links* app, View_ID vi | |||
| api(custom) function b32 view_set_preferred_x(Application_Links* app, View_ID view_id, f32 x); | ||||
| api(custom) function Rect_f32 view_get_screen_rect(Application_Links* app, View_ID view_id); | ||||
| api(custom) function Panel_ID view_get_panel(Application_Links* app, View_ID view_id); | ||||
| api(custom) function View_ID panel_get_view(Application_Links* app, Panel_ID panel_id); | ||||
| api(custom) function View_ID panel_get_view(Application_Links* app, Panel_ID panel_id, Access_Flag access); | ||||
| api(custom) function b32 panel_is_split(Application_Links* app, Panel_ID panel_id); | ||||
| api(custom) function b32 panel_is_leaf(Application_Links* app, Panel_ID panel_id); | ||||
| api(custom) function b32 panel_split(Application_Links* app, Panel_ID panel_id, Panel_Split_Orientation orientation); | ||||
| api(custom) function b32 panel_set_split(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, float t); | ||||
| api(custom) function b32 panel_split(Application_Links* app, Panel_ID panel_id, Dimension split_dim); | ||||
| api(custom) function b32 panel_set_split(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, f32 t); | ||||
| api(custom) function b32 panel_swap_children(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, float t); | ||||
| api(custom) function Panel_ID panel_get_parent(Application_Links* app, Panel_ID panel_id); | ||||
| api(custom) function Panel_ID panel_get_child(Application_Links* app, Panel_ID panel_id, Panel_Child which_child); | ||||
| api(custom) function Panel_ID panel_get_child(Application_Links* app, Panel_ID panel_id, Side which_child); | ||||
| api(custom) function Panel_ID panel_get_max(Application_Links* app, Panel_ID panel_id); | ||||
| api(custom) function Rect_i32 panel_get_margin(Application_Links* app, Panel_ID panel_id); | ||||
| api(custom) function b32 view_close(Application_Links* app, View_ID view_id); | ||||
|  | @ -148,7 +148,6 @@ api(custom) function void get_theme_colors(Application_Links* app, Theme_Color* | |||
| api(custom) function argb_color finalize_color(Application_Links* app, int_color color); | ||||
| api(custom) function String_Const_u8 push_hot_directory(Application_Links* app, Arena* arena); | ||||
| api(custom) function b32 set_hot_directory(Application_Links* app, String_Const_u8 string); | ||||
| api(custom) function void set_gui_up_down_keys(Application_Links* app, Key_Code up_key, Key_Modifier up_key_modifier, Key_Code down_key, Key_Modifier down_key_modifier); | ||||
| api(custom) function void send_exit_signal(Application_Links* app); | ||||
| api(custom) function b32 set_window_title(Application_Links* app, String_Const_u8 title); | ||||
| api(custom) function Vec2 draw_string_oriented(Application_Links* app, Face_ID font_id, String_Const_u8 str, Vec2 point, int_color color, u32 flags, Vec2 delta); | ||||
|  |  | |||
|  | @ -43,449 +43,447 @@ lexeme_table_lookup(u64 *hash_array, String_Const_u8 *key_array, | |||
| } | ||||
| 
 | ||||
| #endif | ||||
| u64 main_keys_hash_array[122] = { | ||||
| 0x0000000000000000,0x07c5f278d1101ced,0x0000000000000000,0xa62bbbf7713fa62b, | ||||
| 0x0000000000000000,0x0000000000000000,0x189f5b933bf3b933,0xf6c02fd104e622d3, | ||||
| 0xa62bbbf7441048b5,0x31a9b2ff15ce8563,0x68df7003b1bc4821,0x0000000000000000, | ||||
| 0x0000000000000000,0xa62bbbf77f52a37b,0x189f5af5a15e570b,0x68df7003b1b8eceb, | ||||
| 0x0000000000000000,0x0000000000000000,0x189f5b0ad4cbeaa3,0x3af1c28e1ddb0783, | ||||
| 0x2d14d64d82dd3be3,0xa62bbbf5e2f33afd,0x0000000000000000,0xf6c02fd108f91d9b, | ||||
| 0xaf010cb51e08bbc1,0x0000000000000000,0x3192f97fcdee24d3,0x07c5f278d1101f69, | ||||
| 0x189f5af6a7a7ffbd,0x0000000000000000,0x189f5af5bf5767f3,0x3afed33e86adea2d, | ||||
| 0x0000000000000000,0xa62bbbf5e1ec09ad,0x0000000000000000,0x0000000000000000, | ||||
| 0x522ba3fd0f3be8c3,0x0000000000000000,0xf6c02fd104e53add,0xf6c02fd10bdeaa6f, | ||||
| 0x07c5df2eff098d77,0x0000000000000000,0x0000000000000000,0x3afecff9e1ae52e5, | ||||
| 0xf6c02fd10bb24563,0xf6c02fd104eca76b,0x0000000000000000,0x3afed5063319a1eb, | ||||
| 0x68df7003b1bde949,0x189f5af5d4b84fbf,0x07c5d15a314f7723,0x189f5b08d4370559, | ||||
| 0x0000000000000000,0x0000000000000000,0xf6c02fd10baf4dcb,0x0000000000000000, | ||||
| 0x0000000000000000,0x189f5b56738b1265,0x0000000000000000,0x0000000000000000, | ||||
| 0xa62bbbf5e0247cbf,0x3afa82656d98a37b,0xa62bbbf75fa88419,0x0000000000000000, | ||||
| 0x0000000000000000,0x0000000000000000,0x189f5b933833cf69,0x0000000000000000, | ||||
| 0xa62bbbf767d15da9,0x0000000000000000,0x19183219f06dcb63,0x68df7003b1bc2429, | ||||
| 0x3afec2d0663f612d,0x0000000000000000,0x0000000000000000,0x3afecf3b77007d35, | ||||
| 0x189f5b0ad46a3da1,0x0000000000000000,0x53cf9ef61495b3e3,0x3af6389d0658983d, | ||||
| 0x0000000000000000,0x0000000000000000,0x07c5df6155313bd1,0x0000000000000000, | ||||
| 0x0000000000000000,0xaf010cb51e08a4a3,0xf6c02fd108fab82b,0x0000000000000000, | ||||
| 0x0000000000000000,0x0000000000000000,0x258bb962715d5363,0x189f5af5db0cf073, | ||||
| 0x07c5df26bfde9b65,0xa62bbbf5d67aee5b,0x189f5b566a0beef9,0x0000000000000000, | ||||
| 0x3afedd01e3000695,0x0000000000000000,0x0000000000000000,0xf6c02fd10bb000ad, | ||||
| 0x0000000000000000,0x0000000000000000,0x68df7003b1bde535,0x0000000000000000, | ||||
| 0x0000000000000000,0x189f5af5d7a3840d,0xa62bbbf7710434fb,0x0000000000000000, | ||||
| 0x3af23ba28357b2a3,0x07c5c0b2c6388e35,0x189f5b08dfc6e6b9,0x0000000000000000, | ||||
| 0x0000000000000000,0x0000000000000000,0x0000000000000000,0x0000000000000000, | ||||
| 0x0000000000000000,0x0000000000000000,0x0000000000000000,0xf6c02fd10b9d4cbb, | ||||
| 0x60e2b96351c30769,0x0000000000000000, | ||||
| u64 main_keys_hash_array[121] = { | ||||
| 0xf9b82a9bc92c5f33,0xb6436fbc362998db,0x0000000000000000,0xfba6da6846b00cd1, | ||||
| 0xe34f6ca007b5b81d,0x8a1aa0c1cbf05e73,0x8fd4a100ba640fcd,0x0000000000000000, | ||||
| 0x2ce3ee58579b1a55,0x22656326fd2b4911,0x0000000000000000,0xf9b8223032c3ecd1, | ||||
| 0x8fd4a100a91f262d,0xa88ecc26a7f77b99,0xb6436cf8c4fa5e81,0x0000000000000000, | ||||
| 0x0000000000000000,0x8fd4a100a9643df1,0x0000000000000000,0x8fd4a100a9603db3, | ||||
| 0x0000000000000000,0xf9b83340fd2e9de3,0x0000000000000000,0xfba6da5cdcae2bd3, | ||||
| 0xb6436fbc3629996b,0xf9b89388bba220d3,0xfba6da684500801f,0xf9a78870e743a847, | ||||
| 0x0000000000000000,0xa88ecc26a7e0d42d,0xa88ecc26a7f23dcd,0xf9b812edb5d97433, | ||||
| 0xa88ecc26a7ef7051,0x0000000000000000,0x0000000000000000,0x0000000000000000, | ||||
| 0x0000000000000000,0x0000000000000000,0xf9b9a571da137975,0xfba6da64e06f0463, | ||||
| 0xfba6da686cfb1c71,0xfba6da681a116c23,0x0000000000000000,0x0000000000000000, | ||||
| 0x11acd6d4ea0a02a1,0x0000000000000000,0x0000000000000000,0x6affad88658048a1, | ||||
| 0x0000000000000000,0x0000000000000000,0x0000000000000000,0x8a1aa0c1cbf1b917, | ||||
| 0x0000000000000000,0x0000000000000000,0xa88ecc26a7a547b1,0x8fd4a100bcf58153, | ||||
| 0x8fd4a100aaefa25f,0x0000000000000000,0xa88ecc26a7e3323d,0x0000000000000000, | ||||
| 0x0000000000000000,0x8fd4a100baee8df7,0xfba6da64d8ddd323,0x0000000000000000, | ||||
| 0x0000000000000000,0xa88ecc26a79f7b99,0xfba6da5cd0b49155,0xa88ecc26a7f69e9d, | ||||
| 0xfba6da67185db213,0x0000000000000000,0x0000000000000000,0x0000000000000000, | ||||
| 0x0000000000000000,0xfba6da69c6296b5b,0x8fd4a100b7ff4c8d,0x0000000000000000, | ||||
| 0xf9b83de0de17f603,0x0000000000000000,0x6ca6c603c047daa1,0x0000000000000000, | ||||
| 0x0000000000000000,0x3308377a8b225aa1,0x0000000000000000,0x8a1aa0c1cbf163a9, | ||||
| 0x0000000000000000,0x0000000000000000,0xb6436c68778fc797,0xfba6da675a1126e5, | ||||
| 0xa88ecc26a7ee0e0b,0x8fd4a100ae608e9d,0x0000000000000000,0x2ce3ee58579b1d7f, | ||||
| 0x0000000000000000,0x8fd4a103511baa33,0xfba6da6882ea3055,0x0000000000000000, | ||||
| 0xb6436c2911b7425d,0x0000000000000000,0x6ebc09e02b8457d3,0xf9b830388e251d3d, | ||||
| 0xa88ecc26a7a5110b,0x0000000000000000,0x0000000000000000,0x0000000000000000, | ||||
| 0x0000000000000000,0xb6436cf7d2df0e63,0xb6436f1fe4e8fbb3,0x22664a1c2bc81d01, | ||||
| 0x0000000000000000,0x0000000000000000,0x0000000000000000,0xfba6da686e9a3cc1, | ||||
| 0x8a1aa0c1cbf00147,0x0000000000000000,0xf9b894d86adff051,0x8a1aa0c1cbf09e37, | ||||
| 0xfba6da686e7280bb,0x0000000000000000,0x0000000000000000,0x0000000000000000, | ||||
| 0x0000000000000000, | ||||
| }; | ||||
| u8 main_keys_key_array_1[] = {0x61,0x6c,0x69,0x67,0x6e,0x61,0x73,}; | ||||
| u8 main_keys_key_array_3[] = {0x66,0x61,0x6c,0x73,0x65,}; | ||||
| u8 main_keys_key_array_6[] = {0x65,0x78,0x74,0x65,0x72,0x6e,}; | ||||
| u8 main_keys_key_array_7[] = {0x63,0x61,0x73,0x65,}; | ||||
| u8 main_keys_key_array_8[] = {0x77,0x68,0x69,0x6c,0x65,}; | ||||
| u8 main_keys_key_array_9[] = {0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,}; | ||||
| u8 main_keys_key_array_10[] = {0x6e,0x65,0x77,}; | ||||
| u8 main_keys_key_array_13[] = {0x75,0x73,0x69,0x6e,0x67,}; | ||||
| u8 main_keys_key_array_14[] = {0x74,0x79,0x70,0x65,0x69,0x64,}; | ||||
| u8 main_keys_key_array_15[] = {0x61,0x73,0x6d,}; | ||||
| u8 main_keys_key_array_18[] = {0x73,0x69,0x67,0x6e,0x65,0x64,}; | ||||
| u8 main_keys_key_array_19[] = {0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,}; | ||||
| u8 main_keys_key_array_20[] = {0x63,0x6f,0x6e,0x73,0x74,0x5f,0x63,0x61,0x73,0x74,}; | ||||
| u8 main_keys_key_array_21[] = {0x62,0x72,0x65,0x61,0x6b,}; | ||||
| u8 main_keys_key_array_23[] = {0x65,0x6e,0x75,0x6d,}; | ||||
| u8 main_keys_key_array_24[] = {0x69,0x66,}; | ||||
| u8 main_keys_key_array_26[] = {0x70,0x72,0x6f,0x74,0x65,0x63,0x74,0x65,0x64,}; | ||||
| u8 main_keys_key_array_27[] = {0x61,0x6c,0x69,0x67,0x6e,0x6f,0x66,}; | ||||
| u8 main_keys_key_array_28[] = {0x70,0x75,0x62,0x6c,0x69,0x63,}; | ||||
| u8 main_keys_key_array_30[] = {0x72,0x65,0x74,0x75,0x72,0x6e,}; | ||||
| u8 main_keys_key_array_31[] = {0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,}; | ||||
| u8 main_keys_key_array_33[] = {0x63,0x6c,0x61,0x73,0x73,}; | ||||
| u8 main_keys_key_array_36[] = {0x74,0x68,0x72,0x65,0x61,0x64,0x5f,0x6c,0x6f,0x63,0x61,0x6c,}; | ||||
| u8 main_keys_key_array_38[] = {0x63,0x68,0x61,0x72,}; | ||||
| u8 main_keys_key_array_39[] = {0x67,0x6f,0x74,0x6f,}; | ||||
| u8 main_keys_key_array_40[] = {0x6e,0x75,0x6c,0x6c,0x70,0x74,0x72,}; | ||||
| u8 main_keys_key_array_43[] = {0x74,0x65,0x6d,0x70,0x6c,0x61,0x74,0x65,}; | ||||
| u8 main_keys_key_array_44[] = {0x74,0x72,0x75,0x65,}; | ||||
| u8 main_keys_key_array_45[] = {0x62,0x6f,0x6f,0x6c,}; | ||||
| u8 main_keys_key_array_47[] = {0x74,0x79,0x70,0x65,0x6e,0x61,0x6d,0x65,}; | ||||
| u8 main_keys_key_array_48[] = {0x69,0x6e,0x74,}; | ||||
| u8 main_keys_key_array_49[] = {0x73,0x77,0x69,0x74,0x63,0x68,}; | ||||
| u8 main_keys_key_array_50[] = {0x76,0x69,0x72,0x74,0x75,0x61,0x6c,}; | ||||
| u8 main_keys_key_array_51[] = {0x69,0x6e,0x6c,0x69,0x6e,0x65,}; | ||||
| u8 main_keys_key_array_54[] = {0x76,0x6f,0x69,0x64,}; | ||||
| u8 main_keys_key_array_57[] = {0x64,0x65,0x6c,0x65,0x74,0x65,}; | ||||
| u8 main_keys_key_array_60[] = {0x63,0x61,0x74,0x63,0x68,}; | ||||
| u8 main_keys_key_array_61[] = {0x65,0x78,0x70,0x6c,0x69,0x63,0x69,0x74,}; | ||||
| u8 main_keys_key_array_62[] = {0x75,0x6e,0x69,0x6f,0x6e,}; | ||||
| u8 main_keys_key_array_66[] = {0x65,0x78,0x70,0x6f,0x72,0x74,}; | ||||
| u8 main_keys_key_array_68[] = {0x73,0x68,0x6f,0x72,0x74,}; | ||||
| u8 main_keys_key_array_70[] = {0x64,0x79,0x6e,0x61,0x6d,0x69,0x63,0x5f,0x63,0x61,0x73,0x74,}; | ||||
| u8 main_keys_key_array_71[] = {0x74,0x72,0x79,}; | ||||
| u8 main_keys_key_array_72[] = {0x6e,0x6f,0x65,0x78,0x63,0x65,0x70,0x74,}; | ||||
| u8 main_keys_key_array_75[] = {0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,}; | ||||
| u8 main_keys_key_array_76[] = {0x73,0x69,0x7a,0x65,0x6f,0x66,}; | ||||
| u8 main_keys_key_array_78[] = {0x72,0x65,0x69,0x6e,0x74,0x65,0x72,0x70,0x72,0x65,0x74,0x5f,0x63,0x61,0x73,0x74,}; | ||||
| u8 main_keys_key_array_79[] = {0x64,0x65,0x63,0x6c,0x74,0x79,0x70,0x65,}; | ||||
| u8 main_keys_key_array_82[] = {0x74,0x79,0x70,0x65,0x64,0x65,0x66,}; | ||||
| u8 main_keys_key_array_85[] = {0x64,0x6f,}; | ||||
| u8 main_keys_key_array_86[] = {0x65,0x6c,0x73,0x65,}; | ||||
| u8 main_keys_key_array_90[] = {0x73,0x74,0x61,0x74,0x69,0x63,0x5f,0x63,0x61,0x73,0x74,}; | ||||
| u8 main_keys_key_array_91[] = {0x73,0x74,0x72,0x75,0x63,0x74,}; | ||||
| u8 main_keys_key_array_92[] = {0x70,0x72,0x69,0x76,0x61,0x74,0x65,}; | ||||
| u8 main_keys_key_array_93[] = {0x63,0x6f,0x6e,0x73,0x74,}; | ||||
| u8 main_keys_key_array_94[] = {0x64,0x6f,0x75,0x62,0x6c,0x65,}; | ||||
| u8 main_keys_key_array_96[] = {0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,}; | ||||
| u8 main_keys_key_array_99[] = {0x74,0x68,0x69,0x73,}; | ||||
| u8 main_keys_key_array_102[] = {0x66,0x6f,0x72,}; | ||||
| u8 main_keys_key_array_105[] = {0x73,0x74,0x61,0x74,0x69,0x63,}; | ||||
| u8 main_keys_key_array_106[] = {0x66,0x6c,0x6f,0x61,0x74,}; | ||||
| u8 main_keys_key_array_108[] = {0x75,0x6e,0x73,0x69,0x67,0x6e,0x65,0x64,}; | ||||
| u8 main_keys_key_array_109[] = {0x64,0x65,0x66,0x61,0x75,0x6c,0x74,}; | ||||
| u8 main_keys_key_array_110[] = {0x66,0x72,0x69,0x65,0x6e,0x64,}; | ||||
| u8 main_keys_key_array_119[] = {0x6c,0x6f,0x6e,0x67,}; | ||||
| u8 main_keys_key_array_120[] = {0x73,0x74,0x61,0x74,0x69,0x63,0x5f,0x61,0x73,0x73,0x65,0x72,0x74,}; | ||||
| String_Const_u8 main_keys_key_array[122] = { | ||||
| {0, 0}, | ||||
| u8 main_keys_key_array_0[] = {0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,}; | ||||
| u8 main_keys_key_array_1[] = {0x61,0x6c,0x69,0x67,0x6e,0x6f,0x66,}; | ||||
| u8 main_keys_key_array_3[] = {0x73,0x69,0x67,0x6e,0x65,0x64,}; | ||||
| u8 main_keys_key_array_4[] = {0x74,0x68,0x72,0x65,0x61,0x64,0x5f,0x6c,0x6f,0x63,0x61,0x6c,}; | ||||
| u8 main_keys_key_array_5[] = {0x69,0x6e,0x74,}; | ||||
| u8 main_keys_key_array_6[] = {0x75,0x73,0x69,0x6e,0x67,}; | ||||
| u8 main_keys_key_array_8[] = {0x64,0x6f,}; | ||||
| u8 main_keys_key_array_9[] = {0x70,0x72,0x6f,0x74,0x65,0x63,0x74,0x65,0x64,}; | ||||
| u8 main_keys_key_array_11[] = {0x75,0x6e,0x73,0x69,0x67,0x6e,0x65,0x64,}; | ||||
| u8 main_keys_key_array_12[] = {0x63,0x6f,0x6e,0x73,0x74,}; | ||||
| u8 main_keys_key_array_13[] = {0x65,0x6e,0x75,0x6d,}; | ||||
| u8 main_keys_key_array_14[] = {0x6e,0x75,0x6c,0x6c,0x70,0x74,0x72,}; | ||||
| u8 main_keys_key_array_17[] = {0x63,0x61,0x74,0x63,0x68,}; | ||||
| u8 main_keys_key_array_19[] = {0x63,0x6c,0x61,0x73,0x73,}; | ||||
| u8 main_keys_key_array_21[] = {0x74,0x65,0x6d,0x70,0x6c,0x61,0x74,0x65,}; | ||||
| u8 main_keys_key_array_23[] = {0x65,0x78,0x70,0x6f,0x72,0x74,}; | ||||
| u8 main_keys_key_array_24[] = {0x61,0x6c,0x69,0x67,0x6e,0x61,0x73,}; | ||||
| u8 main_keys_key_array_25[] = {0x64,0x65,0x63,0x6c,0x74,0x79,0x70,0x65,}; | ||||
| u8 main_keys_key_array_26[] = {0x73,0x69,0x7a,0x65,0x6f,0x66,}; | ||||
| u8 main_keys_key_array_27[] = {0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,}; | ||||
| u8 main_keys_key_array_29[] = {0x67,0x6f,0x74,0x6f,}; | ||||
| u8 main_keys_key_array_30[] = {0x6c,0x6f,0x6e,0x67,}; | ||||
| u8 main_keys_key_array_31[] = {0x6e,0x6f,0x65,0x78,0x63,0x65,0x70,0x74,}; | ||||
| u8 main_keys_key_array_32[] = {0x74,0x72,0x75,0x65,}; | ||||
| u8 main_keys_key_array_38[] = {0x65,0x78,0x70,0x6c,0x69,0x63,0x69,0x74,}; | ||||
| u8 main_keys_key_array_39[] = {0x64,0x6f,0x75,0x62,0x6c,0x65,}; | ||||
| u8 main_keys_key_array_40[] = {0x73,0x77,0x69,0x74,0x63,0x68,}; | ||||
| u8 main_keys_key_array_41[] = {0x69,0x6e,0x6c,0x69,0x6e,0x65,}; | ||||
| u8 main_keys_key_array_44[] = {0x63,0x6f,0x6e,0x73,0x74,0x5f,0x63,0x61,0x73,0x74,}; | ||||
| u8 main_keys_key_array_47[] = {0x64,0x79,0x6e,0x61,0x6d,0x69,0x63,0x5f,0x63,0x61,0x73,0x74,}; | ||||
| u8 main_keys_key_array_51[] = {0x66,0x6f,0x72,}; | ||||
| u8 main_keys_key_array_54[] = {0x63,0x61,0x73,0x65,}; | ||||
| u8 main_keys_key_array_55[] = {0x73,0x68,0x6f,0x72,0x74,}; | ||||
| u8 main_keys_key_array_56[] = {0x62,0x72,0x65,0x61,0x6b,}; | ||||
| u8 main_keys_key_array_58[] = {0x76,0x6f,0x69,0x64,}; | ||||
| u8 main_keys_key_array_61[] = {0x75,0x6e,0x69,0x6f,0x6e,}; | ||||
| u8 main_keys_key_array_62[] = {0x64,0x65,0x6c,0x65,0x74,0x65,}; | ||||
| u8 main_keys_key_array_65[] = {0x62,0x6f,0x6f,0x6c,}; | ||||
| u8 main_keys_key_array_66[] = {0x65,0x78,0x74,0x65,0x72,0x6e,}; | ||||
| u8 main_keys_key_array_67[] = {0x65,0x6c,0x73,0x65,}; | ||||
| u8 main_keys_key_array_68[] = {0x66,0x72,0x69,0x65,0x6e,0x64,}; | ||||
| u8 main_keys_key_array_73[] = {0x70,0x75,0x62,0x6c,0x69,0x63,}; | ||||
| u8 main_keys_key_array_74[] = {0x66,0x6c,0x6f,0x61,0x74,}; | ||||
| u8 main_keys_key_array_76[] = {0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,}; | ||||
| u8 main_keys_key_array_78[] = {0x73,0x74,0x61,0x74,0x69,0x63,0x5f,0x63,0x61,0x73,0x74,}; | ||||
| u8 main_keys_key_array_81[] = {0x72,0x65,0x69,0x6e,0x74,0x65,0x72,0x70,0x72,0x65,0x74,0x5f,0x63,0x61,0x73,0x74,}; | ||||
| u8 main_keys_key_array_83[] = {0x61,0x73,0x6d,}; | ||||
| u8 main_keys_key_array_86[] = {0x74,0x79,0x70,0x65,0x64,0x65,0x66,}; | ||||
| u8 main_keys_key_array_87[] = {0x74,0x79,0x70,0x65,0x69,0x64,}; | ||||
| u8 main_keys_key_array_88[] = {0x74,0x68,0x69,0x73,}; | ||||
| u8 main_keys_key_array_89[] = {0x66,0x61,0x6c,0x73,0x65,}; | ||||
| u8 main_keys_key_array_91[] = {0x69,0x66,}; | ||||
| u8 main_keys_key_array_93[] = {0x77,0x68,0x69,0x6c,0x65,}; | ||||
| u8 main_keys_key_array_94[] = {0x72,0x65,0x74,0x75,0x72,0x6e,}; | ||||
| u8 main_keys_key_array_96[] = {0x76,0x69,0x72,0x74,0x75,0x61,0x6c,}; | ||||
| u8 main_keys_key_array_98[] = {0x73,0x74,0x61,0x74,0x69,0x63,0x5f,0x61,0x73,0x73,0x65,0x72,0x74,}; | ||||
| u8 main_keys_key_array_99[] = {0x74,0x79,0x70,0x65,0x6e,0x61,0x6d,0x65,}; | ||||
| u8 main_keys_key_array_100[] = {0x63,0x68,0x61,0x72,}; | ||||
| u8 main_keys_key_array_105[] = {0x70,0x72,0x69,0x76,0x61,0x74,0x65,}; | ||||
| u8 main_keys_key_array_106[] = {0x64,0x65,0x66,0x61,0x75,0x6c,0x74,}; | ||||
| u8 main_keys_key_array_107[] = {0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,}; | ||||
| u8 main_keys_key_array_111[] = {0x73,0x74,0x72,0x75,0x63,0x74,}; | ||||
| u8 main_keys_key_array_112[] = {0x6e,0x65,0x77,}; | ||||
| u8 main_keys_key_array_114[] = {0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,}; | ||||
| u8 main_keys_key_array_115[] = {0x74,0x72,0x79,}; | ||||
| u8 main_keys_key_array_116[] = {0x73,0x74,0x61,0x74,0x69,0x63,}; | ||||
| String_Const_u8 main_keys_key_array[121] = { | ||||
| {main_keys_key_array_0, 8}, | ||||
| {main_keys_key_array_1, 7}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_3, 5}, | ||||
| {main_keys_key_array_3, 6}, | ||||
| {main_keys_key_array_4, 12}, | ||||
| {main_keys_key_array_5, 3}, | ||||
| {main_keys_key_array_6, 5}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_6, 6}, | ||||
| {main_keys_key_array_7, 4}, | ||||
| {main_keys_key_array_8, 5}, | ||||
| {main_keys_key_array_8, 2}, | ||||
| {main_keys_key_array_9, 9}, | ||||
| {main_keys_key_array_10, 3}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_11, 8}, | ||||
| {main_keys_key_array_12, 5}, | ||||
| {main_keys_key_array_13, 4}, | ||||
| {main_keys_key_array_14, 7}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_13, 5}, | ||||
| {main_keys_key_array_14, 6}, | ||||
| {main_keys_key_array_15, 3}, | ||||
| {main_keys_key_array_17, 5}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_19, 5}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_18, 6}, | ||||
| {main_keys_key_array_19, 8}, | ||||
| {main_keys_key_array_20, 10}, | ||||
| {main_keys_key_array_21, 5}, | ||||
| {main_keys_key_array_21, 8}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_23, 4}, | ||||
| {main_keys_key_array_24, 2}, | ||||
| {main_keys_key_array_23, 6}, | ||||
| {main_keys_key_array_24, 7}, | ||||
| {main_keys_key_array_25, 8}, | ||||
| {main_keys_key_array_26, 6}, | ||||
| {main_keys_key_array_27, 8}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_26, 9}, | ||||
| {main_keys_key_array_27, 7}, | ||||
| {main_keys_key_array_28, 6}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_30, 6}, | ||||
| {main_keys_key_array_29, 4}, | ||||
| {main_keys_key_array_30, 4}, | ||||
| {main_keys_key_array_31, 8}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_33, 5}, | ||||
| {main_keys_key_array_32, 4}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_36, 12}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_38, 4}, | ||||
| {main_keys_key_array_39, 4}, | ||||
| {main_keys_key_array_40, 7}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_43, 8}, | ||||
| {main_keys_key_array_44, 4}, | ||||
| {main_keys_key_array_45, 4}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_47, 8}, | ||||
| {main_keys_key_array_48, 3}, | ||||
| {main_keys_key_array_49, 6}, | ||||
| {main_keys_key_array_50, 7}, | ||||
| {main_keys_key_array_51, 6}, | ||||
| {main_keys_key_array_38, 8}, | ||||
| {main_keys_key_array_39, 6}, | ||||
| {main_keys_key_array_40, 6}, | ||||
| {main_keys_key_array_41, 6}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_44, 10}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_47, 12}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_51, 3}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_54, 4}, | ||||
| {main_keys_key_array_55, 5}, | ||||
| {main_keys_key_array_56, 5}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_58, 4}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_57, 6}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_60, 5}, | ||||
| {main_keys_key_array_61, 8}, | ||||
| {main_keys_key_array_62, 5}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_61, 5}, | ||||
| {main_keys_key_array_62, 6}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_65, 4}, | ||||
| {main_keys_key_array_66, 6}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_68, 5}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_70, 12}, | ||||
| {main_keys_key_array_71, 3}, | ||||
| {main_keys_key_array_72, 8}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_75, 8}, | ||||
| {main_keys_key_array_76, 6}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_78, 16}, | ||||
| {main_keys_key_array_79, 8}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_82, 7}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_85, 2}, | ||||
| {main_keys_key_array_86, 4}, | ||||
| {main_keys_key_array_67, 4}, | ||||
| {main_keys_key_array_68, 6}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_90, 11}, | ||||
| {main_keys_key_array_91, 6}, | ||||
| {main_keys_key_array_92, 7}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_73, 6}, | ||||
| {main_keys_key_array_74, 5}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_76, 8}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_78, 11}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_81, 16}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_83, 3}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_86, 7}, | ||||
| {main_keys_key_array_87, 6}, | ||||
| {main_keys_key_array_88, 4}, | ||||
| {main_keys_key_array_89, 5}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_91, 2}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_93, 5}, | ||||
| {main_keys_key_array_94, 6}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_96, 8}, | ||||
| {main_keys_key_array_96, 7}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_99, 4}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_102, 3}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_105, 6}, | ||||
| {main_keys_key_array_106, 5}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_108, 8}, | ||||
| {main_keys_key_array_109, 7}, | ||||
| {main_keys_key_array_110, 6}, | ||||
| {main_keys_key_array_98, 13}, | ||||
| {main_keys_key_array_99, 8}, | ||||
| {main_keys_key_array_100, 4}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_105, 7}, | ||||
| {main_keys_key_array_106, 7}, | ||||
| {main_keys_key_array_107, 9}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_111, 6}, | ||||
| {main_keys_key_array_112, 3}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_114, 8}, | ||||
| {main_keys_key_array_115, 3}, | ||||
| {main_keys_key_array_116, 6}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {main_keys_key_array_119, 4}, | ||||
| {main_keys_key_array_120, 13}, | ||||
| {0, 0}, | ||||
| }; | ||||
| Lexeme_Table_Value main_keys_value_array[122] = { | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_AlignAs}, | ||||
| {0, 0}, | ||||
| {8, TokenCppKind_LiteralFalse}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Extern}, | ||||
| {4, TokenCppKind_Case}, | ||||
| {4, TokenCppKind_While}, | ||||
| {4, TokenCppKind_Namespace}, | ||||
| {4, TokenCppKind_New}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Using}, | ||||
| {4, TokenCppKind_TypeID}, | ||||
| {4, TokenCppKind_Asm}, | ||||
| {0, 0}, | ||||
| Lexeme_Table_Value main_keys_value_array[121] = { | ||||
| {4, TokenCppKind_Volatile}, | ||||
| {4, TokenCppKind_AlignOf}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Signed}, | ||||
| {4, TokenCppKind_Continue}, | ||||
| {4, TokenCppKind_ConstCast}, | ||||
| {4, TokenCppKind_Break}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Enum}, | ||||
| {4, TokenCppKind_If}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Protected}, | ||||
| {4, TokenCppKind_AlignOf}, | ||||
| {4, TokenCppKind_Public}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Return}, | ||||
| {4, TokenCppKind_Register}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Class}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_ThreadLocal}, | ||||
| {4, TokenCppKind_Int}, | ||||
| {4, TokenCppKind_Using}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Char}, | ||||
| {4, TokenCppKind_Goto}, | ||||
| {4, TokenCppKind_Do}, | ||||
| {4, TokenCppKind_Protected}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Unsigned}, | ||||
| {4, TokenCppKind_Const}, | ||||
| {4, TokenCppKind_Enum}, | ||||
| {4, TokenCppKind_NullPtr}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Template}, | ||||
| {8, TokenCppKind_LiteralTrue}, | ||||
| {4, TokenCppKind_Bool}, | ||||
| {4, TokenCppKind_Catch}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Typename}, | ||||
| {4, TokenCppKind_Int}, | ||||
| {4, TokenCppKind_Class}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Template}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Export}, | ||||
| {4, TokenCppKind_AlignAs}, | ||||
| {4, TokenCppKind_DeclType}, | ||||
| {4, TokenCppKind_SizeOf}, | ||||
| {4, TokenCppKind_Operator}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Goto}, | ||||
| {4, TokenCppKind_Long}, | ||||
| {4, TokenCppKind_NoExcept}, | ||||
| {8, TokenCppKind_LiteralTrue}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Explicit}, | ||||
| {4, TokenCppKind_Double}, | ||||
| {4, TokenCppKind_Switch}, | ||||
| {4, TokenCppKind_Virtual}, | ||||
| {4, TokenCppKind_Inline}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Void}, | ||||
| {4, TokenCppKind_ConstCast}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Delete}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Catch}, | ||||
| {4, TokenCppKind_Explicit}, | ||||
| {4, TokenCppKind_Union}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Export}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Short}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_DynamicCast}, | ||||
| {4, TokenCppKind_Try}, | ||||
| {4, TokenCppKind_NoExcept}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Volatile}, | ||||
| {4, TokenCppKind_SizeOf}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_ReinterpretCast}, | ||||
| {4, TokenCppKind_DeclType}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Typedef}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Do}, | ||||
| {4, TokenCppKind_Else}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_StaticCast}, | ||||
| {4, TokenCppKind_Struct}, | ||||
| {4, TokenCppKind_Private}, | ||||
| {4, TokenCppKind_Const}, | ||||
| {4, TokenCppKind_Double}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Operator}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_This}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_For}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Static}, | ||||
| {4, TokenCppKind_Float}, | ||||
| {4, TokenCppKind_Case}, | ||||
| {4, TokenCppKind_Short}, | ||||
| {4, TokenCppKind_Break}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Unsigned}, | ||||
| {4, TokenCppKind_Default}, | ||||
| {4, TokenCppKind_Void}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Union}, | ||||
| {4, TokenCppKind_Delete}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Bool}, | ||||
| {4, TokenCppKind_Extern}, | ||||
| {4, TokenCppKind_Else}, | ||||
| {4, TokenCppKind_Friend}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Public}, | ||||
| {4, TokenCppKind_Float}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Register}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_StaticCast}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_ReinterpretCast}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Asm}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Long}, | ||||
| {4, TokenCppKind_Typedef}, | ||||
| {4, TokenCppKind_TypeID}, | ||||
| {4, TokenCppKind_This}, | ||||
| {8, TokenCppKind_LiteralFalse}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_If}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_While}, | ||||
| {4, TokenCppKind_Return}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Virtual}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_StaticAssert}, | ||||
| {4, TokenCppKind_Typename}, | ||||
| {4, TokenCppKind_Char}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Private}, | ||||
| {4, TokenCppKind_Default}, | ||||
| {4, TokenCppKind_Namespace}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Struct}, | ||||
| {4, TokenCppKind_New}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_Continue}, | ||||
| {4, TokenCppKind_Try}, | ||||
| {4, TokenCppKind_Static}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| }; | ||||
| i32 main_keys_slot_count = 122; | ||||
| u64 main_keys_seed = 0x72a08ef8c3b20b14; | ||||
| i32 main_keys_slot_count = 121; | ||||
| u64 main_keys_seed = 0x4e71603d6bab78be; | ||||
| u64 pp_directives_hash_array[25] = { | ||||
| 0xad4540de30c71edd,0x0000000000000000,0x0000000000000000,0x0e18faf5e569c2b1, | ||||
| 0xa64e19bb79cbac21,0x0000000000000000,0xad4540de1b0f0bc9,0x0000000000000000, | ||||
| 0x0000000000000000,0x0000000000000000,0xad4540de18b15083,0xa64e188dd72574bd, | ||||
| 0xffd4966f134594b1,0xffd4966e47d3f229,0x0000000000000000,0x3b12b187afde4529, | ||||
| 0xffd4966e2c27f051,0x0000000000000000,0xad4540d9ef8ab729,0xffd49673f22de19f, | ||||
| 0x0000000000000000,0x0e18faf5e5976a43,0xad4540de12fc7049,0x0e18faf5e5976149, | ||||
| 0x11557879e6f0ea77,0x660a16e8e3deeead,0x6ce110cd12875a1f,0x0000000000000000, | ||||
| 0x05d53bc1ed49019f,0xe0ea3af73f832cff,0x660a16e8e388da77,0x0000000000000000, | ||||
| 0x0000000000000000,0x1155675ee54cd183,0x11557878a3b561f3,0x0000000000000000, | ||||
| 0xe0eb9286644bb223,0x115578679cce8ad9,0x0000000000000000,0x0000000000000000, | ||||
| 0x660a16e8efe01327,0x0000000000000000,0x660a16e8ebbdd277,0x6ce110cd1279b983, | ||||
| 0x6ce110cd128723fd,0x0000000000000000,0x660a16e8ecb496bf,0x0000000000000000, | ||||
| 0x0000000000000000, | ||||
| }; | ||||
| u8 pp_directives_key_array_0[] = {0x65,0x72,0x72,0x6f,0x72,}; | ||||
| u8 pp_directives_key_array_3[] = {0x6c,0x69,0x6e,0x65,}; | ||||
| u8 pp_directives_key_array_4[] = {0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,}; | ||||
| u8 pp_directives_key_array_6[] = {0x69,0x66,0x64,0x65,0x66,}; | ||||
| u8 pp_directives_key_array_10[] = {0x75,0x73,0x69,0x6e,0x67,}; | ||||
| u8 pp_directives_key_array_11[] = {0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,}; | ||||
| u8 pp_directives_key_array_12[] = {0x64,0x65,0x66,0x69,0x6e,0x65,}; | ||||
| u8 pp_directives_key_array_13[] = {0x69,0x66,0x6e,0x64,0x65,0x66,}; | ||||
| u8 pp_directives_key_array_15[] = {0x69,0x66,}; | ||||
| u8 pp_directives_key_array_16[] = {0x69,0x6d,0x70,0x6f,0x72,0x74,}; | ||||
| u8 pp_directives_key_array_18[] = {0x65,0x6e,0x64,0x69,0x66,}; | ||||
| u8 pp_directives_key_array_19[] = {0x70,0x72,0x61,0x67,0x6d,0x61,}; | ||||
| u8 pp_directives_key_array_21[] = {0x65,0x6c,0x73,0x65,}; | ||||
| u8 pp_directives_key_array_22[] = {0x75,0x6e,0x64,0x65,0x66,}; | ||||
| u8 pp_directives_key_array_23[] = {0x65,0x6c,0x69,0x66,}; | ||||
| u8 pp_directives_key_array_0[] = {0x69,0x66,0x6e,0x64,0x65,0x66,}; | ||||
| u8 pp_directives_key_array_1[] = {0x75,0x73,0x69,0x6e,0x67,}; | ||||
| u8 pp_directives_key_array_2[] = {0x65,0x6c,0x69,0x66,}; | ||||
| u8 pp_directives_key_array_4[] = {0x69,0x66,}; | ||||
| u8 pp_directives_key_array_5[] = {0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,}; | ||||
| u8 pp_directives_key_array_6[] = {0x75,0x6e,0x64,0x65,0x66,}; | ||||
| u8 pp_directives_key_array_9[] = {0x64,0x65,0x66,0x69,0x6e,0x65,}; | ||||
| u8 pp_directives_key_array_10[] = {0x69,0x6d,0x70,0x6f,0x72,0x74,}; | ||||
| u8 pp_directives_key_array_12[] = {0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,}; | ||||
| u8 pp_directives_key_array_13[] = {0x70,0x72,0x61,0x67,0x6d,0x61,}; | ||||
| u8 pp_directives_key_array_16[] = {0x65,0x72,0x72,0x6f,0x72,}; | ||||
| u8 pp_directives_key_array_18[] = {0x69,0x66,0x64,0x65,0x66,}; | ||||
| u8 pp_directives_key_array_19[] = {0x6c,0x69,0x6e,0x65,}; | ||||
| u8 pp_directives_key_array_20[] = {0x65,0x6c,0x73,0x65,}; | ||||
| u8 pp_directives_key_array_22[] = {0x65,0x6e,0x64,0x69,0x66,}; | ||||
| String_Const_u8 pp_directives_key_array[25] = { | ||||
| {pp_directives_key_array_0, 5}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {pp_directives_key_array_3, 4}, | ||||
| {pp_directives_key_array_4, 7}, | ||||
| {pp_directives_key_array_0, 6}, | ||||
| {pp_directives_key_array_1, 5}, | ||||
| {pp_directives_key_array_2, 4}, | ||||
| {0, 0}, | ||||
| {pp_directives_key_array_4, 2}, | ||||
| {pp_directives_key_array_5, 7}, | ||||
| {pp_directives_key_array_6, 5}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {pp_directives_key_array_9, 6}, | ||||
| {pp_directives_key_array_10, 6}, | ||||
| {0, 0}, | ||||
| {pp_directives_key_array_10, 5}, | ||||
| {pp_directives_key_array_11, 7}, | ||||
| {pp_directives_key_array_12, 6}, | ||||
| {pp_directives_key_array_12, 7}, | ||||
| {pp_directives_key_array_13, 6}, | ||||
| {0, 0}, | ||||
| {pp_directives_key_array_15, 2}, | ||||
| {pp_directives_key_array_16, 6}, | ||||
| {0, 0}, | ||||
| {pp_directives_key_array_16, 5}, | ||||
| {0, 0}, | ||||
| {pp_directives_key_array_18, 5}, | ||||
| {pp_directives_key_array_19, 6}, | ||||
| {pp_directives_key_array_19, 4}, | ||||
| {pp_directives_key_array_20, 4}, | ||||
| {0, 0}, | ||||
| {pp_directives_key_array_21, 4}, | ||||
| {pp_directives_key_array_22, 5}, | ||||
| {pp_directives_key_array_23, 4}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| }; | ||||
| Lexeme_Table_Value pp_directives_value_array[25] = { | ||||
| {5, TokenCppKind_PPError}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {5, TokenCppKind_PPLine}, | ||||
| {5, TokenCppKind_PPVersion}, | ||||
| {0, 0}, | ||||
| {5, TokenCppKind_PPIfDef}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {5, TokenCppKind_PPUsing}, | ||||
| {5, TokenCppKind_PPInclude}, | ||||
| {5, TokenCppKind_PPDefine}, | ||||
| {5, TokenCppKind_PPIfNDef}, | ||||
| {5, TokenCppKind_PPUsing}, | ||||
| {5, TokenCppKind_PPElIf}, | ||||
| {0, 0}, | ||||
| {5, TokenCppKind_PPIf}, | ||||
| {5, TokenCppKind_PPVersion}, | ||||
| {5, TokenCppKind_PPUndef}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {5, TokenCppKind_PPDefine}, | ||||
| {5, TokenCppKind_PPImport}, | ||||
| {0, 0}, | ||||
| {5, TokenCppKind_PPEndIf}, | ||||
| {5, TokenCppKind_PPInclude}, | ||||
| {5, TokenCppKind_PPPragma}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| {5, TokenCppKind_PPError}, | ||||
| {0, 0}, | ||||
| {5, TokenCppKind_PPIfDef}, | ||||
| {5, TokenCppKind_PPLine}, | ||||
| {5, TokenCppKind_PPElse}, | ||||
| {5, TokenCppKind_PPUndef}, | ||||
| {5, TokenCppKind_PPElIf}, | ||||
| {0, 0}, | ||||
| {5, TokenCppKind_PPEndIf}, | ||||
| {0, 0}, | ||||
| {0, 0}, | ||||
| }; | ||||
| i32 pp_directives_slot_count = 25; | ||||
| u64 pp_directives_seed = 0x639be38020429ccc; | ||||
| u64 pp_directives_seed = 0xf30c26e2b8e4ff9e; | ||||
| u64 pp_keys_hash_array[2] = { | ||||
| 0x03502b4f7f689da7,0x0000000000000000, | ||||
| 0x0000000000000000,0xee296b9aa9ca2a41, | ||||
| }; | ||||
| u8 pp_keys_key_array_0[] = {0x64,0x65,0x66,0x69,0x6e,0x65,0x64,}; | ||||
| u8 pp_keys_key_array_1[] = {0x64,0x65,0x66,0x69,0x6e,0x65,0x64,}; | ||||
| String_Const_u8 pp_keys_key_array[2] = { | ||||
| {pp_keys_key_array_0, 7}, | ||||
| {0, 0}, | ||||
| {pp_keys_key_array_1, 7}, | ||||
| }; | ||||
| Lexeme_Table_Value pp_keys_value_array[2] = { | ||||
| {4, TokenCppKind_PPDefined}, | ||||
| {0, 0}, | ||||
| {4, TokenCppKind_PPDefined}, | ||||
| }; | ||||
| i32 pp_keys_slot_count = 2; | ||||
| u64 pp_keys_seed = 0xbf1efe4a490d5f30; | ||||
| u64 pp_keys_seed = 0x83e4bc6eb147cac1; | ||||
| internal Token_List | ||||
| lex_full_input_cpp(Arena *arena, String_Const_u8 input){ | ||||
| Token_List list = {}; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue