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
 |     // NOTE(allen): miscellaneous init
 | ||||||
|     hot_directory_init(arena, &models->hot_directory, current_directory); |     hot_directory_init(arena, &models->hot_directory, current_directory); | ||||||
|     child_process_container_init(models->tctx->allocator, &models->child_processes); |     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(); |     models->period_wakeup_timer = system_wake_up_timer_create(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -10,8 +10,8 @@ | ||||||
| // TOP
 | // TOP
 | ||||||
| 
 | 
 | ||||||
| function b32 | function b32 | ||||||
| access_test(u32 lock_flags, u32 access_flags){ | access_test(Access_Flag object_flags, Access_Flag access_flags){ | ||||||
|     return((lock_flags & ~access_flags) == 0); |     return((object_flags & access_flags) == access_flags); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function b32 | function b32 | ||||||
|  | @ -49,8 +49,7 @@ is_running_coroutine(Application_Links *app){ | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| api(custom) function b32 | 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; |     Models *models = (Models*)app->cmd_context; | ||||||
|     b32 result = true; |     b32 result = true; | ||||||
|     switch (setting){ |     switch (setting){ | ||||||
|  | @ -1116,17 +1115,18 @@ view_get_panel(Application_Links *app, View_ID view_id){ | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| api(custom) function 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; |     Models *models = (Models*)app->cmd_context; | ||||||
|     Panel *panel = imp_get_panel(models, panel_id); |     Panel *panel = imp_get_panel(models, panel_id); | ||||||
|     View_ID result = 0; |     View_ID result = 0; | ||||||
|     if (api_check_panel(panel)){ |     if (api_check_panel(panel)){ | ||||||
|         if (panel->kind == PanelKind_Final){ |         if (panel->kind == PanelKind_Final){ | ||||||
|             View *view = panel->view; |             View *view = panel->view; | ||||||
|             Assert(view != 0); |             if (api_check_view(view, access)){ | ||||||
|                 result = view_get_id(&models->live_set, view); |                 result = view_get_id(&models->live_set, view); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |     } | ||||||
|     return(result); |     return(result); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -1157,17 +1157,20 @@ panel_is_leaf(Application_Links *app, Panel_ID panel_id){ | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| api(custom) function b32 | 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; |     Models *models = (Models*)app->cmd_context; | ||||||
|     Layout *layout = &models->layout; |     Layout *layout = &models->layout; | ||||||
|     b32 result = false; |     b32 result = false; | ||||||
|     Panel *panel = imp_get_panel(models, panel_id); |     Panel *panel = imp_get_panel(models, panel_id); | ||||||
|     if (api_check_panel(panel)){ |     if (api_check_panel(panel)){ | ||||||
|         Panel *new_panel = 0; |         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; |             Live_Views *live_set = &models->live_set; | ||||||
|             View *new_view = live_set_alloc_view(&models->lifetime_allocator, live_set, new_panel); |             View *new_view = live_set_alloc_view(&models->lifetime_allocator, | ||||||
|             view_init(models, new_view, models->scratch_buffer, models->view_event_handler); |                                                  live_set, new_panel); | ||||||
|  |             view_init(models, new_view, models->scratch_buffer, | ||||||
|  |                       models->view_event_handler); | ||||||
|             result = true; |             result = true; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | @ -1175,7 +1178,8 @@ panel_split(Application_Links *app, Panel_ID panel_id, Panel_Split_Orientation o | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| api(custom) function b32 | 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; |     Models *models = (Models*)app->cmd_context; | ||||||
|     Layout *layout = &models->layout; |     Layout *layout = &models->layout; | ||||||
|     b32 result = false; |     b32 result = false; | ||||||
|  | @ -1236,7 +1240,7 @@ panel_get_parent(Application_Links *app, Panel_ID panel_id){ | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| api(custom) function 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; |     Models *models = (Models*)app->cmd_context; | ||||||
|     Layout *layout = &models->layout; |     Layout *layout = &models->layout; | ||||||
|     Panel *panel = imp_get_panel(models, panel_id); |     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){ |         if (panel->kind == PanelKind_Intermediate){ | ||||||
|             Panel *child = 0; |             Panel *child = 0; | ||||||
|             switch (which_child){ |             switch (which_child){ | ||||||
|                 case PanelChild_Min: |                 case Side_Min: | ||||||
|                 { |                 { | ||||||
|                     child = panel->tl_panel; |                     child = panel->tl_panel; | ||||||
|                 }break; |                 }break; | ||||||
|                 case PanelChild_Max: |                 case Side_Max: | ||||||
|                 { |                 { | ||||||
|                     child = panel->br_panel; |                     child = panel->br_panel; | ||||||
|                 }break; |                 }break; | ||||||
|  | @ -1587,7 +1591,7 @@ view_current_context(Application_Links *app, View_ID view_id){ | ||||||
|     View *view = imp_get_view(models, view_id); |     View *view = imp_get_view(models, view_id); | ||||||
|     View_Context result = {}; |     View_Context result = {}; | ||||||
|     if (api_check_view(view)){ |     if (api_check_view(view)){ | ||||||
|         result = view_current_context(models, view); |         result = view_current_context(view); | ||||||
|     } |     } | ||||||
|     return(result); |     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); |     View *view = imp_get_view(models, view_id); | ||||||
|     Data result = {}; |     Data result = {}; | ||||||
|     if (api_check_view(view)){ |     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){ |         if (ctx != 0){ | ||||||
|             switch (hook_id){ |             switch (hook_id){ | ||||||
|                 case HookID_DeltaRule: |                 case HookID_DeltaRule: | ||||||
|  | @ -2586,16 +2590,6 @@ set_hot_directory(Application_Links *app, String_Const_u8 string) | ||||||
|     return(true); |     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 | api(custom) function void | ||||||
| send_exit_signal(Application_Links *app) | send_exit_signal(Application_Links *app) | ||||||
| { | { | ||||||
|  |  | ||||||
|  | @ -88,12 +88,6 @@ struct Models{ | ||||||
|      |      | ||||||
|     b32 keep_playing; |     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; |     b32 has_new_title; | ||||||
|     char *title_space; |     char *title_space; | ||||||
|     i32 title_capacity; |     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)); |     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){ | file_get_access_flags(Editing_File *file){ | ||||||
|     u32 flags = 0; |     Access_Flag flags = Access_Read|Access_Visible; | ||||||
|     if (file->settings.read_only){ |     if (!file->settings.read_only){ | ||||||
|         flags |= AccessProtected; |         flags |= Access_Write; | ||||||
|     } |     } | ||||||
|     return(flags); |     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); |     return(view->file->settings.base_map_id); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| internal u32 | internal Access_Flag | ||||||
| view_get_access_flags(View *view){ | view_get_access_flags(View *view){ | ||||||
|     u32 result = AccessOpen; |     Access_Flag result = file_get_access_flags(view->file); | ||||||
|     View_Context_Node *node = view->ctx; |     View_Context_Node *node = view->ctx; | ||||||
|     if (node != 0 && node->ctx.hides_buffer){ |     b32 hides_buffer = (node != 0 && node->ctx.hides_buffer); | ||||||
|         result |= AccessHidden; |     if (hides_buffer){ | ||||||
|  |         RemFlag(result, Access_Visible); | ||||||
|     } |     } | ||||||
|     result |= file_get_access_flags(view->file); |  | ||||||
|     return(result); |     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 | internal b32 | ||||||
| view_move_view_to_cursor(Models *models, View *view, Buffer_Scroll *scroll){ | view_move_view_to_cursor(Models *models, View *view, Buffer_Scroll *scroll){ | ||||||
|     Editing_File *file = view->file; |     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 line_height = face->line_height; | ||||||
|     f32 typical_advance = face->typical_advance; |     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 = {}; |     Vec2_f32 target_p_relative = {}; | ||||||
|     if (p.y < acceptable_y.min){ |     if (p.y < 0.f){ | ||||||
|         target_p_relative.y = p.y - safety.y; |         target_p_relative.y = p.y - line_height*1.5f; | ||||||
|     } |     } | ||||||
|     else if (p.y > acceptable_y.max){ |     else if (p.y > view_dim.y){ | ||||||
|         target_p_relative.y = (p.y + safety.y) - view_dim.y; |         target_p_relative.y = (p.y + line_height*1.5f) - view_dim.y; | ||||||
|     } |     } | ||||||
|     if (p.x < 0.f){ |     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){ |     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 = view_normalize_buffer_point(models, view, scroll->target); | ||||||
|     scroll->target.pixel_shift.x = f32_round32(scroll->target.pixel_shift.x); |     scroll->target.pixel_shift.x = f32_round32(scroll->target.pixel_shift.x); | ||||||
|     scroll->target.pixel_shift.y = f32_round32(scroll->target.pixel_shift.y); |     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; |     p -= scroll.target.pixel_shift; | ||||||
|      |      | ||||||
|     f32 line_height = face->line_height; |     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; |     b32 adjusted_y = true; | ||||||
|     if (p.y < acceptable_y.min){ |     if (p.y < 0.f){ | ||||||
|         p.y = acceptable_y.min + safety.y; |         p.y = line_height*1.5f; | ||||||
|     } |     } | ||||||
|     else if (p.y > acceptable_y.max){ |     else if (p.y > view_dim.y){ | ||||||
|         p.y = acceptable_y.max - safety.y; |         p.y = view_dim.y - line_height*1.5f; | ||||||
|     } |     } | ||||||
|     else{ |     else{ | ||||||
|         adjusted_y = false; |         adjusted_y = false; | ||||||
|  | @ -470,12 +440,12 @@ view_pop_context(View *view){ | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function View_Context_Node* | function View_Context_Node* | ||||||
| view_current_context_node(Models *models, View *view){ | view_current_context_node(View *view){ | ||||||
|     return(view->ctx); |     return(view->ctx); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function View_Context | function View_Context | ||||||
| view_current_context(Models *models, View *view){ | view_current_context(View *view){ | ||||||
|     View_Context ctx = {}; |     View_Context ctx = {}; | ||||||
|     View_Context_Node *node = view->ctx; |     View_Context_Node *node = view->ctx; | ||||||
|     if (node != 0){ |     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_COMMAND_SIG(auto_indent_whole_file) | ||||||
| CUSTOM_DOC("Audo-indents the entire current buffer.") | CUSTOM_DOC("Audo-indents the entire current buffer.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||||
|     i64 buffer_size = buffer_get_size(app, buffer); |     i64 buffer_size = buffer_get_size(app, buffer); | ||||||
|     auto_indent_buffer(app, buffer, Ii64(0, buffer_size)); |     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_COMMAND_SIG(auto_indent_line_at_cursor) | ||||||
| CUSTOM_DOC("Auto-indents the line on which the cursor sits.") | CUSTOM_DOC("Auto-indents the line on which the cursor sits.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     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); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     auto_indent_buffer(app, buffer, Ii64(pos)); |     auto_indent_buffer(app, buffer, Ii64(pos)); | ||||||
|     move_past_lead_whitespace(app, view, buffer); |     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_COMMAND_SIG(auto_indent_range) | ||||||
| CUSTOM_DOC("Auto-indents the range between the cursor and the mark.") | CUSTOM_DOC("Auto-indents the range between the cursor and the mark.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     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); |     Range_i64 range = get_view_range(app, view); | ||||||
|     auto_indent_buffer(app, buffer, range); |     auto_indent_buffer(app, buffer, range); | ||||||
|     move_past_lead_whitespace(app, view, buffer); |     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){ |         if (do_auto_indent){ | ||||||
|             View_ID view = get_active_view(app, AccessOpen); |             View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|             Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); |             Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||||
|             Range_i64 pos = {}; |             Range_i64 pos = {}; | ||||||
|             pos.min = view_get_cursor_pos(app, view); |             pos.min = view_get_cursor_pos(app, view); | ||||||
|             write_text_input(app); |             write_text_input(app); | ||||||
|  |  | ||||||
|  | @ -8,13 +8,13 @@ moving the cursor, which work even without the default 4coder framework. | ||||||
| function void | function void | ||||||
| write_character_parameter(Application_Links *app, String_Const_u8 insert){ | write_character_parameter(Application_Links *app, String_Const_u8 insert){ | ||||||
|     if (insert.str != 0 && insert.size > 0){ |     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); |         if_view_has_highlighted_range_delete_range(app, view); | ||||||
|          |          | ||||||
|         i64 pos = view_get_cursor_pos(app, view); |         i64 pos = view_get_cursor_pos(app, view); | ||||||
|         pos = view_get_character_legal_pos_from_pos(app, view, pos); |         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
 |         // NOTE(allen): consecutive inserts merge logic
 | ||||||
|         History_Record_Index first_index = buffer_history_get_current_state_index(app, buffer); |         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_COMMAND_SIG(delete_char) | ||||||
| CUSTOM_DOC("Deletes the character to the right of the cursor.") | 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)){ |     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 start = view_get_cursor_pos(app, view); | ||||||
|         i64 buffer_size = buffer_get_size(app, buffer); |         i64 buffer_size = buffer_get_size(app, buffer); | ||||||
|         if (0 <= start && start < buffer_size){ |         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_COMMAND_SIG(backspace_char) | ||||||
| CUSTOM_DOC("Deletes the character to the left of the cursor.") | 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)){ |     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 end = view_get_cursor_pos(app, view); | ||||||
|         i64 buffer_size = buffer_get_size(app, buffer); |         i64 buffer_size = buffer_get_size(app, buffer); | ||||||
|         if (0 < end && end <= buffer_size){ |         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_COMMAND_SIG(set_mark) | ||||||
| CUSTOM_DOC("Sets the mark to the current position of the cursor.") | 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); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     view_set_mark(app, view, seek_pos(pos)); |     view_set_mark(app, view, seek_pos(pos)); | ||||||
|     view_set_cursor_and_preferred_x(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_COMMAND_SIG(cursor_mark_swap) | ||||||
| CUSTOM_DOC("Swaps the position of the cursor and the mark.") | 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 cursor = view_get_cursor_pos(app, view); | ||||||
|     i64 mark = view_get_mark_pos(app, view); |     i64 mark = view_get_mark_pos(app, view); | ||||||
|     view_set_cursor_and_preferred_x(app, view, seek_pos(mark)); |     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_COMMAND_SIG(delete_range) | ||||||
| CUSTOM_DOC("Deletes the text in the range between the cursor and the mark.") | CUSTOM_DOC("Deletes the text in the range between the cursor and the mark.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     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); |     Range_i64 range = get_view_range(app, view); | ||||||
|     buffer_replace_range(app, buffer, range, string_u8_empty); |     buffer_replace_range(app, buffer, range, string_u8_empty); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function  void | function  void | ||||||
| current_view_boundary_delete(Application_Links *app, Scan_Direction direction, Boundary_Function_List funcs){ | current_view_boundary_delete(Application_Links *app, Scan_Direction direction, Boundary_Function_List funcs){ | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||||
|     Range_i64 range = {}; |     Range_i64 range = {}; | ||||||
|     range.first = view_get_cursor_pos(app, view); |     range.first = view_get_cursor_pos(app, view); | ||||||
|     range.one_past_last = scan(app, funcs, buffer, direction, range.first); |     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 | function void | ||||||
| current_view_snipe_delete(Application_Links *app, Scan_Direction direction, Boundary_Function_List funcs){ | current_view_snipe_delete(Application_Links *app, Scan_Direction direction, Boundary_Function_List funcs){ | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     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); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     Range_i64 range = get_snipe_range(app, funcs, buffer, pos, direction); |     Range_i64 range = get_snipe_range(app, funcs, buffer, pos, direction); | ||||||
|     buffer_replace_range(app, buffer, range, string_u8_litexpr("")); |     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_COMMAND_SIG(center_view) | ||||||
| CUSTOM_DOC("Centers the view vertically on the line on which the cursor sits.") | 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); |     Rect_f32 region = view_get_buffer_region(app, view); | ||||||
|     i64 pos = view_get_cursor_pos(app, view); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     Buffer_Cursor cursor = view_compute_cursor(app, view, seek_pos(pos)); |     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_COMMAND_SIG(left_adjust_view) | ||||||
| CUSTOM_DOC("Sets the left size of the view near the x position of the cursor.") | 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); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     Buffer_Cursor cursor = view_compute_cursor(app, view, seek_pos(pos)); |     Buffer_Cursor cursor = view_compute_cursor(app, view, seek_pos(pos)); | ||||||
|     Vec2_f32 p = view_relative_xy_of_pos(app, view, cursor.line, 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_COMMAND_SIG(click_set_cursor_and_mark) | ||||||
| CUSTOM_DOC("Sets the cursor position and mark to the mouse position.") | 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); |     Mouse_State mouse = get_mouse_state(app); | ||||||
|     i64 pos = view_pos_from_xy(app, view, V2(mouse.p)); |     i64 pos = view_pos_from_xy(app, view, V2(mouse.p)); | ||||||
|     view_set_cursor_and_preferred_x(app, view, seek_pos(pos)); |     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_COMMAND_SIG(click_set_cursor) | ||||||
| CUSTOM_DOC("Sets the cursor position to the mouse position.") | 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); |     Mouse_State mouse = get_mouse_state(app); | ||||||
|     i64 pos = view_pos_from_xy(app, view, V2(mouse.p)); |     i64 pos = view_pos_from_xy(app, view, V2(mouse.p)); | ||||||
|     view_set_cursor_and_preferred_x(app, view, seek_pos(pos)); |     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_COMMAND_SIG(click_set_cursor_if_lbutton) | ||||||
| CUSTOM_DOC("If the mouse left button is pressed, sets the cursor position to the mouse position.") | 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); |     Mouse_State mouse = get_mouse_state(app); | ||||||
|     if (mouse.l){ |     if (mouse.l){ | ||||||
|         i64 pos = view_pos_from_xy(app, view, V2(mouse.p)); |         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_COMMAND_SIG(click_set_mark) | ||||||
| CUSTOM_DOC("Sets the mark position to the mouse position.") | 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); |     Mouse_State mouse = get_mouse_state(app); | ||||||
|     i64 pos = view_pos_from_xy(app, view, V2(mouse.p)); |     i64 pos = view_pos_from_xy(app, view, V2(mouse.p)); | ||||||
|     view_set_mark(app, view, seek_pos(pos)); |     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_COMMAND_SIG(mouse_wheel_scroll) | ||||||
| CUSTOM_DOC("Reads the scroll wheel value from the mouse state and scrolls accordingly.") | 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); |     Mouse_State mouse = get_mouse_state(app); | ||||||
|     if (mouse.wheel != 0){ |     if (mouse.wheel != 0){ | ||||||
|         Buffer_Scroll scroll = view_get_buffer_scroll(app, view); |         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 | internal void | ||||||
| move_vertical_pixels(Application_Links *app, f32 pixels){ | 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); |     move_vertical_pixels(app, view, pixels); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| internal void | internal void | ||||||
| move_vertical_lines(Application_Links *app, View_ID view, f32 lines){ | 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_ID face_id = get_face_id(app, buffer); | ||||||
|     Face_Metrics metrics = get_face_metrics(app, face_id); |     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 | internal void | ||||||
| move_vertical_lines(Application_Links *app, f32 lines){ | 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); |     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_COMMAND_SIG(move_down_textual) | ||||||
| CUSTOM_DOC("Moves down to the next line of actual text, regardless of line wrapping.") | 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); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     Buffer_Cursor cursor = view_compute_cursor(app, view, seek_pos(pos)); |     Buffer_Cursor cursor = view_compute_cursor(app, view, seek_pos(pos)); | ||||||
|     i64 next_line = cursor.line + 1; |     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_COMMAND_SIG(page_up) | ||||||
| CUSTOM_DOC("Scrolls the view up one view height and moves the cursor up one view height.") | 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); |     f32 page_jump = get_page_jump(app, view); | ||||||
|     move_vertical_pixels(app, -page_jump); |     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_COMMAND_SIG(page_down) | ||||||
| CUSTOM_DOC("Scrolls the view down one view height and moves the cursor down one view height.") | 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); |     f32 page_jump = get_page_jump(app, view); | ||||||
|     move_vertical_pixels(app, page_jump); |     move_vertical_pixels(app, page_jump); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| internal void | internal void | ||||||
| seek_blank_line(Application_Links *app, Scan_Direction direction, Position_Within_Line position){ | seek_blank_line(Application_Links *app, Scan_Direction direction, Position_Within_Line position){ | ||||||
|     View_ID view = get_active_view(app, AccessProtected); |     View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|     i64 pos = view_get_cursor_pos(app, view); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     i64 new_pos = get_pos_of_blank_line_grouped(app, buffer, direction, pos); |     i64 new_pos = get_pos_of_blank_line_grouped(app, buffer, direction, pos); | ||||||
|     switch (position){ |     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_COMMAND_SIG(move_left) | ||||||
| CUSTOM_DOC("Moves the cursor one character to the 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); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     Buffer_Cursor cursor = view_compute_cursor(app, view, seek_pos(pos)); |     Buffer_Cursor cursor = view_compute_cursor(app, view, seek_pos(pos)); | ||||||
|     i64 character = view_relative_character_from_pos(app, view, cursor.line, 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_COMMAND_SIG(move_right) | ||||||
| CUSTOM_DOC("Moves the cursor one character to the 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); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     Buffer_Cursor cursor = view_compute_cursor(app, view, seek_pos(pos)); |     Buffer_Cursor cursor = view_compute_cursor(app, view, seek_pos(pos)); | ||||||
|     i64 character = view_relative_character_from_pos(app, view, cursor.line, 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 | function void | ||||||
| current_view_scan_move(Application_Links *app, Scan_Direction direction, Boundary_Function_List funcs){ | current_view_scan_move(Application_Links *app, Scan_Direction direction, Boundary_Function_List funcs){ | ||||||
|     View_ID view = get_active_view(app, AccessProtected); |     View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|     i64 cursor_pos = view_get_cursor_pos(app, view); |     i64 cursor_pos = view_get_cursor_pos(app, view); | ||||||
|     i64 pos = scan(app, funcs, buffer, direction, cursor_pos); |     i64 pos = scan(app, funcs, buffer, direction, cursor_pos); | ||||||
|     view_set_cursor_and_preferred_x(app, view, seek_pos(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_COMMAND_SIG(select_all) | ||||||
| CUSTOM_DOC("Puts the cursor at the top of the file, and the mark at the bottom of the file.") | 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); |     View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|     i32 buffer_size = (i32)buffer_get_size(app, buffer); |     i32 buffer_size = (i32)buffer_get_size(app, buffer); | ||||||
|     view_set_cursor_and_preferred_x(app, view, seek_pos(0)); |     view_set_cursor_and_preferred_x(app, view, seek_pos(0)); | ||||||
|     view_set_mark(app, view, seek_pos(buffer_size)); |     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_COMMAND_SIG(to_uppercase) | ||||||
| CUSTOM_DOC("Converts all ascii text in the range between the cursor and the mark 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); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     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); |     Range_i64 range = get_view_range(app, view); | ||||||
|     Scratch_Block scratch(app); |     Scratch_Block scratch(app); | ||||||
|     String_Const_u8 string = push_buffer_range(app, scratch, buffer, range); |     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_COMMAND_SIG(to_lowercase) | ||||||
| CUSTOM_DOC("Converts all ascii text in the range between the cursor and the mark 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); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     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); |     Range_i64 range = get_view_range(app, view); | ||||||
|     Scratch_Block scratch(app); |     Scratch_Block scratch(app); | ||||||
|     String_Const_u8 string = push_buffer_range(app, scratch, buffer, range); |     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_COMMAND_SIG(clean_all_lines) | ||||||
| CUSTOM_DOC("Removes trailing whitespace from all lines in the current buffer.") | CUSTOM_DOC("Removes trailing whitespace from all lines in the current buffer.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||||
|      |      | ||||||
|     Scratch_Block scratch(app); |     Scratch_Block scratch(app); | ||||||
|     Batch_Edit *batch_first = 0; |     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_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.") | 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); |     View_ID view = get_active_view(app, Access_Always); | ||||||
|     get_next_view_looped_all_panels(app, view, AccessAll); |     get_next_view_looped_all_panels(app, view, Access_Always); | ||||||
|     view_set_active(app, view); |     view_set_active(app, view); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| CUSTOM_COMMAND_SIG(close_panel) | CUSTOM_COMMAND_SIG(close_panel) | ||||||
| CUSTOM_DOC("Closes the currently active panel if it is not the only panel open.") | 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); |     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_COMMAND_SIG(show_scrollbar) | ||||||
| CUSTOM_DOC("Sets the current view to show it's 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); |     view_set_setting(app, view, ViewSetting_ShowScrollbar, true); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| CUSTOM_COMMAND_SIG(hide_scrollbar) | CUSTOM_COMMAND_SIG(hide_scrollbar) | ||||||
| CUSTOM_DOC("Sets the current view to hide it's 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); |     view_set_setting(app, view, ViewSetting_ShowScrollbar, false); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| CUSTOM_COMMAND_SIG(show_filebar) | CUSTOM_COMMAND_SIG(show_filebar) | ||||||
| CUSTOM_DOC("Sets the current view to show it's 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); |     view_set_setting(app, view, ViewSetting_ShowFileBar, true); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| CUSTOM_COMMAND_SIG(hide_filebar) | CUSTOM_COMMAND_SIG(hide_filebar) | ||||||
| CUSTOM_DOC("Sets the current view to hide it's 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); |     view_set_setting(app, view, ViewSetting_ShowFileBar, false); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| CUSTOM_COMMAND_SIG(toggle_filebar) | CUSTOM_COMMAND_SIG(toggle_filebar) | ||||||
| CUSTOM_DOC("Toggles the visibility status of the current view's 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; |     b64 value = false; | ||||||
|     view_get_setting(app, view, ViewSetting_ShowFileBar, &value); |     view_get_setting(app, view, ViewSetting_ShowFileBar, &value); | ||||||
|     view_set_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_COMMAND_SIG(increase_face_size) | ||||||
| CUSTOM_DOC("Increase the size of the face used by the current buffer.") | CUSTOM_DOC("Increase the size of the face used by the current buffer.") | ||||||
| { | { | ||||||
|     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); | ||||||
|     Face_ID face_id = get_face_id(app, buffer); |     Face_ID face_id = get_face_id(app, buffer); | ||||||
|     Face_Description description = get_face_description(app, face_id); |     Face_Description description = get_face_description(app, face_id); | ||||||
|     ++description.parameters.pt_size; |     ++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_COMMAND_SIG(decrease_face_size) | ||||||
| CUSTOM_DOC("Decrease the size of the face used by the current buffer.") | CUSTOM_DOC("Decrease the size of the face used by the current buffer.") | ||||||
| { | { | ||||||
|     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); | ||||||
|     Face_ID face_id = get_face_id(app, buffer); |     Face_ID face_id = get_face_id(app, buffer); | ||||||
|     Face_Description description = get_face_description(app, face_id); |     Face_Description description = get_face_description(app, face_id); | ||||||
|     --description.parameters.pt_size; |     --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_COMMAND_SIG(toggle_virtual_whitespace) | ||||||
| CUSTOM_DOC("Toggles the current buffer's virtual whitespace status.") | CUSTOM_DOC("Toggles the current buffer's virtual whitespace status.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessProtected); |     View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|     (void)buffer; |     (void)buffer; | ||||||
|     NotImplemented; |     NotImplemented; | ||||||
| } | } | ||||||
|  | @ -726,7 +726,7 @@ CUSTOM_DOC("Toggles the current buffer's virtual whitespace status.") | ||||||
| CUSTOM_COMMAND_SIG(toggle_show_whitespace) | CUSTOM_COMMAND_SIG(toggle_show_whitespace) | ||||||
| CUSTOM_DOC("Toggles the current buffer's whitespace visibility status.") | 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; |     b64 show_whitespace = false; | ||||||
|     view_get_setting(app, view, ViewSetting_ShowWhitespace, &show_whitespace); |     view_get_setting(app, view, ViewSetting_ShowWhitespace, &show_whitespace); | ||||||
|     view_set_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); |     bar.string_capacity = sizeof(string_space); | ||||||
|     if (query_user_number(app, &bar)){ |     if (query_user_number(app, &bar)){ | ||||||
|         i32 line_number = (i32)string_to_integer(bar.string, 10); |         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)); |         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 | function void | ||||||
| isearch(Application_Links *app, Scan_Direction start_scan, i64 first_pos, | isearch(Application_Links *app, Scan_Direction start_scan, i64 first_pos, | ||||||
|         String_Const_u8 query_init){ |         String_Const_u8 query_init){ | ||||||
|     View_ID view = get_active_view(app, AccessProtected); |     View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|     if (!buffer_exists(app, buffer)){ |     if (!buffer_exists(app, buffer)){ | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|  | @ -951,22 +951,22 @@ isearch(Application_Links *app, Scan_Direction start_scan, i64 first_pos, | ||||||
| 
 | 
 | ||||||
| function void | function void | ||||||
| isearch(Application_Links *app, Scan_Direction start_scan, String_Const_u8 query_init){ | 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);; |     i64 pos = view_get_cursor_pos(app, view);; | ||||||
|     isearch(app, start_scan, pos, query_init); |     isearch(app, start_scan, pos, query_init); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function void | function void | ||||||
| isearch(Application_Links *app, Scan_Direction start_scan){ | 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);; |     i64 pos = view_get_cursor_pos(app, view);; | ||||||
|     isearch(app, start_scan, pos, SCu8()); |     isearch(app, start_scan, pos, SCu8()); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function void | function void | ||||||
| isearch_identifier(Application_Links *app, Scan_Direction scan){ | isearch_identifier(Application_Links *app, Scan_Direction scan){ | ||||||
|     View_ID view = get_active_view(app, AccessProtected); |     View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|     Buffer_ID buffer_id = view_get_buffer(app, view, AccessProtected); |     Buffer_ID buffer_id = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|     i64 pos = view_get_cursor_pos(app, view); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     Scratch_Block scratch(app); |     Scratch_Block scratch(app); | ||||||
|     Range_i64 range = enclose_pos_alpha_numeric_underscore(app, buffer_id, pos); |     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_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.") | 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); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     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); |     Range_i64 range = get_view_range(app, view); | ||||||
|     replace_in_range_query_user(app, buffer, range); |     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_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.") | 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); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||||
|     Range_i64 range = buffer_range(app, buffer); |     Range_i64 range = buffer_range(app, buffer); | ||||||
|     replace_in_range_query_user(app, buffer, range); |     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); |     Scratch_Block scratch(app); | ||||||
|     Query_Bar_Group group(app); |     Query_Bar_Group group(app); | ||||||
|     String_Pair pair = query_user_replace_pair(app, scratch); |     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 != 0; | ||||||
|          buffer = get_buffer_next(app, buffer, AccessOpen)){ |          buffer = get_buffer_next(app, buffer, Access_ReadWriteVisible)){ | ||||||
|         Range_i64 range = buffer_range(app, buffer); |         Range_i64 range = buffer_range(app, buffer); | ||||||
|         replace_in_range(app, buffer, range, pair.a, pair.b); |         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 r = replace.string; | ||||||
|         String_Const_u8 w = with.string; |         String_Const_u8 w = with.string; | ||||||
|          |          | ||||||
|         View_ID view = get_active_view(app, AccessProtected); |         View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|         Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); |         Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|         i64 pos = start_pos; |         i64 pos = start_pos; | ||||||
|          |          | ||||||
|         Query_Bar bar = {}; |         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_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.") | 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); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||||
|     if (buffer != 0){ |     if (buffer != 0){ | ||||||
|         Query_Bar_Group group(app); |         Query_Bar_Group group(app); | ||||||
|         Query_Bar replace = {}; |         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_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.") | 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); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||||
|     if (buffer != 0){ |     if (buffer != 0){ | ||||||
|         Scratch_Block scratch(app); |         Scratch_Block scratch(app); | ||||||
|         i64 pos = view_get_cursor_pos(app, view); |         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_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.") | 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); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||||
|     if (buffer != 0){ |     if (buffer != 0){ | ||||||
|         Scratch_Block scratch(app); |         Scratch_Block scratch(app); | ||||||
|         Range_i64 range = get_view_range(app, view); |         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 | function void | ||||||
| save_all_dirty_buffers_with_postfix(Application_Links *app, String_Const_u8 postfix){ | save_all_dirty_buffers_with_postfix(Application_Links *app, String_Const_u8 postfix){ | ||||||
|     Scratch_Block scratch(app); |     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 != 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); |         Dirty_State dirty = buffer_get_dirty_state(app, buffer); | ||||||
|         if (dirty == DirtyState_UnsavedChanges){ |         if (dirty == DirtyState_UnsavedChanges){ | ||||||
|             Temp_Memory temp = begin_temp(scratch); |             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_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.") | 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); |     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); | ||||||
|     Scratch_Block scratch(app); |     Scratch_Block scratch(app); | ||||||
|     String_Const_u8 file_name = push_buffer_file_name(app, scratch, buffer); |     String_Const_u8 file_name = push_buffer_file_name(app, scratch, buffer); | ||||||
|     if (file_name.size > 0){ |     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_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.") | 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); |     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); | ||||||
|      |      | ||||||
|     Scratch_Block scratch(app); |     Scratch_Block scratch(app); | ||||||
|     Query_Bar_Group group(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_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.") | 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); |     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); | ||||||
|      |      | ||||||
|     Scratch_Block scratch(app); |     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 | internal void | ||||||
| current_view_move_line(Application_Links *app, Scan_Direction direction){ | current_view_move_line(Application_Links *app, Scan_Direction direction){ | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     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); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     i64 line_number = get_line_number_from_pos(app, buffer, pos); |     i64 line_number = get_line_number_from_pos(app, buffer, pos); | ||||||
|     pos = move_line(app, buffer, line_number, direction); |     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_COMMAND_SIG(duplicate_line) | ||||||
| CUSTOM_DOC("Create a copy of the line on which the cursor sits.") | CUSTOM_DOC("Create a copy of the line on which the cursor sits.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     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); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     i64 line = get_line_number_from_pos(app, buffer, pos); |     i64 line = get_line_number_from_pos(app, buffer, pos); | ||||||
|     Scratch_Block scratch(app); |     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_COMMAND_SIG(delete_line) | ||||||
| CUSTOM_DOC("Delete the line the on which the cursor sits.") | CUSTOM_DOC("Delete the line the on which the cursor sits.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     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); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     i64 line = get_line_number_from_pos(app, buffer, pos); |     i64 line = get_line_number_from_pos(app, buffer, pos); | ||||||
|     Range_i64 range = get_line_pos_range(app, buffer, line); |     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_COMMAND_SIG(open_file_in_quotes) | ||||||
| CUSTOM_DOC("Reads a filename from surrounding '\"' characters and attempts to open the corresponding file.") | CUSTOM_DOC("Reads a filename from surrounding '\"' characters and attempts to open the corresponding file.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessProtected); |     View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|     if (buffer_exists(app, buffer)){ |     if (buffer_exists(app, buffer)){ | ||||||
|         Scratch_Block scratch(app); |         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)); |         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 != 0){ | ||||||
|             if (view_open_file(app, view, new_file_name, true)){ |             if (view_open_file(app, view, new_file_name, true)){ | ||||||
|                 view_set_active(app, view); |                 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_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.") | 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); |     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); | ||||||
|     Buffer_ID new_buffer = 0; |     Buffer_ID new_buffer = 0; | ||||||
|     if (get_cpp_matching_file(app, buffer, &new_buffer)){ |     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_buffer(app, view, new_buffer, 0); | ||||||
|         view_set_active(app, view); |         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_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.") | 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); |     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); | ||||||
|     i64 pos = view_get_cursor_pos(app, view); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     change_active_panel(app); |     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_buffer(app, view, buffer, 0); | ||||||
|     view_set_cursor_and_preferred_x(app, view, seek_pos(pos)); |     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_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.") | 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); |     change_active_panel(app); | ||||||
|     View_ID view2 = get_active_view(app, AccessProtected); |     View_ID view2 = get_active_view(app, Access_ReadVisible); | ||||||
|      |      | ||||||
|     if (view1 != view2){ |     if (view1 != view2){ | ||||||
|         Buffer_ID buffer1 = view_get_buffer(app, view1, AccessAll); |         Buffer_ID buffer1 = view_get_buffer(app, view1, Access_Always); | ||||||
|         Buffer_ID buffer2 = view_get_buffer(app, view2, AccessAll); |         Buffer_ID buffer2 = view_get_buffer(app, view2, Access_Always); | ||||||
|         if (buffer1 != buffer2){ |         if (buffer1 != buffer2){ | ||||||
|             view_set_buffer(app, view1, buffer2, 0); |             view_set_buffer(app, view1, buffer2, 0); | ||||||
|             view_set_buffer(app, view2, buffer1, 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_COMMAND_SIG(kill_buffer) | ||||||
| CUSTOM_DOC("Kills the current buffer.") | CUSTOM_DOC("Kills the current buffer.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessProtected); |     View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|     try_buffer_kill(app, buffer, view, 0); |     try_buffer_kill(app, buffer, view, 0); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| CUSTOM_COMMAND_SIG(save) | CUSTOM_COMMAND_SIG(save) | ||||||
| CUSTOM_DOC("Saves the current buffer.") | CUSTOM_DOC("Saves the current buffer.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessProtected); |     View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|     Scratch_Block scratch(app); |     Scratch_Block scratch(app); | ||||||
|     String_Const_u8 file_name = push_buffer_file_name(app, scratch, buffer); |     String_Const_u8 file_name = push_buffer_file_name(app, scratch, buffer); | ||||||
|     buffer_save(app, buffer, file_name, 0); |     buffer_save(app, buffer, file_name, 0); | ||||||
|  | @ -1596,8 +1596,8 @@ CUSTOM_DOC("Saves the current buffer.") | ||||||
| CUSTOM_COMMAND_SIG(reopen) | CUSTOM_COMMAND_SIG(reopen) | ||||||
| CUSTOM_DOC("Reopen the current buffer from the hard drive.") | CUSTOM_DOC("Reopen the current buffer from the hard drive.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessProtected); |     View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|     buffer_reopen(app, buffer, 0); |     buffer_reopen(app, buffer, 0); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -1608,7 +1608,7 @@ CUSTOM_COMMAND_SIG(multi_paste){ | ||||||
|      |      | ||||||
|     i32 count = clipboard_count(app, 0); |     i32 count = clipboard_count(app, 0); | ||||||
|     if (count > 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); |         Managed_Scope scope = view_get_managed_scope(app, view); | ||||||
|          |          | ||||||
|         Rewrite_Type *rewrite = scope_attachment(app, scope, view_rewrite_loc, Rewrite_Type); |         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)); |             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); |             Range_i64 range = get_view_range(app, view); | ||||||
|             buffer_replace_range(app, buffer, Ii64(range.max), insert_string); |             buffer_replace_range(app, buffer, Ii64(range.max), insert_string); | ||||||
|             view_set_mark(app, view, seek_pos(range.max + 1)); |             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; |     Range_i64 finish_range = range; | ||||||
|     if (paste_count >= 1){ |     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){ |         if (buffer != 0){ | ||||||
|             i64 total_size = 0; |             i64 total_size = 0; | ||||||
|             for (i32 paste_index = 0; paste_index < paste_count; ++paste_index){ |             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 | function void | ||||||
| multi_paste_interactive_up_down(Application_Links *app, i32 paste_count, i32 clip_count){ | 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); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     b32 old_to_new = true; |     b32 old_to_new = true; | ||||||
|     Range_i64 range = multi_paste_range(app, view, Ii64(pos), paste_count, old_to_new); |     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){ |     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("")); |         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_COMMAND_SIG(undo) | ||||||
| CUSTOM_DOC("Advances backwards through the undo history of the current buffer.") | CUSTOM_DOC("Advances backwards through the undo history of the current buffer.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); |     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 current = buffer_history_get_current_state_index(app, buffer); | ||||||
|     if (current > 0){ |     if (current > 0){ | ||||||
|         i32 new_position = record_get_new_cursor_position_undo(app, buffer, current); |         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_COMMAND_SIG(redo) | ||||||
| CUSTOM_DOC("Advances forwards through the undo history of the current buffer.") | CUSTOM_DOC("Advances forwards through the undo history of the current buffer.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); |     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 current = buffer_history_get_current_state_index(app, buffer); | ||||||
|     History_Record_Index max_index = buffer_history_get_max_record_index(app, buffer); |     History_Record_Index max_index = buffer_history_get_max_record_index(app, buffer); | ||||||
|     if (current < max_index){ |     if (current < max_index){ | ||||||
|  | @ -1859,9 +1859,9 @@ CUSTOM_DOC("Advances backward through the undo history in the buffer containing | ||||||
|     i32 match_count = 0; |     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 != 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); |             History_Record_Index index = buffer_history_get_current_state_index(app, buffer); | ||||||
|             if (index > 0){ |             if (index > 0){ | ||||||
|                 Record_Info record = buffer_history_get_record_info(app, buffer, index); |                 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){ |     if (highest_edit_number != -1){ | ||||||
|         for (Buffer_ID buffer = first_buffer_match; |         for (Buffer_ID buffer = first_buffer_match; | ||||||
|              buffer != 0; |              buffer != 0; | ||||||
|              buffer = get_buffer_next(app, buffer, AccessAll)){ |              buffer = get_buffer_next(app, buffer, Access_Always)){ | ||||||
|             b32 did_match = false; |             b32 did_match = false; | ||||||
|             i32 new_edit_position = 0; |             i32 new_edit_position = 0; | ||||||
|             for (;;){ |             for (;;){ | ||||||
|  | @ -1931,9 +1931,9 @@ CUSTOM_DOC("Advances forward through the undo history in the buffer containing t | ||||||
|     i32 match_count = 0; |     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 != 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 max_index = buffer_history_get_max_record_index(app, buffer); | ||||||
|             History_Record_Index index = buffer_history_get_current_state_index(app, buffer); |             History_Record_Index index = buffer_history_get_current_state_index(app, buffer); | ||||||
|             if (index < max_index){ |             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){ |     if (lowest_edit_number != -1){ | ||||||
|         for (Buffer_ID buffer = first_buffer_match; |         for (Buffer_ID buffer = first_buffer_match; | ||||||
|              buffer != 0; |              buffer != 0; | ||||||
|              buffer = get_buffer_next(app, buffer, AccessAll)){ |              buffer = get_buffer_next(app, buffer, Access_Always)){ | ||||||
|             b32 did_match = false; |             b32 did_match = false; | ||||||
|             i32 new_edit_position = 0; |             i32 new_edit_position = 0; | ||||||
|             History_Record_Index max_index = buffer_history_get_max_record_index(app, buffer); |             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_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*.") | 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); |     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); | ||||||
|     standard_search_and_build(app, view, buffer); |     standard_search_and_build(app, view, buffer); | ||||||
|     block_zero_struct(&prev_location); |     block_zero_struct(&prev_location); | ||||||
|     lock_jump_buffer(app, string_u8_litexpr("*compilation*")); |     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 | static Buffer_ID | ||||||
| get_comp_buffer(Application_Links *app){ | 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 | static View_ID | ||||||
|  | @ -163,8 +163,8 @@ set_fancy_compilation_buffer_font(Application_Links *app){ | ||||||
| CUSTOM_COMMAND_SIG(build_in_build_panel) | 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.") | 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); |     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); | ||||||
|      |      | ||||||
|     View_ID build_view = get_or_open_build_panel(app); |     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); |     String_Const_u8 hot_directory = SCu8(hot_directory_space); | ||||||
|      |      | ||||||
|     if (out_buffer.size > 0 && cmd.size > 0 && hot_directory.size > 0){ |     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); |         Buffer_Identifier id = buffer_identifier(out_buffer); | ||||||
|         exec_system_command(app, view, id, hot_directory, cmd, CLI_OverlapWithConflict|CLI_CursorAtEnd|CLI_SendEndSignal); |         exec_system_command(app, view, id, hot_directory, cmd, CLI_OverlapWithConflict|CLI_CursorAtEnd|CLI_SendEndSignal); | ||||||
|         lock_jump_buffer(app, out_buffer); |         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_COMMAND_SIG(copy) | ||||||
| CUSTOM_DOC("Copy the text in the range from the cursor to the mark onto the clipboard.") | 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); |     View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|     Range_i64 range = get_view_range(app, view); |     Range_i64 range = get_view_range(app, view); | ||||||
|     clipboard_post_buffer_range(app, 0, buffer, range); |     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_COMMAND_SIG(cut) | ||||||
| CUSTOM_DOC("Cut the text in the range from the cursor to the mark onto the clipboard.") | 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); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     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); |     Range_i64 range = get_view_range(app, view); | ||||||
|     if (clipboard_post_buffer_range(app, 0, buffer, range)){ |     if (clipboard_post_buffer_range(app, 0, buffer, range)){ | ||||||
|         buffer_replace_range(app, buffer, range, string_u8_empty); |         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); |     i32 count = clipboard_count(app, 0); | ||||||
|     if (count > 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); |         if_view_has_highlighted_range_delete_range(app, view); | ||||||
|          |          | ||||||
|         Managed_Scope scope = view_get_managed_scope(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); |         String_Const_u8 string = push_clipboard_index(app, scratch, 0, *paste_index); | ||||||
|         if (string.size > 0){ |         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); |             i64 pos = view_get_cursor_pos(app, view); | ||||||
|             buffer_replace_range(app, buffer, Ii64(pos), string); |             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); |     i32 count = clipboard_count(app, 0); | ||||||
|     if (count > 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); |         Managed_Scope scope = view_get_managed_scope(app, view); | ||||||
|         no_mark_snap_to_cursor(app, scope); |         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); |             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); |             Range_i64 range = get_view_range(app, view); | ||||||
|             i64 pos = range.min; |             i64 pos = range.min; | ||||||
|  |  | ||||||
|  | @ -13,8 +13,8 @@ write_string(Application_Links *app, View_ID view, Buffer_ID buffer, String_Cons | ||||||
| 
 | 
 | ||||||
| static void | static void | ||||||
| write_string(Application_Links *app, String_Const_u8 string){ | write_string(Application_Links *app, String_Const_u8 string){ | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||||
|     write_string(app, view, buffer, string); |     write_string(app, view, buffer, string); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -34,8 +34,8 @@ write_named_comment_string(Application_Links *app, char *type_string){ | ||||||
| 
 | 
 | ||||||
| static void | static void | ||||||
| long_braces(Application_Links *app, char *text, i32 size){ | long_braces(Application_Links *app, char *text, i32 size){ | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     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); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     buffer_replace_range(app, buffer, Ii64(pos), SCu8(text, size)); |     buffer_replace_range(app, buffer, Ii64(pos), SCu8(text, size)); | ||||||
|     view_set_cursor_and_preferred_x(app, view, seek_pos(pos + 2)); |     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_COMMAND_SIG(comment_line) | ||||||
| CUSTOM_DOC("Insert '//' at the beginning of the line after leading whitespace.") | CUSTOM_DOC("Insert '//' at the beginning of the line after leading whitespace.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||||
|     i64 pos = get_start_of_line_at_cursor(app, view, buffer); |     i64 pos = get_start_of_line_at_cursor(app, view, buffer); | ||||||
|     b32 alread_has_comment = c_line_comment_starts_at_position(app, buffer, pos); |     b32 alread_has_comment = c_line_comment_starts_at_position(app, buffer, pos); | ||||||
|     if (!alread_has_comment){ |     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_COMMAND_SIG(uncomment_line) | ||||||
| CUSTOM_DOC("If present, delete '//' at the beginning of the line after leading whitespace.") | CUSTOM_DOC("If present, delete '//' at the beginning of the line after leading whitespace.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||||
|     i64 pos = get_start_of_line_at_cursor(app, view, buffer); |     i64 pos = get_start_of_line_at_cursor(app, view, buffer); | ||||||
|     b32 alread_has_comment = c_line_comment_starts_at_position(app, buffer, pos); |     b32 alread_has_comment = c_line_comment_starts_at_position(app, buffer, pos); | ||||||
|     if (alread_has_comment){ |     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_COMMAND_SIG(comment_line_toggle) | ||||||
| CUSTOM_DOC("Turns uncommented lines into commented lines and vice versa for comments starting with '//'.") | CUSTOM_DOC("Turns uncommented lines into commented lines and vice versa for comments starting with '//'.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||||
|     i64 pos = get_start_of_line_at_cursor(app, view, buffer); |     i64 pos = get_start_of_line_at_cursor(app, view, buffer); | ||||||
|     b32 alread_has_comment = c_line_comment_starts_at_position(app, buffer, pos); |     b32 alread_has_comment = c_line_comment_starts_at_position(app, buffer, pos); | ||||||
|     if (alread_has_comment){ |     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){ |     if (0 <= index && index < snippets.count){ | ||||||
|         Snippet snippet = snippets.snippets[index]; |         Snippet snippet = snippets.snippets[index]; | ||||||
|         lister_default(app, view, lister, ListerActivation_Finished); |         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); |         i64 pos = view_get_cursor_pos(app, view); | ||||||
|         buffer_replace_range(app, buffer, Ii64(pos), SCu8(snippet.text)); |         buffer_replace_range(app, buffer, Ii64(pos), SCu8(snippet.text)); | ||||||
|         view_set_cursor_and_preferred_x(app, view, seek_pos(pos + snippet.cursor_offset)); |         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 | static void | ||||||
| snippet_lister__parameterized(Application_Links *app, Snippet_Array snippet_array){ | 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); |     Scratch_Block scratch(app, Scratch_Share); | ||||||
|     i32 option_count = snippet_array.count; |     i32 option_count = snippet_array.count; | ||||||
|     Lister_Option *options = push_array(scratch, Lister_Option, option_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){ | get_locked_jump_buffer(Application_Links *app){ | ||||||
|     Buffer_ID result = 0; |     Buffer_ID result = 0; | ||||||
|     if (locked_buffer.size > 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){ |     if (result == 0){ | ||||||
|         unlock_jump_buffer(); |         unlock_jump_buffer(); | ||||||
|  | @ -88,7 +88,7 @@ static View_ID | ||||||
| open_footer_panel(Application_Links *app, View_ID view){ | open_footer_panel(Application_Links *app, View_ID view){ | ||||||
|     View_ID special_view = open_view(app, view, ViewSplit_Bottom); |     View_ID special_view = open_view(app, view, ViewSplit_Bottom); | ||||||
|     new_view_settings(app, special_view); |     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_ID face_id = get_face_id(app, buffer); | ||||||
|     Face_Metrics metrics = get_face_metrics(app, face_id); |     Face_Metrics metrics = get_face_metrics(app, face_id); | ||||||
|     view_set_split_pixel_size(app, special_view, (i32)(metrics.line_height*20.f)); |     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 | static View_ID | ||||||
| open_build_footer_panel(Application_Links *app){ | open_build_footer_panel(Application_Links *app){ | ||||||
|     if (build_footer_panel_view_id == 0){ |     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); |         build_footer_panel_view_id = open_footer_panel(app, view); | ||||||
|         view_set_active(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 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; |         View_ID first_view_id = active_view_id; | ||||||
|         if (view_get_is_passive(app, 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; |         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; |         primary_view_last->view_id = view_id; | ||||||
|         available_view_count += 1; |         available_view_count += 1; | ||||||
|         for (;;){ |         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){ |             if (view_id == first_view_id){ | ||||||
|                 break; |                 break; | ||||||
|             } |             } | ||||||
|  | @ -203,8 +203,8 @@ view_buffer_set(Application_Links *app, Buffer_ID *buffers, i32 *positions, i32 | ||||||
| CUSTOM_COMMAND_SIG(change_active_panel) | CUSTOM_COMMAND_SIG(change_active_panel) | ||||||
| CUSTOM_DOC("Change the currently active panel, moving to the panel with the next highest view_id.") | 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_ID view = get_active_view(app, Access_Always); | ||||||
|     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 != 0){ | ||||||
|         view_set_active(app, view); |         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_COMMAND_SIG(change_active_panel_backwards) | ||||||
| CUSTOM_DOC("Change the currently active panel, moving to the panel with the next lowest view_id.") | 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_ID view = get_active_view(app, Access_Always); | ||||||
|     view = get_prev_view_looped_primary_panels(app, view, AccessAll); |     view = get_prev_view_looped_primary_panels(app, view, Access_Always); | ||||||
|     if (view != 0){ |     if (view != 0){ | ||||||
|         view_set_active(app, view); |         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_COMMAND_SIG(open_panel_vsplit) | ||||||
| CUSTOM_DOC("Create a new panel by vertically splitting the active panel.") | 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); |     View_ID new_view = open_view(app, view, ViewSplit_Right); | ||||||
|     new_view_settings(app, new_view); |     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); |     view_set_buffer(app, new_view, buffer, 0); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| CUSTOM_COMMAND_SIG(open_panel_hsplit) | CUSTOM_COMMAND_SIG(open_panel_hsplit) | ||||||
| CUSTOM_DOC("Create a new panel by horizontally splitting the active panel.") | 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); |     View_ID new_view = open_view(app, view, ViewSplit_Bottom); | ||||||
|     new_view_settings(app, new_view); |     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); |     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 | 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){ | 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){ |     if (search_buffer != 0){ | ||||||
|         buffer_set_setting(app, search_buffer, BufferSetting_ReadOnly, true); |         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); |     Buffer_ID right_id = buffer_identifier_to_id(app, right); | ||||||
|      |      | ||||||
|     // Left Panel
 |     // Left Panel
 | ||||||
|     View_ID view = get_active_view(app, AccessAll); |     View_ID view = get_active_view(app, Access_Always); | ||||||
|     new_view_settings(app, view); |     new_view_settings(app, view); | ||||||
|     view_set_buffer(app, view, left_id, 0); |     view_set_buffer(app, view, left_id, 0); | ||||||
|      |      | ||||||
|     // Right Panel
 |     // Right Panel
 | ||||||
|     open_panel_vsplit(app); |     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); |     view_set_buffer(app, right_view, right_id, 0); | ||||||
|      |      | ||||||
|     // Restore Active to Left
 |     // Restore Active to Left
 | ||||||
|  | @ -476,7 +476,7 @@ default_4coder_side_by_side_panels(Application_Links *app){ | ||||||
| static void | static void | ||||||
| default_4coder_one_panel(Application_Links *app, Buffer_Identifier buffer){ | default_4coder_one_panel(Application_Links *app, Buffer_Identifier buffer){ | ||||||
|     Buffer_ID id = buffer_identifier_to_id(app, 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); |     new_view_settings(app, view); | ||||||
|     view_set_buffer(app, view, id, 0); |     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; |         b32 do_exit = true; | ||||||
|         if (!allow_immediate_close_without_checking_for_changes){ |         if (!allow_immediate_close_without_checking_for_changes){ | ||||||
|             b32 has_unsaved_changes = false; |             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 != 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); |                 Dirty_State dirty = buffer_get_dirty_state(app, buffer); | ||||||
|                 if (HasFlag(dirty, DirtyState_UnsavedChanges)){ |                 if (HasFlag(dirty, DirtyState_UnsavedChanges)){ | ||||||
|                     has_unsaved_changes = true; |                     has_unsaved_changes = true; | ||||||
|  | @ -36,7 +36,7 @@ CUSTOM_DOC("Default command for responding to a try-exit event") | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|             if (has_unsaved_changes){ |             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); |                 do_exit = do_gui_sure_to_close_4coder(app, view); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  | @ -69,9 +69,9 @@ CUSTOM_DOC("Input consumption loop for default view behavior") | ||||||
|             continue; |             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); |         Managed_Scope buffer_scope = buffer_get_managed_scope(app, buffer); | ||||||
|         Command_Map_ID *map_id_ptr = |         Command_Map_ID *map_id_ptr = | ||||||
|             scope_attachment(app, buffer_scope, buffer_map_id, Command_Map_ID); |             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); |             Rewrite_Type *next_rewrite = scope_attachment(app, scope, view_next_rewrite_loc, Rewrite_Type); | ||||||
|             *next_rewrite = Rewrite_None; |             *next_rewrite = Rewrite_None; | ||||||
|             if (fcoder_mode == FCoderMode_NotepadLike){ |             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 != 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); |                     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); |                     b32 *snap_mark_to_cursor = scope_attachment(app, scope_it, view_snap_mark_to_cursor, b32); | ||||||
|                     *snap_mark_to_cursor = true; |                     *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_Type *rewrite = scope_attachment(app, scope, view_rewrite_loc, Rewrite_Type); | ||||||
|                 *rewrite = *next_rewrite; |                 *rewrite = *next_rewrite; | ||||||
|                 if (fcoder_mode == FCoderMode_NotepadLike){ |                 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 != 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); |                         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); |                         b32 *snap_mark_to_cursor = scope_attachment(app, scope_it, view_snap_mark_to_cursor, b32); | ||||||
|                         if (*snap_mark_to_cursor){ |                         if (*snap_mark_to_cursor){ | ||||||
|  | @ -193,7 +193,7 @@ MODIFY_COLOR_TABLE_SIG(default_modify_color_table){ | ||||||
| 
 | 
 | ||||||
| function Rect_f32 | function Rect_f32 | ||||||
| default_buffer_region(Application_Links *app, View_ID view_id, Rect_f32 region){ | 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_ID face_id = get_face_id(app, buffer); | ||||||
|     Face_Metrics metrics = get_face_metrics(app, face_id); |     Face_Metrics metrics = get_face_metrics(app, face_id); | ||||||
|     f32 line_height = metrics.line_height; |     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){ |     if (global_config.use_error_highlight || global_config.use_jump_highlight){ | ||||||
|         // NOTE(allen): Error highlight
 |         // NOTE(allen): Error highlight
 | ||||||
|         String_Const_u8 name = string_u8_litexpr("*compilation*"); |         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){ |         if (global_config.use_error_highlight){ | ||||||
|             draw_jump_highlights(app, buffer, text_layout_id, compilation_buffer, Stag_Highlight_Junk); |             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 | function void | ||||||
| default_render_caller(Application_Links *app, Frame_Info frame_info, View_ID view_id){ | 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); |     b32 is_active_view = (active_view == view_id); | ||||||
|      |      | ||||||
|     Rect_f32 region = draw_background_and_margin(app, view_id, is_active_view); |     Rect_f32 region = draw_background_and_margin(app, view_id, is_active_view); | ||||||
|     Rect_f32 prev_clip = draw_set_clip(app, region); |     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_ID face_id = get_face_id(app, buffer); | ||||||
|     Face_Metrics face_metrics = get_face_metrics(app, face_id); |     Face_Metrics face_metrics = get_face_metrics(app, face_id); | ||||||
|     f32 line_height = face_metrics.line_height; |     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 | function Rect_f32 | ||||||
| draw_background_and_margin(Application_Links *app, View_ID view){ | 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); |     b32 is_active_view = (active_view == view); | ||||||
|     return(draw_background_and_margin(app, view, is_active_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_COMMAND_SIG(set_eol_mode_to_crlf) | ||||||
| CUSTOM_DOC("Puts the buffer in crlf line ending mode.") | CUSTOM_DOC("Puts the buffer in crlf line ending mode.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||||
|     Managed_Scope scope = buffer_get_managed_scope(app, buffer); |     Managed_Scope scope = buffer_get_managed_scope(app, buffer); | ||||||
|     Line_Ending_Kind *eol_setting = scope_attachment(app, scope, buffer_eol_setting, |     Line_Ending_Kind *eol_setting = scope_attachment(app, scope, buffer_eol_setting, | ||||||
|                                                      Line_Ending_Kind); |                                                      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_COMMAND_SIG(set_eol_mode_to_lf) | ||||||
| CUSTOM_DOC("Puts the buffer in lf line ending mode.") | CUSTOM_DOC("Puts the buffer in lf line ending mode.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||||
|     Managed_Scope scope = buffer_get_managed_scope(app, buffer); |     Managed_Scope scope = buffer_get_managed_scope(app, buffer); | ||||||
|     Line_Ending_Kind *eol_setting = scope_attachment(app, scope, buffer_eol_setting, |     Line_Ending_Kind *eol_setting = scope_attachment(app, scope, buffer_eol_setting, | ||||||
|                                                      Line_Ending_Kind); |                                                      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_COMMAND_SIG(set_eol_mode_to_binary) | ||||||
| CUSTOM_DOC("Puts the buffer in bin line ending mode.") | CUSTOM_DOC("Puts the buffer in bin line ending mode.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||||
|     Managed_Scope scope = buffer_get_managed_scope(app, buffer); |     Managed_Scope scope = buffer_get_managed_scope(app, buffer); | ||||||
|     Line_Ending_Kind *eol_setting = scope_attachment(app, scope, buffer_eol_setting, |     Line_Ending_Kind *eol_setting = scope_attachment(app, scope, buffer_eol_setting, | ||||||
|                                                      Line_Ending_Kind); |                                                      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_COMMAND_SIG(set_eol_mode_from_contents) | ||||||
| CUSTOM_DOC("Sets the buffer's line ending mode to match the contents of the buffer.") | CUSTOM_DOC("Sets the buffer's line ending mode to match the contents of the buffer.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||||
|     Line_Ending_Kind setting = guess_line_ending_kind_from_buffer_contents(app, buffer); |     Line_Ending_Kind setting = guess_line_ending_kind_from_buffer_contents(app, buffer); | ||||||
|     Managed_Scope scope = buffer_get_managed_scope(app, buffer); |     Managed_Scope scope = buffer_get_managed_scope(app, buffer); | ||||||
|     Line_Ending_Kind *eol_setting = scope_attachment(app, scope, buffer_eol_setting, |     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){ | list_all_functions(Application_Links *app, Buffer_ID optional_target_buffer){ | ||||||
|     // TODO(allen): Use create or switch to buffer and clear here?
 |     // TODO(allen): Use create or switch to buffer and clear here?
 | ||||||
|     String_Const_u8 decls_name = string_u8_litexpr("*decls*"); |     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)){ |     if (!buffer_exists(app, decls_buffer)){ | ||||||
|         decls_buffer = create_buffer(app, decls_name, BufferCreate_AlwaysNew); |         decls_buffer = create_buffer(app, decls_name, BufferCreate_AlwaysNew); | ||||||
|         buffer_set_setting(app, decls_buffer, BufferSetting_Unimportant, true); |         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)); |     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); |     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 != 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; |         Buffer_ID buffer = buffer_it; | ||||||
|         if (optional_target_buffer != 0){ |         if (optional_target_buffer != 0){ | ||||||
|             buffer = optional_target_buffer; |             buffer = optional_target_buffer; | ||||||
|  | @ -258,7 +258,7 @@ list_all_functions(Application_Links *app, Buffer_ID optional_target_buffer){ | ||||||
|      |      | ||||||
|     end_buffer_insertion(&out); |     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); |     view_set_buffer(app, view, decls_buffer, 0); | ||||||
|      |      | ||||||
|     lock_jump_buffer(app, decls_name); |     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_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.") | 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); |     View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|     if (buffer != 0){ |     if (buffer != 0){ | ||||||
|         list_all_functions(app, buffer); |         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_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.") | 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); |     View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|     if (buffer != 0){ |     if (buffer != 0){ | ||||||
|         list_all_functions(app, buffer); |         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); |         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.") | CUSTOM_DOC("Creates a lister of locations that look like function definitions and declarations all buffers.") | ||||||
| { | { | ||||||
|     list_all_functions(app, 0); |     list_all_functions(app, 0); | ||||||
|     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); | ||||||
|     open_jump_lister(app, &global_heap, view, buffer, JumpListerActivation_OpenInUIView, 0); |     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 | internal i64 | ||||||
| view_pos_from_xy(Application_Links *app, View_ID view, Vec2_f32 p){ | 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); |     Rect_f32 region = view_get_buffer_region(app, view); | ||||||
|     f32 width = rect_width(region); |     f32 width = rect_width(region); | ||||||
|     Face_ID face_id = get_face_id(app, buffer); |     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 | internal String_Const_u8 | ||||||
| push_view_range_string(Application_Links *app, Arena *arena, View_ID view){ | 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))); |     return(push_buffer_range(app, arena, buffer, get_view_range(app, view))); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| internal String_Const_u8 | internal String_Const_u8 | ||||||
| push_view_range_string(Application_Links *app, Arena *arena){ | 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)); |     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 | internal void | ||||||
| move_past_lead_whitespace(Application_Links *app, View_ID view){ | 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); |     move_past_lead_whitespace(app, view, buffer); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -1250,9 +1250,9 @@ clear_buffer(Application_Links *app, Buffer_ID buffer){ | ||||||
| internal String_Match_List | 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){ | 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 = {}; |     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 != 0; | ||||||
|          buffer = get_buffer_next(app, buffer, AccessAll)){ |          buffer = get_buffer_next(app, buffer, Access_Always)){ | ||||||
|         String_Match_List buffer_matches = {}; |         String_Match_List buffer_matches = {}; | ||||||
|         for (i32 i = 0; i < match_patterns.count; i += 1){ |         for (i32 i = 0; i < match_patterns.count; i += 1){ | ||||||
|             Range_i64 range = buffer_range(app, buffer); |             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){ | Query_Bar_Group::Query_Bar_Group(Application_Links *app){ | ||||||
|     this->app = 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){ | 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{ |     else{ | ||||||
|         String_Const_u8 name = SCu8(identifier.name, identifier.name_len); |         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){ |         if (id == 0){ | ||||||
|             id = get_buffer_by_file_name(app, name, AccessAll); |             id = get_buffer_by_file_name(app, name, Access_Always); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     return(id); |     return(id); | ||||||
|  | @ -1470,7 +1470,7 @@ buffer_identifier_to_id_create_out_buffer(Application_Links *app, Buffer_Identif | ||||||
|     Buffer_ID result = 0; |     Buffer_ID result = 0; | ||||||
|     if (buffer_id.name != 0 && buffer_id.name_len > 0){ |     if (buffer_id.name != 0 && buffer_id.name_len > 0){ | ||||||
|         String_Const_u8 buffer_name = SCu8(buffer_id.name, buffer_id.name_len); |         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){ |         if (buffer_attach_id != 0){ | ||||||
|             result = buffer_attach_id; |             result = buffer_attach_id; | ||||||
|         } |         } | ||||||
|  | @ -1493,8 +1493,8 @@ buffer_identifier_to_id_create_out_buffer(Application_Links *app, Buffer_Identif | ||||||
| 
 | 
 | ||||||
| function void | function void | ||||||
| place_begin_and_end_on_own_lines(Application_Links *app, char *begin, char *end){ | place_begin_and_end_on_own_lines(Application_Links *app, char *begin, char *end){ | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     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); |     Range_i64 range = get_view_range(app, view); | ||||||
|     Range_i64 lines = get_line_range_from_pos_range(app, buffer, range); |     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 | internal View_ID | ||||||
| open_view(Application_Links *app, View_ID view_location, View_Split_Position position){ | open_view(Application_Links *app, View_ID view_location, View_Split_Position position){ | ||||||
|     View_ID result = 0; |     View_ID result = 0; | ||||||
|     if (view_location != 0 && view_exists(app, view_location)){ |     if (view_location != 0 && view_exists(app, view_location)){ | ||||||
|         Panel_ID panel_id = view_get_panel(app, view_location); |         Panel_ID panel_id = view_get_panel(app, view_location); | ||||||
|         if (panel_id != 0){ |         if (panel_id != 0){ | ||||||
|             b32 vertical = (position == ViewSplit_Left || position == ViewSplit_Right); |             Dimension split = (position == ViewSplit_Left || | ||||||
|             if (panel_split(app, panel_id, vertical?PanelSplit_LeftAndRight:PanelSplit_TopAndBottom)){ |                                position == ViewSplit_Right)?Dimension_X:Dimension_Y; | ||||||
|                 Panel_Child child = (position == ViewSplit_Left || position == ViewSplit_Top)?PanelChild_Min:PanelChild_Max; |             Side side = (position == ViewSplit_Left || | ||||||
|                 Panel_ID new_panel_id = panel_get_child(app, panel_id, child); |                          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){ |                 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){ |                     if (new_view_id != 0){ | ||||||
|                         result = new_view_id; |                         result = new_view_id; | ||||||
|                     } |                     } | ||||||
|  | @ -1574,10 +1595,10 @@ internal View_ID | ||||||
| get_first_view_with_buffer(Application_Links *app, Buffer_ID buffer_id){ | get_first_view_with_buffer(Application_Links *app, Buffer_ID buffer_id){ | ||||||
|     View_ID result = {}; |     View_ID result = {}; | ||||||
|     if (buffer_id != 0){ |     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 != 0; | ||||||
|              test = get_view_next(app, test, AccessAll)){ |              test = get_view_next(app, test, Access_Always)){ | ||||||
|             Buffer_ID test_buffer = view_get_buffer(app, test, AccessAll); |             Buffer_ID test_buffer = view_get_buffer(app, test, Access_Always); | ||||||
|             if (test_buffer == buffer_id){ |             if (test_buffer == buffer_id){ | ||||||
|                 result = test; |                 result = test; | ||||||
|                 break; |                 break; | ||||||
|  | @ -1590,7 +1611,7 @@ get_first_view_with_buffer(Application_Links *app, Buffer_ID buffer_id){ | ||||||
| internal b32 | internal b32 | ||||||
| open_file(Application_Links *app, Buffer_ID *buffer_out, String_Const_u8 file_name, b32 background, b32 never_new){ | open_file(Application_Links *app, Buffer_ID *buffer_out, String_Const_u8 file_name, b32 background, b32 never_new){ | ||||||
|     b32 result = false; |     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); |     b32 exists = buffer_exists(app, buffer); | ||||||
|     if (!exists){ |     if (!exists){ | ||||||
|         Buffer_Create_Flag flags = 0; |         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_set_highlight_range(Application_Links *app, View_ID view, Range_i64 range){ | ||||||
|     view_disable_highlight_range(app, view); |     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_Scope scope = view_get_managed_scope(app, view); | ||||||
|     Managed_Object *highlight = scope_attachment(app, scope, view_highlight_range, Managed_Object); |     Managed_Object *highlight = scope_attachment(app, scope, view_highlight_range, Managed_Object); | ||||||
|     *highlight = alloc_buffer_markers_on_buffer(app, buffer, 2, &scope); |     *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; |             f32 skirt_height = view_height*.1f; | ||||||
|             Interval_f32 acceptable_y = If32(skirt_height, view_height*.9f); |             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; |                 i64 major_line = bottom.line; | ||||||
|                 if (range.min == major_pos){ |                 if (range.min == major_pos){ | ||||||
|                     major_line = top.line; |                     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){ |                 if (top_p.y < acceptable_y.min){ | ||||||
|                     scroll.target.line_number = top.line; |                     scroll.target.line_number = top.line; | ||||||
|                     scroll.target.pixel_shift.y = -skirt_height; |                     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{ |                 else{ | ||||||
|                     Vec2_f32 bot_p = view_relative_xy_of_pos(app, view, scroll.position.line_number, range.max); |                     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){ |                     if (bot_p.y > acceptable_y.max){ | ||||||
|                         scroll.target.line_number = bottom.line; |                         scroll.target.line_number = bottom.line; | ||||||
|                         scroll.target.pixel_shift.y = skirt_height - view_height; |                         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 | 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 | internal String_Const_u8 | ||||||
| push_token_or_word_under_active_cursor(Application_Links *app, Arena *arena){ | push_token_or_word_under_active_cursor(Application_Links *app, Arena *arena){ | ||||||
|     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); | ||||||
|     i64 pos = view_get_cursor_pos(app, view); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     return(push_token_or_word_under_pos(app, arena, buffer, pos)); |     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; |     b32 result = false; | ||||||
|     if (view_has_highlighted_range(app, view_id)){ |     if (view_has_highlighted_range(app, view_id)){ | ||||||
|         Range_i64 range = get_view_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("")); |         buffer_replace_range(app, buffer, range, string_u8_litexpr("")); | ||||||
|         result = true; |         result = true; | ||||||
|     } |     } | ||||||
|  | @ -1999,9 +2026,9 @@ if_view_has_highlighted_range_delete_range(Application_Links *app, View_ID view_ | ||||||
| internal void | internal void | ||||||
| begin_notepad_mode(Application_Links *app){ | begin_notepad_mode(Application_Links *app){ | ||||||
|     fcoder_mode = FCoderMode_NotepadLike; |     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 != 0; | ||||||
|          view = get_view_next(app, view, AccessAll)){ |          view = get_view_next(app, view, Access_Always)){ | ||||||
|         i64 pos = view_get_cursor_pos(app, view); |         i64 pos = view_get_cursor_pos(app, view); | ||||||
|         view_set_mark(app, view, seek_pos(pos)); |         view_set_mark(app, view, seek_pos(pos)); | ||||||
|     } |     } | ||||||
|  | @ -2011,8 +2038,8 @@ begin_notepad_mode(Application_Links *app){ | ||||||
| 
 | 
 | ||||||
| internal void | internal void | ||||||
| seek_pos_of_textual_line(Application_Links *app, Side side){ | seek_pos_of_textual_line(Application_Links *app, Side side){ | ||||||
|     View_ID view = get_active_view(app, AccessProtected); |     View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|     i64 pos = view_get_cursor_pos(app, view); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     i64 new_pos = get_line_side_pos_from_pos(app, buffer, pos, side); |     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)); |     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 | internal void | ||||||
| seek_pos_of_visual_line(Application_Links *app, Side side){ | 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); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     Buffer_Cursor cursor = view_compute_cursor(app, view, seek_pos(pos)); |     Buffer_Cursor cursor = view_compute_cursor(app, view, seek_pos(pos)); | ||||||
|     Vec2_f32 p = view_relative_xy_of_pos(app, view, cursor.line, 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_COMMAND_SIG(goto_beginning_of_file) | ||||||
| CUSTOM_DOC("Sets the cursor to the beginning of the 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)); |     view_set_cursor_and_preferred_x(app, view, seek_pos(0)); | ||||||
|     no_mark_snap_to_cursor_if_shift(app, view); |     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_COMMAND_SIG(goto_end_of_file) | ||||||
| CUSTOM_DOC("Sets the cursor to the end of the file.") | CUSTOM_DOC("Sets the cursor to the end of the file.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessProtected); |     View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|     Buffer_ID buffer_id = view_get_buffer(app, view, AccessProtected); |     Buffer_ID buffer_id = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|     i32 size = (i32)buffer_get_size(app, buffer_id); |     i32 size = (i32)buffer_get_size(app, buffer_id); | ||||||
|     view_set_cursor_and_preferred_x(app, view, seek_pos(size)); |     view_set_cursor_and_preferred_x(app, view, seek_pos(size)); | ||||||
|     no_mark_snap_to_cursor_if_shift(app, view); |     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){ |         if (panel_id != 0){ | ||||||
|             Panel_ID parent_panel_id = panel_get_parent(app, panel_id); |             Panel_ID parent_panel_id = panel_get_parent(app, panel_id); | ||||||
|             if (parent_panel_id != 0){ |             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){ |                 if (min_child_id != 0){ | ||||||
|                     b32 panel_is_min = (min_child_id == panel_id); |                     b32 panel_is_min = (min_child_id == panel_id); | ||||||
|                     Panel_Split_Kind panel_kind = ((kind == ViewSplitKind_Ratio)? |                     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 | static Buffer_Insertion | ||||||
| begin_buffer_insertion(Application_Links *app){ | begin_buffer_insertion(Application_Links *app){ | ||||||
|     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); | ||||||
|     i64 cursor_pos = view_get_cursor_pos(app, view); |     i64 cursor_pos = view_get_cursor_pos(app, view); | ||||||
|     Buffer_Insertion result = begin_buffer_insertion_at(app, buffer, cursor_pos); |     Buffer_Insertion result = begin_buffer_insertion_at(app, buffer, cursor_pos); | ||||||
|     return(result); |     return(result); | ||||||
|  |  | ||||||
|  | @ -36,14 +36,16 @@ activate_jump(Application_Links *app, | ||||||
|             case JumpListerActivation_OpenInNextViewKeepUI: |             case JumpListerActivation_OpenInNextViewKeepUI: | ||||||
|             { |             { | ||||||
|                 target_view = view; |                 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; |                 result_code = ListerActivation_Continue; | ||||||
|             }break; |             }break; | ||||||
|              |              | ||||||
|             case JumpListerActivation_OpenInNextViewCloseUI: |             case JumpListerActivation_OpenInNextViewCloseUI: | ||||||
|             { |             { | ||||||
|                 target_view = view; |                 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; |                 result_code = ListerActivation_Finished; | ||||||
|             }break; |             }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_COMMAND_SIG(view_jump_list_with_lister) | ||||||
| CUSTOM_DOC("When executed on a buffer with jumps, creates a persistent lister for all the jumps") | 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); |     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); | ||||||
|     open_jump_lister(app, &global_heap, view, buffer, JumpListerActivation_OpenInNextViewKeepUI, 0); |     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; |     Heap *heap = &global_heap; | ||||||
|      |      | ||||||
|     View_ID view = get_active_view(app, AccessProtected); |     View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|     Marker_List *list = get_or_make_list_for_buffer(app, heap, buffer); |     Marker_List *list = get_or_make_list_for_buffer(app, heap, buffer); | ||||||
|      |      | ||||||
|     i64 pos = view_get_cursor_pos(app, view); |     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_from_list(app, list, list_index, &location)){ | ||||||
|             if (get_jump_buffer(app, &buffer, &location)){ |             if (get_jump_buffer(app, &buffer, &location)){ | ||||||
|                 change_active_panel(app); |                 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); |                 switch_to_existing_view(app, target_view, buffer); | ||||||
|                 jump_to_location(app, target_view, buffer, location); |                 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; |     Heap *heap = &global_heap; | ||||||
|      |      | ||||||
|     View_ID view = get_active_view(app, AccessProtected); |     View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|      |      | ||||||
|     Marker_List *list = get_or_make_list_for_buffer(app, heap, buffer); |     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){ | goto_jump_in_order(Application_Links *app, Marker_List *list, View_ID jump_view, ID_Pos_Jump_Location location){ | ||||||
|     Buffer_ID buffer = {}; |     Buffer_ID buffer = {}; | ||||||
|     if (get_jump_buffer(app, &buffer, &location)){ |     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){ |         if (target_view == jump_view){ | ||||||
|             change_active_panel(app); |             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); |         switch_to_existing_view(app, target_view, buffer); | ||||||
|         jump_to_location(app, target_view, buffer, location); |         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 = {}; |     Locked_Jump_State result = {}; | ||||||
|     result.view = get_view_for_locked_jump_buffer(app); |     result.view = get_view_for_locked_jump_buffer(app); | ||||||
|     if (result.view != 0){ |     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); |         result.list = get_or_make_list_for_buffer(app, heap, buffer); | ||||||
|          |          | ||||||
|         i64 cursor_position = view_get_cursor_pos(app, result.view); |         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_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.") | 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); |     View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||||
|     if (buffer == 0){ |     if (buffer == 0){ | ||||||
|         buffer = view_get_buffer(app, view, AccessProtected); |         buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|         if (buffer != 0){ |         if (buffer != 0){ | ||||||
|             goto_jump_at_cursor(app); |             goto_jump_at_cursor(app); | ||||||
|             lock_jump_buffer(app, buffer); |             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_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.") | 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); |     View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||||
|     if (buffer == 0){ |     if (buffer == 0){ | ||||||
|         buffer = view_get_buffer(app, view, AccessProtected); |         buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|         if (buffer != 0){ |         if (buffer != 0){ | ||||||
|             goto_jump_at_cursor_same_panel(app); |             goto_jump_at_cursor_same_panel(app); | ||||||
|             lock_jump_buffer(app, buffer); |             lock_jump_buffer(app, buffer); | ||||||
|  |  | ||||||
|  | @ -219,12 +219,12 @@ get_jump_buffer(Application_Links *app, Buffer_ID *buffer, ID_Pos_Jump_Location | ||||||
| 
 | 
 | ||||||
| static b32 | static b32 | ||||||
| get_jump_buffer(Application_Links *app, Buffer_ID *buffer, ID_Pos_Jump_Location *location){ | 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 | static View_ID | ||||||
| switch_to_existing_view(Application_Links *app, View_ID view, Buffer_ID buffer){ | 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){ |     if (view != 0 || current_buffer != buffer){ | ||||||
|         View_ID existing_view = get_first_view_with_buffer(app, buffer); |         View_ID existing_view = get_first_view_with_buffer(app, buffer); | ||||||
|         if (existing_view != 0){ |         if (existing_view != 0){ | ||||||
|  | @ -236,7 +236,7 @@ switch_to_existing_view(Application_Links *app, View_ID view, Buffer_ID buffer){ | ||||||
| 
 | 
 | ||||||
| static void | static void | ||||||
| set_view_to_location(Application_Links *app, View_ID view, Buffer_ID buffer, Buffer_Seek seek){ | 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){ |     if (current_buffer != buffer){ | ||||||
|         view_set_buffer(app, view, buffer, 0); |         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 | static ID_Line_Column_Jump_Location | ||||||
| convert_name_based_to_id_based(Application_Links *app, Name_Line_Column_Location loc){ | convert_name_based_to_id_based(Application_Links *app, Name_Line_Column_Location loc){ | ||||||
|     ID_Line_Column_Jump_Location result = {}; |     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){ |     if (buffer != 0){ | ||||||
|         result.buffer_id = buffer; |         result.buffer_id = buffer; | ||||||
|         result.line = loc.line; |         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); |     i64 cursor_position = view_get_cursor_pos(app, view); | ||||||
|     Buffer_Cursor cursor = view_compute_cursor(app, view, seek_pos(cursor_position)); |     Buffer_Cursor cursor = view_compute_cursor(app, view, seek_pos(cursor_position)); | ||||||
|     i64 line = cursor.line; |     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); |     Parsed_Jump jump = seek_next_jump_in_buffer(app, arena, buffer, line + direction, skip_sub_errors, direction, &line); | ||||||
|     if (jump.success){ |     if (jump.success){ | ||||||
|         *line_out = line; |         *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)){ |         if (advance_cursor_in_jump_view(app, view, skip_repeats, skip_sub_errors, direction, &location)){ | ||||||
|             Buffer_ID buffer = {}; |             Buffer_ID buffer = {}; | ||||||
|             if (get_jump_buffer(app, &buffer, &location)){ |             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){ |                 if (target_view == view){ | ||||||
|                     change_active_panel(app); |                     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); |                 switch_to_existing_view(app, target_view, buffer); | ||||||
|                 jump_to_location(app, target_view, buffer, location); |                 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 && |         showing_file_bar && | ||||||
|         !global_config.hide_file_bar_in_ui){ |         !global_config.hide_file_bar_in_ui){ | ||||||
|         Rect_f32_Pair pair = layout_file_bar_on_top(region, line_height); |         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); |         draw_file_bar(app, view, buffer, face_id, pair.min); | ||||||
|         region = pair.max; |         region = pair.max; | ||||||
|     } |     } | ||||||
|  | @ -725,7 +725,7 @@ lister_add_item(Lister *lister, String_Const_u8 string, String_Const_u8 status, | ||||||
| 
 | 
 | ||||||
| function void | function void | ||||||
| lister__write_string__default(Application_Links *app){ | 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); |     Lister *lister = view_get_lister(view); | ||||||
|     if (lister != 0){ |     if (lister != 0){ | ||||||
|         User_Input in = get_current_input(app); |         User_Input in = get_current_input(app); | ||||||
|  | @ -742,7 +742,7 @@ lister__write_string__default(Application_Links *app){ | ||||||
| 
 | 
 | ||||||
| function void | function void | ||||||
| lister__backspace_text_field__default(Application_Links *app){ | 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); |     Lister *lister = view_get_lister(view); | ||||||
|     if (lister != 0){ |     if (lister != 0){ | ||||||
|         lister->text_field.string = backspace_utf8(lister->text_field.string); |         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 | function void | ||||||
| lister__write_character__file_path(Application_Links *app){ | 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); |     Lister *lister = view_get_lister(view); | ||||||
|     if (lister != 0){ |     if (lister != 0){ | ||||||
|         User_Input in = get_current_input(app); |         User_Input in = get_current_input(app); | ||||||
|  | @ -30,7 +30,7 @@ lister__write_character__file_path(Application_Links *app){ | ||||||
| 
 | 
 | ||||||
| function void | function void | ||||||
| lister__backspace_text_field__file_path(Application_Links *app){ | 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); |     Lister *lister = view_get_lister(view); | ||||||
|     if (lister != 0){ |     if (lister != 0){ | ||||||
|         if (lister->text_field.size > 0){ |         if (lister->text_field.size > 0){ | ||||||
|  | @ -68,7 +68,7 @@ lister__backspace_text_field__file_path(Application_Links *app){ | ||||||
| function Lister_Activation_Code | function Lister_Activation_Code | ||||||
| lister__key_stroke__fixed_list(Application_Links *app){ | lister__key_stroke__fixed_list(Application_Links *app){ | ||||||
|     Lister_Activation_Code result = ListerActivation_Continue; |     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); |     Lister *lister = view_get_lister(view); | ||||||
|     if (lister != 0){ |     if (lister != 0){ | ||||||
|         User_Input in = get_current_input(app); |         User_Input in = get_current_input(app); | ||||||
|  | @ -223,10 +223,10 @@ generate_all_buffers_list(Application_Links *app, Lister *lister){ | ||||||
|      |      | ||||||
|     // List currently viewed buffers
 |     // 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 != 0; | ||||||
|              view = get_view_next(app, view, AccessAll)){ |              view = get_view_next(app, view, Access_Always)){ | ||||||
|             Buffer_ID new_buffer_id = view_get_buffer(app, view, AccessAll); |             Buffer_ID new_buffer_id = view_get_buffer(app, view, Access_Always); | ||||||
|             for (i32 i = 0; i < currently_viewed_buffer_count; i += 1){ |             for (i32 i = 0; i < currently_viewed_buffer_count; i += 1){ | ||||||
|                 if (new_buffer_id == buffers_currently_being_viewed[i]){ |                 if (new_buffer_id == buffers_currently_being_viewed[i]){ | ||||||
|                     goto skip0; |                     goto skip0; | ||||||
|  | @ -239,9 +239,9 @@ generate_all_buffers_list(Application_Links *app, Lister *lister){ | ||||||
|      |      | ||||||
|     // Regular Buffers
 |     // 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 != 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){ |             for (i32 i = 0; i < currently_viewed_buffer_count; i += 1){ | ||||||
|                 if (buffer == buffers_currently_being_viewed[i]){ |                 if (buffer == buffers_currently_being_viewed[i]){ | ||||||
|                     goto skip1; |                     goto skip1; | ||||||
|  | @ -255,9 +255,9 @@ generate_all_buffers_list(Application_Links *app, Lister *lister){ | ||||||
|     } |     } | ||||||
|     // Buffers Starting with *
 |     // 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 != 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){ |             for (i32 i = 0; i < currently_viewed_buffer_count; i += 1){ | ||||||
|                 if (buffer == buffers_currently_being_viewed[i]){ |                 if (buffer == buffers_currently_being_viewed[i]){ | ||||||
|                     goto skip2; |                     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(lister->arena, &list, hot); | ||||||
|                 string_list_push_overlap(lister->arena, &list, '/', (**info).file_name); |                 string_list_push_overlap(lister->arena, &list, '/', (**info).file_name); | ||||||
|                 String_Const_u8 full_file_path = string_list_flatten(lister->arena, list); |                 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); |                 end_temp(path_temp); | ||||||
|             } |             } | ||||||
|              |              | ||||||
|  | @ -487,7 +487,7 @@ activate_switch_buffer(Application_Links *app, | ||||||
| CUSTOM_COMMAND_SIG(interactive_switch_buffer) | CUSTOM_COMMAND_SIG(interactive_switch_buffer) | ||||||
| CUSTOM_DOC("Interactively switch to an open 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); |     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_COMMAND_SIG(interactive_kill_buffer) | ||||||
| CUSTOM_DOC("Interactively kill an open 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); |     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_COMMAND_SIG(interactive_open_or_new) | ||||||
| CUSTOM_DOC("Interactively open a file out of the file system.") | 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); |     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_COMMAND_SIG(interactive_new) | ||||||
| CUSTOM_DOC("Interactively creates a new file.") | 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); |     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_COMMAND_SIG(interactive_open) | ||||||
| CUSTOM_DOC("Interactively opens a file.") | 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); |     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); |     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); |     Lister_Option *options = push_array(scratch, Lister_Option, command_id_count); | ||||||
|     for (i32 i = 0; i < command_id_count; i += 1){ |     for (i32 i = 0; i < command_id_count; i += 1){ | ||||||
|         i32 j = i; |         i32 j = i; | ||||||
|  |  | ||||||
|  | @ -665,7 +665,7 @@ internal void | ||||||
| log_graph_render(Application_Links *app, Frame_Info frame_info, View_ID view){ | log_graph_render(Application_Links *app, Frame_Info frame_info, View_ID view){ | ||||||
|     if (log_parse.arena != 0){ |     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); |         b32 is_active_view = (active_view == view); | ||||||
|          |          | ||||||
|         Rect_f32 view_rect = view_get_screen_rect(app, 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_Event *event = box_node->event; | ||||||
|             log_graph.selected_event = 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){ |             if (target_view != 0){ | ||||||
|                 String_Const_u8 file_name = log_parse__get_string(&log_parse, event->src_file_name); |                 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){ |                 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){ |                 if (target_buffer != 0){ | ||||||
|                     set_view_to_location(app, target_view, target_buffer, |                     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_COMMAND_SIG(show_the_log_graph) | ||||||
| CUSTOM_DOC("Parses *log* and displays the 'log graph' UI") | 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); |     log_parse_fill(app, log_buffer); | ||||||
|      |      | ||||||
|     if (log_view == 0){ |     if (log_view == 0){ | ||||||
|         log_view = get_active_view(app, AccessAll); |         log_view = get_active_view(app, Access_Always); | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     View_ID view = log_view; |     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_COMMAND_SIG(miblo_increment_basic) | ||||||
| CUSTOM_DOC("Increment an integer under the cursor by one.") | CUSTOM_DOC("Increment an integer under the cursor by one.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     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); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     Miblo_Number_Info number = {}; |     Miblo_Number_Info number = {}; | ||||||
|     if (get_numeric_at_cursor(app, buffer, pos, &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_COMMAND_SIG(miblo_decrement_basic) | ||||||
| CUSTOM_DOC("Decrement an integer under the cursor by one.") | CUSTOM_DOC("Decrement an integer under the cursor by one.") | ||||||
| { | { | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     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); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     Miblo_Number_Info number = {}; |     Miblo_Number_Info number = {}; | ||||||
|     if (get_numeric_at_cursor(app, buffer, pos, &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 | static void | ||||||
| miblo_time_stamp_alter(Application_Links *app, i32 unit_type, i32 amt){ | miblo_time_stamp_alter(Application_Links *app, i32 unit_type, i32 amt){ | ||||||
|     View_ID view = get_active_view(app, AccessOpen); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     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); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|      |      | ||||||
|     Miblo_Timestamp_Info timestamp = {}; |     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; |         i32 buffers_to_close_count = 0; | ||||||
|         do_repeat = false; |         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 != 0; | ||||||
|              buffer = get_buffer_next(app, buffer, AccessAll)){ |              buffer = get_buffer_next(app, buffer, Access_Always)){ | ||||||
|             b32 is_match = true; |             b32 is_match = true; | ||||||
|              |              | ||||||
|             if (extension_array.count > 0){ |             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); |                 Buffer_ID buffer = buffer_identifier_to_id(app, buffer_id); | ||||||
|                 view = get_first_view_with_buffer(app, buffer); |                 view = get_first_view_with_buffer(app, buffer); | ||||||
|                 if (view == 0){ |                 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){ |     if (current_project.loaded){ | ||||||
|         Scratch_Block scratch(app, Scratch_Share); |         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; |         i32 option_count = current_project.command_array.count; | ||||||
|         Lister_Option *options = push_array(scratch, Lister_Option, option_count); |         Lister_Option *options = push_array(scratch, Lister_Option, option_count); | ||||||
|         for (i32 i = 0; |         for (i32 i = 0; | ||||||
|  |  | ||||||
|  | @ -7,8 +7,8 @@ | ||||||
| CUSTOM_COMMAND_SIG(select_surrounding_scope) | 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 '}'.") | 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); |     View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|     i64 pos = view_get_cursor_pos(app, view); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     Range_i64 range = {}; |     Range_i64 range = {}; | ||||||
|     if (find_surrounding_nest(app, buffer, pos, FindNest_Scope, &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_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 '}'.") | 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); |     View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|     i64 pos = view_get_cursor_pos(app, view); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     select_next_scope_after_pos(app, view, buffer, pos); |     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_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.") | 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); |     View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|     i64 pos = view_get_mark_pos(app, view); |     i64 pos = view_get_mark_pos(app, view); | ||||||
|     select_next_scope_after_pos(app, view, buffer, pos); |     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_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 '}'.") | 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); |     View_ID view = get_active_view(app, Access_ReadVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessProtected); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadVisible); | ||||||
|     i64 pos = view_get_cursor_pos(app, view); |     i64 pos = view_get_cursor_pos(app, view); | ||||||
|     Find_Nest_Flag flags = FindNest_Scope; |     Find_Nest_Flag flags = FindNest_Scope; | ||||||
|     Range_i64 range = {}; |     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_COMMAND_SIG(delete_current_scope) | ||||||
| CUSTOM_DOC("Deletes the braces surrounding the currently selected scope.  Leaves the contents within the 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); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     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); |     Range_i64 range = get_view_range(app, view); | ||||||
|     if (buffer_get_char(app, buffer, range.min) == '{' && |     if (buffer_get_char(app, buffer, range.min) == '{' && | ||||||
|  |  | ||||||
|  | @ -122,7 +122,7 @@ query_user_list_definition_needle(Application_Links *app, Arena *arena){ | ||||||
| internal void | internal void | ||||||
| list_all_locations__generic(Application_Links *app, String_Const_u8_Array needle, List_All_Locations_Flag flags){ | list_all_locations__generic(Application_Links *app, String_Const_u8_Array needle, List_All_Locations_Flag flags){ | ||||||
|     if (needle.count > 0){ |     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_have_flags = 0; | ||||||
|         String_Match_Flag must_not_have_flags = 0; |         String_Match_Flag must_not_have_flags = 0; | ||||||
|         if (HasFlag(flags, ListAllLocationsFlag_CaseSensitive)){ |         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_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.") | 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); |     View_ID view = get_active_view(app, Access_ReadWriteVisible); | ||||||
|     Buffer_ID buffer = view_get_buffer(app, view, AccessOpen); |     Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible); | ||||||
|     if (buffer != 0){ |     if (buffer != 0){ | ||||||
|         Managed_Scope scope = view_get_managed_scope(app, view); |         Managed_Scope scope = view_get_managed_scope(app, view); | ||||||
|          |          | ||||||
|  |  | ||||||
|  | @ -145,11 +145,17 @@ ENUM(i32, Buffer_Reopen_Result){ | ||||||
|     BufferReopenResult_Failed = 1, |     BufferReopenResult_Failed = 1, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| ENUM(u32, Access_Flag){ | typedef u32 Access_Flag; | ||||||
|     AccessOpen      = 0x0, | enum{ | ||||||
|     AccessProtected = 0x1, |     Access_Write = 0x1, | ||||||
|     AccessHidden    = 0x2, |     Access_Read = 0x2, | ||||||
|     AccessAll       = 0xFF |     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){ | ENUM(u32, Dirty_State){ | ||||||
|  | @ -189,16 +195,6 @@ ENUM(i32, Panel_Split_Kind){ | ||||||
|     PanelSplitKind_FixedPixels_Max = 3, |     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; | TYPEDEF u8 Key_Modifier; | ||||||
| 
 | 
 | ||||||
| STRUCT Mouse_State{ | STRUCT Mouse_State{ | ||||||
|  |  | ||||||
|  | @ -229,12 +229,12 @@ i32 line_number; | ||||||
| }; | }; | ||||||
| static Command_Metadata fcoder_metacmd_table[207] = { | 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(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_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, 2040 }, | { 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, 2046 }, | { 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, 2052 }, | { 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, 2058 }, | { 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, 2066 }, | { 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, 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(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 }, | { 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(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, 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(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(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, 989 }, | { 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(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(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 }, | { 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->finalize_color = finalize_color; | ||||||
| vtable->push_hot_directory = push_hot_directory; | vtable->push_hot_directory = push_hot_directory; | ||||||
| vtable->set_hot_directory = set_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->send_exit_signal = send_exit_signal; | ||||||
| vtable->set_window_title = set_window_title; | vtable->set_window_title = set_window_title; | ||||||
| vtable->draw_string_oriented = draw_string_oriented; | vtable->draw_string_oriented = draw_string_oriented; | ||||||
|  | @ -324,7 +323,6 @@ get_theme_colors = vtable->get_theme_colors; | ||||||
| finalize_color = vtable->finalize_color; | finalize_color = vtable->finalize_color; | ||||||
| push_hot_directory = vtable->push_hot_directory; | push_hot_directory = vtable->push_hot_directory; | ||||||
| set_hot_directory = vtable->set_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; | send_exit_signal = vtable->send_exit_signal; | ||||||
| set_window_title = vtable->set_window_title; | set_window_title = vtable->set_window_title; | ||||||
| draw_string_oriented = vtable->draw_string_oriented; | 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_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_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_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_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_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_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, float t) | #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_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_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_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_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) | #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_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_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_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_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_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) | #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 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 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 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_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_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_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, float t); | 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 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_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 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 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); | 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 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 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 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 void custom_send_exit_signal_type(Application_Links* app); | ||||||
| typedef b32 custom_set_window_title_type(Application_Links* app, String_Const_u8 title); | 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); | 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_finalize_color_type *finalize_color; | ||||||
| custom_push_hot_directory_type *push_hot_directory; | custom_push_hot_directory_type *push_hot_directory; | ||||||
| custom_set_hot_directory_type *set_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_send_exit_signal_type *send_exit_signal; | ||||||
| custom_set_window_title_type *set_window_title; | custom_set_window_title_type *set_window_title; | ||||||
| custom_draw_string_oriented_type *draw_string_oriented; | 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 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 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 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_split(Application_Links* app, Panel_ID panel_id); | ||||||
| internal b32 panel_is_leaf(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_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, float t); | 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 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_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 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 Rect_i32 panel_get_margin(Application_Links* app, Panel_ID panel_id); | ||||||
| internal b32 view_close(Application_Links* app, View_ID view_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 argb_color finalize_color(Application_Links* app, int_color color); | ||||||
| internal String_Const_u8 push_hot_directory(Application_Links* app, Arena* arena); | 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 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 void send_exit_signal(Application_Links* app); | ||||||
| internal b32 set_window_title(Application_Links* app, String_Const_u8 title); | 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); | 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_finalize_color_type *finalize_color = 0; | ||||||
| global custom_push_hot_directory_type *push_hot_directory = 0; | global custom_push_hot_directory_type *push_hot_directory = 0; | ||||||
| global custom_set_hot_directory_type *set_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_send_exit_signal_type *send_exit_signal = 0; | ||||||
| global custom_set_window_title_type *set_window_title = 0; | global custom_set_window_title_type *set_window_title = 0; | ||||||
| global custom_draw_string_oriented_type *draw_string_oriented = 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 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 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 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_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_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_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, float t); | 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 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_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 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 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); | 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 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 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 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 void send_exit_signal(Application_Links* app); | ||||||
| api(custom) function b32 set_window_title(Application_Links* app, String_Const_u8 title); | 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); | 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 | #endif | ||||||
| u64 main_keys_hash_array[122] = { | u64 main_keys_hash_array[121] = { | ||||||
| 0x0000000000000000,0x07c5f278d1101ced,0x0000000000000000,0xa62bbbf7713fa62b, | 0xf9b82a9bc92c5f33,0xb6436fbc362998db,0x0000000000000000,0xfba6da6846b00cd1, | ||||||
| 0x0000000000000000,0x0000000000000000,0x189f5b933bf3b933,0xf6c02fd104e622d3, | 0xe34f6ca007b5b81d,0x8a1aa0c1cbf05e73,0x8fd4a100ba640fcd,0x0000000000000000, | ||||||
| 0xa62bbbf7441048b5,0x31a9b2ff15ce8563,0x68df7003b1bc4821,0x0000000000000000, | 0x2ce3ee58579b1a55,0x22656326fd2b4911,0x0000000000000000,0xf9b8223032c3ecd1, | ||||||
| 0x0000000000000000,0xa62bbbf77f52a37b,0x189f5af5a15e570b,0x68df7003b1b8eceb, | 0x8fd4a100a91f262d,0xa88ecc26a7f77b99,0xb6436cf8c4fa5e81,0x0000000000000000, | ||||||
| 0x0000000000000000,0x0000000000000000,0x189f5b0ad4cbeaa3,0x3af1c28e1ddb0783, | 0x0000000000000000,0x8fd4a100a9643df1,0x0000000000000000,0x8fd4a100a9603db3, | ||||||
| 0x2d14d64d82dd3be3,0xa62bbbf5e2f33afd,0x0000000000000000,0xf6c02fd108f91d9b, | 0x0000000000000000,0xf9b83340fd2e9de3,0x0000000000000000,0xfba6da5cdcae2bd3, | ||||||
| 0xaf010cb51e08bbc1,0x0000000000000000,0x3192f97fcdee24d3,0x07c5f278d1101f69, | 0xb6436fbc3629996b,0xf9b89388bba220d3,0xfba6da684500801f,0xf9a78870e743a847, | ||||||
| 0x189f5af6a7a7ffbd,0x0000000000000000,0x189f5af5bf5767f3,0x3afed33e86adea2d, | 0x0000000000000000,0xa88ecc26a7e0d42d,0xa88ecc26a7f23dcd,0xf9b812edb5d97433, | ||||||
| 0x0000000000000000,0xa62bbbf5e1ec09ad,0x0000000000000000,0x0000000000000000, | 0xa88ecc26a7ef7051,0x0000000000000000,0x0000000000000000,0x0000000000000000, | ||||||
| 0x522ba3fd0f3be8c3,0x0000000000000000,0xf6c02fd104e53add,0xf6c02fd10bdeaa6f, | 0x0000000000000000,0x0000000000000000,0xf9b9a571da137975,0xfba6da64e06f0463, | ||||||
| 0x07c5df2eff098d77,0x0000000000000000,0x0000000000000000,0x3afecff9e1ae52e5, | 0xfba6da686cfb1c71,0xfba6da681a116c23,0x0000000000000000,0x0000000000000000, | ||||||
| 0xf6c02fd10bb24563,0xf6c02fd104eca76b,0x0000000000000000,0x3afed5063319a1eb, | 0x11acd6d4ea0a02a1,0x0000000000000000,0x0000000000000000,0x6affad88658048a1, | ||||||
| 0x68df7003b1bde949,0x189f5af5d4b84fbf,0x07c5d15a314f7723,0x189f5b08d4370559, | 0x0000000000000000,0x0000000000000000,0x0000000000000000,0x8a1aa0c1cbf1b917, | ||||||
| 0x0000000000000000,0x0000000000000000,0xf6c02fd10baf4dcb,0x0000000000000000, | 0x0000000000000000,0x0000000000000000,0xa88ecc26a7a547b1,0x8fd4a100bcf58153, | ||||||
| 0x0000000000000000,0x189f5b56738b1265,0x0000000000000000,0x0000000000000000, | 0x8fd4a100aaefa25f,0x0000000000000000,0xa88ecc26a7e3323d,0x0000000000000000, | ||||||
| 0xa62bbbf5e0247cbf,0x3afa82656d98a37b,0xa62bbbf75fa88419,0x0000000000000000, | 0x0000000000000000,0x8fd4a100baee8df7,0xfba6da64d8ddd323,0x0000000000000000, | ||||||
| 0x0000000000000000,0x0000000000000000,0x189f5b933833cf69,0x0000000000000000, | 0x0000000000000000,0xa88ecc26a79f7b99,0xfba6da5cd0b49155,0xa88ecc26a7f69e9d, | ||||||
| 0xa62bbbf767d15da9,0x0000000000000000,0x19183219f06dcb63,0x68df7003b1bc2429, | 0xfba6da67185db213,0x0000000000000000,0x0000000000000000,0x0000000000000000, | ||||||
| 0x3afec2d0663f612d,0x0000000000000000,0x0000000000000000,0x3afecf3b77007d35, | 0x0000000000000000,0xfba6da69c6296b5b,0x8fd4a100b7ff4c8d,0x0000000000000000, | ||||||
| 0x189f5b0ad46a3da1,0x0000000000000000,0x53cf9ef61495b3e3,0x3af6389d0658983d, | 0xf9b83de0de17f603,0x0000000000000000,0x6ca6c603c047daa1,0x0000000000000000, | ||||||
| 0x0000000000000000,0x0000000000000000,0x07c5df6155313bd1,0x0000000000000000, | 0x0000000000000000,0x3308377a8b225aa1,0x0000000000000000,0x8a1aa0c1cbf163a9, | ||||||
| 0x0000000000000000,0xaf010cb51e08a4a3,0xf6c02fd108fab82b,0x0000000000000000, | 0x0000000000000000,0x0000000000000000,0xb6436c68778fc797,0xfba6da675a1126e5, | ||||||
| 0x0000000000000000,0x0000000000000000,0x258bb962715d5363,0x189f5af5db0cf073, | 0xa88ecc26a7ee0e0b,0x8fd4a100ae608e9d,0x0000000000000000,0x2ce3ee58579b1d7f, | ||||||
| 0x07c5df26bfde9b65,0xa62bbbf5d67aee5b,0x189f5b566a0beef9,0x0000000000000000, | 0x0000000000000000,0x8fd4a103511baa33,0xfba6da6882ea3055,0x0000000000000000, | ||||||
| 0x3afedd01e3000695,0x0000000000000000,0x0000000000000000,0xf6c02fd10bb000ad, | 0xb6436c2911b7425d,0x0000000000000000,0x6ebc09e02b8457d3,0xf9b830388e251d3d, | ||||||
| 0x0000000000000000,0x0000000000000000,0x68df7003b1bde535,0x0000000000000000, | 0xa88ecc26a7a5110b,0x0000000000000000,0x0000000000000000,0x0000000000000000, | ||||||
| 0x0000000000000000,0x189f5af5d7a3840d,0xa62bbbf7710434fb,0x0000000000000000, | 0x0000000000000000,0xb6436cf7d2df0e63,0xb6436f1fe4e8fbb3,0x22664a1c2bc81d01, | ||||||
| 0x3af23ba28357b2a3,0x07c5c0b2c6388e35,0x189f5b08dfc6e6b9,0x0000000000000000, | 0x0000000000000000,0x0000000000000000,0x0000000000000000,0xfba6da686e9a3cc1, | ||||||
| 0x0000000000000000,0x0000000000000000,0x0000000000000000,0x0000000000000000, | 0x8a1aa0c1cbf00147,0x0000000000000000,0xf9b894d86adff051,0x8a1aa0c1cbf09e37, | ||||||
| 0x0000000000000000,0x0000000000000000,0x0000000000000000,0xf6c02fd10b9d4cbb, | 0xfba6da686e7280bb,0x0000000000000000,0x0000000000000000,0x0000000000000000, | ||||||
| 0x60e2b96351c30769,0x0000000000000000, | 0x0000000000000000, | ||||||
| }; | }; | ||||||
| u8 main_keys_key_array_1[] = {0x61,0x6c,0x69,0x67,0x6e,0x61,0x73,}; | u8 main_keys_key_array_0[] = {0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,}; | ||||||
| u8 main_keys_key_array_3[] = {0x66,0x61,0x6c,0x73,0x65,}; | u8 main_keys_key_array_1[] = {0x61,0x6c,0x69,0x67,0x6e,0x6f,0x66,}; | ||||||
| u8 main_keys_key_array_6[] = {0x65,0x78,0x74,0x65,0x72,0x6e,}; | u8 main_keys_key_array_3[] = {0x73,0x69,0x67,0x6e,0x65,0x64,}; | ||||||
| u8 main_keys_key_array_7[] = {0x63,0x61,0x73,0x65,}; | u8 main_keys_key_array_4[] = {0x74,0x68,0x72,0x65,0x61,0x64,0x5f,0x6c,0x6f,0x63,0x61,0x6c,}; | ||||||
| u8 main_keys_key_array_8[] = {0x77,0x68,0x69,0x6c,0x65,}; | u8 main_keys_key_array_5[] = {0x69,0x6e,0x74,}; | ||||||
| u8 main_keys_key_array_9[] = {0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,}; | u8 main_keys_key_array_6[] = {0x75,0x73,0x69,0x6e,0x67,}; | ||||||
| u8 main_keys_key_array_10[] = {0x6e,0x65,0x77,}; | u8 main_keys_key_array_8[] = {0x64,0x6f,}; | ||||||
| u8 main_keys_key_array_13[] = {0x75,0x73,0x69,0x6e,0x67,}; | u8 main_keys_key_array_9[] = {0x70,0x72,0x6f,0x74,0x65,0x63,0x74,0x65,0x64,}; | ||||||
| u8 main_keys_key_array_14[] = {0x74,0x79,0x70,0x65,0x69,0x64,}; | u8 main_keys_key_array_11[] = {0x75,0x6e,0x73,0x69,0x67,0x6e,0x65,0x64,}; | ||||||
| u8 main_keys_key_array_15[] = {0x61,0x73,0x6d,}; | u8 main_keys_key_array_12[] = {0x63,0x6f,0x6e,0x73,0x74,}; | ||||||
| u8 main_keys_key_array_18[] = {0x73,0x69,0x67,0x6e,0x65,0x64,}; | u8 main_keys_key_array_13[] = {0x65,0x6e,0x75,0x6d,}; | ||||||
| u8 main_keys_key_array_19[] = {0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,}; | u8 main_keys_key_array_14[] = {0x6e,0x75,0x6c,0x6c,0x70,0x74,0x72,}; | ||||||
| u8 main_keys_key_array_20[] = {0x63,0x6f,0x6e,0x73,0x74,0x5f,0x63,0x61,0x73,0x74,}; | u8 main_keys_key_array_17[] = {0x63,0x61,0x74,0x63,0x68,}; | ||||||
| u8 main_keys_key_array_21[] = {0x62,0x72,0x65,0x61,0x6b,}; | u8 main_keys_key_array_19[] = {0x63,0x6c,0x61,0x73,0x73,}; | ||||||
| u8 main_keys_key_array_23[] = {0x65,0x6e,0x75,0x6d,}; | u8 main_keys_key_array_21[] = {0x74,0x65,0x6d,0x70,0x6c,0x61,0x74,0x65,}; | ||||||
| u8 main_keys_key_array_24[] = {0x69,0x66,}; | u8 main_keys_key_array_23[] = {0x65,0x78,0x70,0x6f,0x72,0x74,}; | ||||||
| u8 main_keys_key_array_26[] = {0x70,0x72,0x6f,0x74,0x65,0x63,0x74,0x65,0x64,}; | u8 main_keys_key_array_24[] = {0x61,0x6c,0x69,0x67,0x6e,0x61,0x73,}; | ||||||
| u8 main_keys_key_array_27[] = {0x61,0x6c,0x69,0x67,0x6e,0x6f,0x66,}; | u8 main_keys_key_array_25[] = {0x64,0x65,0x63,0x6c,0x74,0x79,0x70,0x65,}; | ||||||
| u8 main_keys_key_array_28[] = {0x70,0x75,0x62,0x6c,0x69,0x63,}; | u8 main_keys_key_array_26[] = {0x73,0x69,0x7a,0x65,0x6f,0x66,}; | ||||||
| u8 main_keys_key_array_30[] = {0x72,0x65,0x74,0x75,0x72,0x6e,}; | u8 main_keys_key_array_27[] = {0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,}; | ||||||
| u8 main_keys_key_array_31[] = {0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,}; | u8 main_keys_key_array_29[] = {0x67,0x6f,0x74,0x6f,}; | ||||||
| u8 main_keys_key_array_33[] = {0x63,0x6c,0x61,0x73,0x73,}; | u8 main_keys_key_array_30[] = {0x6c,0x6f,0x6e,0x67,}; | ||||||
| u8 main_keys_key_array_36[] = {0x74,0x68,0x72,0x65,0x61,0x64,0x5f,0x6c,0x6f,0x63,0x61,0x6c,}; | u8 main_keys_key_array_31[] = {0x6e,0x6f,0x65,0x78,0x63,0x65,0x70,0x74,}; | ||||||
| u8 main_keys_key_array_38[] = {0x63,0x68,0x61,0x72,}; | u8 main_keys_key_array_32[] = {0x74,0x72,0x75,0x65,}; | ||||||
| u8 main_keys_key_array_39[] = {0x67,0x6f,0x74,0x6f,}; | u8 main_keys_key_array_38[] = {0x65,0x78,0x70,0x6c,0x69,0x63,0x69,0x74,}; | ||||||
| u8 main_keys_key_array_40[] = {0x6e,0x75,0x6c,0x6c,0x70,0x74,0x72,}; | u8 main_keys_key_array_39[] = {0x64,0x6f,0x75,0x62,0x6c,0x65,}; | ||||||
| u8 main_keys_key_array_43[] = {0x74,0x65,0x6d,0x70,0x6c,0x61,0x74,0x65,}; | u8 main_keys_key_array_40[] = {0x73,0x77,0x69,0x74,0x63,0x68,}; | ||||||
| u8 main_keys_key_array_44[] = {0x74,0x72,0x75,0x65,}; | u8 main_keys_key_array_41[] = {0x69,0x6e,0x6c,0x69,0x6e,0x65,}; | ||||||
| u8 main_keys_key_array_45[] = {0x62,0x6f,0x6f,0x6c,}; | u8 main_keys_key_array_44[] = {0x63,0x6f,0x6e,0x73,0x74,0x5f,0x63,0x61,0x73,0x74,}; | ||||||
| u8 main_keys_key_array_47[] = {0x74,0x79,0x70,0x65,0x6e,0x61,0x6d,0x65,}; | u8 main_keys_key_array_47[] = {0x64,0x79,0x6e,0x61,0x6d,0x69,0x63,0x5f,0x63,0x61,0x73,0x74,}; | ||||||
| u8 main_keys_key_array_48[] = {0x69,0x6e,0x74,}; | u8 main_keys_key_array_51[] = {0x66,0x6f,0x72,}; | ||||||
| u8 main_keys_key_array_49[] = {0x73,0x77,0x69,0x74,0x63,0x68,}; | u8 main_keys_key_array_54[] = {0x63,0x61,0x73,0x65,}; | ||||||
| u8 main_keys_key_array_50[] = {0x76,0x69,0x72,0x74,0x75,0x61,0x6c,}; | u8 main_keys_key_array_55[] = {0x73,0x68,0x6f,0x72,0x74,}; | ||||||
| u8 main_keys_key_array_51[] = {0x69,0x6e,0x6c,0x69,0x6e,0x65,}; | u8 main_keys_key_array_56[] = {0x62,0x72,0x65,0x61,0x6b,}; | ||||||
| u8 main_keys_key_array_54[] = {0x76,0x6f,0x69,0x64,}; | u8 main_keys_key_array_58[] = {0x76,0x6f,0x69,0x64,}; | ||||||
| u8 main_keys_key_array_57[] = {0x64,0x65,0x6c,0x65,0x74,0x65,}; | u8 main_keys_key_array_61[] = {0x75,0x6e,0x69,0x6f,0x6e,}; | ||||||
| u8 main_keys_key_array_60[] = {0x63,0x61,0x74,0x63,0x68,}; | u8 main_keys_key_array_62[] = {0x64,0x65,0x6c,0x65,0x74,0x65,}; | ||||||
| u8 main_keys_key_array_61[] = {0x65,0x78,0x70,0x6c,0x69,0x63,0x69,0x74,}; | u8 main_keys_key_array_65[] = {0x62,0x6f,0x6f,0x6c,}; | ||||||
| u8 main_keys_key_array_62[] = {0x75,0x6e,0x69,0x6f,0x6e,}; | u8 main_keys_key_array_66[] = {0x65,0x78,0x74,0x65,0x72,0x6e,}; | ||||||
| u8 main_keys_key_array_66[] = {0x65,0x78,0x70,0x6f,0x72,0x74,}; | u8 main_keys_key_array_67[] = {0x65,0x6c,0x73,0x65,}; | ||||||
| u8 main_keys_key_array_68[] = {0x73,0x68,0x6f,0x72,0x74,}; | u8 main_keys_key_array_68[] = {0x66,0x72,0x69,0x65,0x6e,0x64,}; | ||||||
| u8 main_keys_key_array_70[] = {0x64,0x79,0x6e,0x61,0x6d,0x69,0x63,0x5f,0x63,0x61,0x73,0x74,}; | u8 main_keys_key_array_73[] = {0x70,0x75,0x62,0x6c,0x69,0x63,}; | ||||||
| u8 main_keys_key_array_71[] = {0x74,0x72,0x79,}; | u8 main_keys_key_array_74[] = {0x66,0x6c,0x6f,0x61,0x74,}; | ||||||
| u8 main_keys_key_array_72[] = {0x6e,0x6f,0x65,0x78,0x63,0x65,0x70,0x74,}; | u8 main_keys_key_array_76[] = {0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,}; | ||||||
| u8 main_keys_key_array_75[] = {0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,}; | u8 main_keys_key_array_78[] = {0x73,0x74,0x61,0x74,0x69,0x63,0x5f,0x63,0x61,0x73,0x74,}; | ||||||
| u8 main_keys_key_array_76[] = {0x73,0x69,0x7a,0x65,0x6f,0x66,}; | 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_78[] = {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_79[] = {0x64,0x65,0x63,0x6c,0x74,0x79,0x70,0x65,}; | u8 main_keys_key_array_86[] = {0x74,0x79,0x70,0x65,0x64,0x65,0x66,}; | ||||||
| u8 main_keys_key_array_82[] = {0x74,0x79,0x70,0x65,0x64,0x65,0x66,}; | u8 main_keys_key_array_87[] = {0x74,0x79,0x70,0x65,0x69,0x64,}; | ||||||
| u8 main_keys_key_array_85[] = {0x64,0x6f,}; | u8 main_keys_key_array_88[] = {0x74,0x68,0x69,0x73,}; | ||||||
| u8 main_keys_key_array_86[] = {0x65,0x6c,0x73,0x65,}; | u8 main_keys_key_array_89[] = {0x66,0x61,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[] = {0x69,0x66,}; | ||||||
| u8 main_keys_key_array_91[] = {0x73,0x74,0x72,0x75,0x63,0x74,}; | u8 main_keys_key_array_93[] = {0x77,0x68,0x69,0x6c,0x65,}; | ||||||
| u8 main_keys_key_array_92[] = {0x70,0x72,0x69,0x76,0x61,0x74,0x65,}; | u8 main_keys_key_array_94[] = {0x72,0x65,0x74,0x75,0x72,0x6e,}; | ||||||
| u8 main_keys_key_array_93[] = {0x63,0x6f,0x6e,0x73,0x74,}; | u8 main_keys_key_array_96[] = {0x76,0x69,0x72,0x74,0x75,0x61,0x6c,}; | ||||||
| u8 main_keys_key_array_94[] = {0x64,0x6f,0x75,0x62,0x6c,0x65,}; | u8 main_keys_key_array_98[] = {0x73,0x74,0x61,0x74,0x69,0x63,0x5f,0x61,0x73,0x73,0x65,0x72,0x74,}; | ||||||
| u8 main_keys_key_array_96[] = {0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,}; | u8 main_keys_key_array_99[] = {0x74,0x79,0x70,0x65,0x6e,0x61,0x6d,0x65,}; | ||||||
| u8 main_keys_key_array_99[] = {0x74,0x68,0x69,0x73,}; | u8 main_keys_key_array_100[] = {0x63,0x68,0x61,0x72,}; | ||||||
| u8 main_keys_key_array_102[] = {0x66,0x6f,0x72,}; | u8 main_keys_key_array_105[] = {0x70,0x72,0x69,0x76,0x61,0x74,0x65,}; | ||||||
| u8 main_keys_key_array_105[] = {0x73,0x74,0x61,0x74,0x69,0x63,}; | u8 main_keys_key_array_106[] = {0x64,0x65,0x66,0x61,0x75,0x6c,0x74,}; | ||||||
| u8 main_keys_key_array_106[] = {0x66,0x6c,0x6f,0x61,0x74,}; | u8 main_keys_key_array_107[] = {0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,}; | ||||||
| u8 main_keys_key_array_108[] = {0x75,0x6e,0x73,0x69,0x67,0x6e,0x65,0x64,}; | u8 main_keys_key_array_111[] = {0x73,0x74,0x72,0x75,0x63,0x74,}; | ||||||
| u8 main_keys_key_array_109[] = {0x64,0x65,0x66,0x61,0x75,0x6c,0x74,}; | u8 main_keys_key_array_112[] = {0x6e,0x65,0x77,}; | ||||||
| u8 main_keys_key_array_110[] = {0x66,0x72,0x69,0x65,0x6e,0x64,}; | u8 main_keys_key_array_114[] = {0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,}; | ||||||
| u8 main_keys_key_array_119[] = {0x6c,0x6f,0x6e,0x67,}; | u8 main_keys_key_array_115[] = {0x74,0x72,0x79,}; | ||||||
| u8 main_keys_key_array_120[] = {0x73,0x74,0x61,0x74,0x69,0x63,0x5f,0x61,0x73,0x73,0x65,0x72,0x74,}; | u8 main_keys_key_array_116[] = {0x73,0x74,0x61,0x74,0x69,0x63,}; | ||||||
| String_Const_u8 main_keys_key_array[122] = { | String_Const_u8 main_keys_key_array[121] = { | ||||||
| {0, 0}, | {main_keys_key_array_0, 8}, | ||||||
| {main_keys_key_array_1, 7}, | {main_keys_key_array_1, 7}, | ||||||
| {0, 0}, | {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}, | ||||||
| {0, 0}, | {main_keys_key_array_8, 2}, | ||||||
| {main_keys_key_array_6, 6}, |  | ||||||
| {main_keys_key_array_7, 4}, |  | ||||||
| {main_keys_key_array_8, 5}, |  | ||||||
| {main_keys_key_array_9, 9}, | {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}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {main_keys_key_array_13, 5}, | {main_keys_key_array_17, 5}, | ||||||
| {main_keys_key_array_14, 6}, |  | ||||||
| {main_keys_key_array_15, 3}, |  | ||||||
| {0, 0}, | {0, 0}, | ||||||
|  | {main_keys_key_array_19, 5}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {main_keys_key_array_18, 6}, | {main_keys_key_array_21, 8}, | ||||||
| {main_keys_key_array_19, 8}, |  | ||||||
| {main_keys_key_array_20, 10}, |  | ||||||
| {main_keys_key_array_21, 5}, |  | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {main_keys_key_array_23, 4}, | {main_keys_key_array_23, 6}, | ||||||
| {main_keys_key_array_24, 2}, | {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}, | {0, 0}, | ||||||
| {main_keys_key_array_26, 9}, | {main_keys_key_array_29, 4}, | ||||||
| {main_keys_key_array_27, 7}, | {main_keys_key_array_30, 4}, | ||||||
| {main_keys_key_array_28, 6}, |  | ||||||
| {0, 0}, |  | ||||||
| {main_keys_key_array_30, 6}, |  | ||||||
| {main_keys_key_array_31, 8}, | {main_keys_key_array_31, 8}, | ||||||
| {0, 0}, | {main_keys_key_array_32, 4}, | ||||||
| {main_keys_key_array_33, 5}, |  | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {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}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {main_keys_key_array_43, 8}, |  | ||||||
| {main_keys_key_array_44, 4}, |  | ||||||
| {main_keys_key_array_45, 4}, |  | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {main_keys_key_array_47, 8}, | {main_keys_key_array_38, 8}, | ||||||
| {main_keys_key_array_48, 3}, | {main_keys_key_array_39, 6}, | ||||||
| {main_keys_key_array_49, 6}, | {main_keys_key_array_40, 6}, | ||||||
| {main_keys_key_array_50, 7}, | {main_keys_key_array_41, 6}, | ||||||
| {main_keys_key_array_51, 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}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {main_keys_key_array_54, 4}, | {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}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {main_keys_key_array_57, 6}, | {main_keys_key_array_61, 5}, | ||||||
| {0, 0}, | {main_keys_key_array_62, 6}, | ||||||
| {0, 0}, |  | ||||||
| {main_keys_key_array_60, 5}, |  | ||||||
| {main_keys_key_array_61, 8}, |  | ||||||
| {main_keys_key_array_62, 5}, |  | ||||||
| {0, 0}, |  | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
|  | {main_keys_key_array_65, 4}, | ||||||
| {main_keys_key_array_66, 6}, | {main_keys_key_array_66, 6}, | ||||||
| {0, 0}, | {main_keys_key_array_67, 4}, | ||||||
| {main_keys_key_array_68, 5}, | {main_keys_key_array_68, 6}, | ||||||
| {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}, |  | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {main_keys_key_array_90, 11}, | {0, 0}, | ||||||
| {main_keys_key_array_91, 6}, | {main_keys_key_array_73, 6}, | ||||||
| {main_keys_key_array_92, 7}, | {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_93, 5}, | ||||||
| {main_keys_key_array_94, 6}, | {main_keys_key_array_94, 6}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {main_keys_key_array_96, 8}, | {main_keys_key_array_96, 7}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {0, 0}, | {main_keys_key_array_98, 13}, | ||||||
| {main_keys_key_array_99, 4}, | {main_keys_key_array_99, 8}, | ||||||
| {0, 0}, | {main_keys_key_array_100, 4}, | ||||||
| {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}, |  | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {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}, | {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}, | {0, 0}, | ||||||
| {main_keys_key_array_119, 4}, |  | ||||||
| {main_keys_key_array_120, 13}, |  | ||||||
| {0, 0}, | {0, 0}, | ||||||
| }; | }; | ||||||
| Lexeme_Table_Value main_keys_value_array[122] = { | Lexeme_Table_Value main_keys_value_array[121] = { | ||||||
| {0, 0}, | {4, TokenCppKind_Volatile}, | ||||||
| {4, TokenCppKind_AlignAs}, | {4, TokenCppKind_AlignOf}, | ||||||
| {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}, |  | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {4, TokenCppKind_Signed}, | {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_ThreadLocal}, | ||||||
|  | {4, TokenCppKind_Int}, | ||||||
|  | {4, TokenCppKind_Using}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {4, TokenCppKind_Char}, | {4, TokenCppKind_Do}, | ||||||
| {4, TokenCppKind_Goto}, | {4, TokenCppKind_Protected}, | ||||||
|  | {0, 0}, | ||||||
|  | {4, TokenCppKind_Unsigned}, | ||||||
|  | {4, TokenCppKind_Const}, | ||||||
|  | {4, TokenCppKind_Enum}, | ||||||
| {4, TokenCppKind_NullPtr}, | {4, TokenCppKind_NullPtr}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {4, TokenCppKind_Template}, | {4, TokenCppKind_Catch}, | ||||||
| {8, TokenCppKind_LiteralTrue}, |  | ||||||
| {4, TokenCppKind_Bool}, |  | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {4, TokenCppKind_Typename}, | {4, TokenCppKind_Class}, | ||||||
| {4, TokenCppKind_Int}, | {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_Switch}, | ||||||
| {4, TokenCppKind_Virtual}, |  | ||||||
| {4, TokenCppKind_Inline}, | {4, TokenCppKind_Inline}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {4, TokenCppKind_Void}, | {4, TokenCppKind_ConstCast}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {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_DynamicCast}, | ||||||
| {4, TokenCppKind_Try}, |  | ||||||
| {4, TokenCppKind_NoExcept}, |  | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {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}, | {0, 0}, | ||||||
| {4, TokenCppKind_For}, | {4, TokenCppKind_For}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {4, TokenCppKind_Static}, | {4, TokenCppKind_Case}, | ||||||
| {4, TokenCppKind_Float}, | {4, TokenCppKind_Short}, | ||||||
|  | {4, TokenCppKind_Break}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {4, TokenCppKind_Unsigned}, | {4, TokenCppKind_Void}, | ||||||
| {4, TokenCppKind_Default}, | {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}, | {4, TokenCppKind_Friend}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {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}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
|  | {4, TokenCppKind_ReinterpretCast}, | ||||||
|  | {0, 0}, | ||||||
|  | {4, TokenCppKind_Asm}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {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_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}, | {0, 0}, | ||||||
| }; | }; | ||||||
| i32 main_keys_slot_count = 122; | i32 main_keys_slot_count = 121; | ||||||
| u64 main_keys_seed = 0x72a08ef8c3b20b14; | u64 main_keys_seed = 0x4e71603d6bab78be; | ||||||
| u64 pp_directives_hash_array[25] = { | u64 pp_directives_hash_array[25] = { | ||||||
| 0xad4540de30c71edd,0x0000000000000000,0x0000000000000000,0x0e18faf5e569c2b1, | 0x11557879e6f0ea77,0x660a16e8e3deeead,0x6ce110cd12875a1f,0x0000000000000000, | ||||||
| 0xa64e19bb79cbac21,0x0000000000000000,0xad4540de1b0f0bc9,0x0000000000000000, | 0x05d53bc1ed49019f,0xe0ea3af73f832cff,0x660a16e8e388da77,0x0000000000000000, | ||||||
| 0x0000000000000000,0x0000000000000000,0xad4540de18b15083,0xa64e188dd72574bd, | 0x0000000000000000,0x1155675ee54cd183,0x11557878a3b561f3,0x0000000000000000, | ||||||
| 0xffd4966f134594b1,0xffd4966e47d3f229,0x0000000000000000,0x3b12b187afde4529, | 0xe0eb9286644bb223,0x115578679cce8ad9,0x0000000000000000,0x0000000000000000, | ||||||
| 0xffd4966e2c27f051,0x0000000000000000,0xad4540d9ef8ab729,0xffd49673f22de19f, | 0x660a16e8efe01327,0x0000000000000000,0x660a16e8ebbdd277,0x6ce110cd1279b983, | ||||||
| 0x0000000000000000,0x0e18faf5e5976a43,0xad4540de12fc7049,0x0e18faf5e5976149, | 0x6ce110cd128723fd,0x0000000000000000,0x660a16e8ecb496bf,0x0000000000000000, | ||||||
| 0x0000000000000000, | 0x0000000000000000, | ||||||
| }; | }; | ||||||
| u8 pp_directives_key_array_0[] = {0x65,0x72,0x72,0x6f,0x72,}; | u8 pp_directives_key_array_0[] = {0x69,0x66,0x6e,0x64,0x65,0x66,}; | ||||||
| u8 pp_directives_key_array_3[] = {0x6c,0x69,0x6e,0x65,}; | u8 pp_directives_key_array_1[] = {0x75,0x73,0x69,0x6e,0x67,}; | ||||||
| u8 pp_directives_key_array_4[] = {0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,}; | u8 pp_directives_key_array_2[] = {0x65,0x6c,0x69,0x66,}; | ||||||
| u8 pp_directives_key_array_6[] = {0x69,0x66,0x64,0x65,0x66,}; | u8 pp_directives_key_array_4[] = {0x69,0x66,}; | ||||||
| u8 pp_directives_key_array_10[] = {0x75,0x73,0x69,0x6e,0x67,}; | u8 pp_directives_key_array_5[] = {0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,}; | ||||||
| u8 pp_directives_key_array_11[] = {0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,}; | u8 pp_directives_key_array_6[] = {0x75,0x6e,0x64,0x65,0x66,}; | ||||||
| u8 pp_directives_key_array_12[] = {0x64,0x65,0x66,0x69,0x6e,0x65,}; | u8 pp_directives_key_array_9[] = {0x64,0x65,0x66,0x69,0x6e,0x65,}; | ||||||
| u8 pp_directives_key_array_13[] = {0x69,0x66,0x6e,0x64,0x65,0x66,}; | u8 pp_directives_key_array_10[] = {0x69,0x6d,0x70,0x6f,0x72,0x74,}; | ||||||
| u8 pp_directives_key_array_15[] = {0x69,0x66,}; | u8 pp_directives_key_array_12[] = {0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,}; | ||||||
| u8 pp_directives_key_array_16[] = {0x69,0x6d,0x70,0x6f,0x72,0x74,}; | u8 pp_directives_key_array_13[] = {0x70,0x72,0x61,0x67,0x6d,0x61,}; | ||||||
| u8 pp_directives_key_array_18[] = {0x65,0x6e,0x64,0x69,0x66,}; | u8 pp_directives_key_array_16[] = {0x65,0x72,0x72,0x6f,0x72,}; | ||||||
| u8 pp_directives_key_array_19[] = {0x70,0x72,0x61,0x67,0x6d,0x61,}; | u8 pp_directives_key_array_18[] = {0x69,0x66,0x64,0x65,0x66,}; | ||||||
| u8 pp_directives_key_array_21[] = {0x65,0x6c,0x73,0x65,}; | u8 pp_directives_key_array_19[] = {0x6c,0x69,0x6e,0x65,}; | ||||||
| u8 pp_directives_key_array_22[] = {0x75,0x6e,0x64,0x65,0x66,}; | u8 pp_directives_key_array_20[] = {0x65,0x6c,0x73,0x65,}; | ||||||
| u8 pp_directives_key_array_23[] = {0x65,0x6c,0x69,0x66,}; | u8 pp_directives_key_array_22[] = {0x65,0x6e,0x64,0x69,0x66,}; | ||||||
| String_Const_u8 pp_directives_key_array[25] = { | String_Const_u8 pp_directives_key_array[25] = { | ||||||
| {pp_directives_key_array_0, 5}, | {pp_directives_key_array_0, 6}, | ||||||
| {0, 0}, | {pp_directives_key_array_1, 5}, | ||||||
| {0, 0}, | {pp_directives_key_array_2, 4}, | ||||||
| {pp_directives_key_array_3, 4}, |  | ||||||
| {pp_directives_key_array_4, 7}, |  | ||||||
| {0, 0}, | {0, 0}, | ||||||
|  | {pp_directives_key_array_4, 2}, | ||||||
|  | {pp_directives_key_array_5, 7}, | ||||||
| {pp_directives_key_array_6, 5}, | {pp_directives_key_array_6, 5}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
|  | {pp_directives_key_array_9, 6}, | ||||||
|  | {pp_directives_key_array_10, 6}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {pp_directives_key_array_10, 5}, | {pp_directives_key_array_12, 7}, | ||||||
| {pp_directives_key_array_11, 7}, |  | ||||||
| {pp_directives_key_array_12, 6}, |  | ||||||
| {pp_directives_key_array_13, 6}, | {pp_directives_key_array_13, 6}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {pp_directives_key_array_15, 2}, | {0, 0}, | ||||||
| {pp_directives_key_array_16, 6}, | {pp_directives_key_array_16, 5}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {pp_directives_key_array_18, 5}, | {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}, | {0, 0}, | ||||||
| {pp_directives_key_array_21, 4}, |  | ||||||
| {pp_directives_key_array_22, 5}, | {pp_directives_key_array_22, 5}, | ||||||
| {pp_directives_key_array_23, 4}, | {0, 0}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| }; | }; | ||||||
| Lexeme_Table_Value pp_directives_value_array[25] = { | 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_PPIfNDef}, | ||||||
|  | {5, TokenCppKind_PPUsing}, | ||||||
|  | {5, TokenCppKind_PPElIf}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {5, TokenCppKind_PPIf}, | {5, TokenCppKind_PPIf}, | ||||||
|  | {5, TokenCppKind_PPVersion}, | ||||||
|  | {5, TokenCppKind_PPUndef}, | ||||||
|  | {0, 0}, | ||||||
|  | {0, 0}, | ||||||
|  | {5, TokenCppKind_PPDefine}, | ||||||
| {5, TokenCppKind_PPImport}, | {5, TokenCppKind_PPImport}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| {5, TokenCppKind_PPEndIf}, | {5, TokenCppKind_PPInclude}, | ||||||
| {5, TokenCppKind_PPPragma}, | {5, TokenCppKind_PPPragma}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
|  | {0, 0}, | ||||||
|  | {5, TokenCppKind_PPError}, | ||||||
|  | {0, 0}, | ||||||
|  | {5, TokenCppKind_PPIfDef}, | ||||||
|  | {5, TokenCppKind_PPLine}, | ||||||
| {5, TokenCppKind_PPElse}, | {5, TokenCppKind_PPElse}, | ||||||
| {5, TokenCppKind_PPUndef}, | {0, 0}, | ||||||
| {5, TokenCppKind_PPElIf}, | {5, TokenCppKind_PPEndIf}, | ||||||
|  | {0, 0}, | ||||||
| {0, 0}, | {0, 0}, | ||||||
| }; | }; | ||||||
| i32 pp_directives_slot_count = 25; | i32 pp_directives_slot_count = 25; | ||||||
| u64 pp_directives_seed = 0x639be38020429ccc; | u64 pp_directives_seed = 0xf30c26e2b8e4ff9e; | ||||||
| u64 pp_keys_hash_array[2] = { | 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] = { | String_Const_u8 pp_keys_key_array[2] = { | ||||||
| {pp_keys_key_array_0, 7}, |  | ||||||
| {0, 0}, | {0, 0}, | ||||||
|  | {pp_keys_key_array_1, 7}, | ||||||
| }; | }; | ||||||
| Lexeme_Table_Value pp_keys_value_array[2] = { | Lexeme_Table_Value pp_keys_value_array[2] = { | ||||||
| {4, TokenCppKind_PPDefined}, |  | ||||||
| {0, 0}, | {0, 0}, | ||||||
|  | {4, TokenCppKind_PPDefined}, | ||||||
| }; | }; | ||||||
| i32 pp_keys_slot_count = 2; | i32 pp_keys_slot_count = 2; | ||||||
| u64 pp_keys_seed = 0xbf1efe4a490d5f30; | u64 pp_keys_seed = 0x83e4bc6eb147cac1; | ||||||
| internal Token_List | internal Token_List | ||||||
| lex_full_input_cpp(Arena *arena, String_Const_u8 input){ | lex_full_input_cpp(Arena *arena, String_Const_u8 input){ | ||||||
| Token_List list = {}; | Token_List list = {}; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue