Cleaned up input, replaced all {0} with {}

This commit is contained in:
Allen Webster 2018-11-20 00:18:54 -08:00
parent c82d38d4a7
commit 1d5621f5b6
87 changed files with 973 additions and 1011 deletions

View File

@ -82,16 +82,6 @@ ENUM(uint32_t, Memory_Protect_Flags){
MemProtect_Execute = 0x4,
};
/* DOC(User_Input_Type_ID specifies a type of user input event.) */
ENUM(int32_t, User_Input_Type_ID){
/* DOC(UserInputNone indicates that no event has occurred.) */
UserInputNone = 0,
/* DOC(UserInputKey indicates an event which can be described by a Key_Event_Data struct.) */
UserInputKey = 1,
/* DOC(UserInputMouse indicates an event which can be described by a Mouse_State struct.) */
UserInputMouse = 2
};
/* DOC(A Wrap_Indicator_Mode is used in the buffer setting BufferSetting_WrapIndicator to specify how to indicate that line has been wrapped.) */
ENUM(int32_t, Wrap_Indicator_Mode){
/* DOC(WrapIndicator_Hide tells the buffer rendering system not to put any indicator on wrapped lines.) */
@ -290,25 +280,26 @@ ENUM(uint32_t, Set_Buffer_Flag){
/* DOC(A Input_Type_Flag field specifies a set of input event types.) */
ENUM(uint32_t, Input_Type_Flag){
/* DOC(If EventOnAnyKey is set, all keyboard events are included in the set.) */
EventOnAnyKey = 0x1,
EventOnAnyKey = 0x1,
/* DOC(If EventOnEsc is set, any press of the escape key is included in the set.) */
EventOnEsc = 0x2,
/* DOC(If EventOnLeftButton is set, left clicks are included in the set.) */
EventOnLeftButton = 0x4,
/* DOC(If EventOnRightButton is set, right clicks are included in the set.) */
EventOnRightButton = 0x8,
/* DOC(If EventOnWheel is set, any wheel movement is included in the set.) */
EventOnWheel = 0x10,
/* DOC(This is not totally implemented yet.) */
EventOnMouseMove = 0x20,
EventOnEsc = 0x2,
/* DOC(If EventOnButton is set, all mouse button events are included in the set.) */
EventOnButton = (EventOnLeftButton | EventOnRightButton | EventOnWheel),
/* DOC(This is not totally implemented yet.) */
EventOnMouse = (EventOnButton | EventOnMouseMove),
/* DOC(If EventOnLeftButton is set, left clicks and releases are included in the set.) */
EventOnMouseLeftButton = 0x4,
/* DOC(If EventOnRightButton is set, right clicks and releases are included in the set.) */
EventOnMouseRightButton = 0x8,
/* DOC(If EventOnWheel is set, any wheel movement is included in the set.) */
EventOnMouseWheel = 0x10,
/* DOC(If EventOnMouseMove is set, mouse movement events are included in the set.) */
EventOnMouseMove = 0x20,
/* DOC(If EventOnAnimate is set, animate events are included in the set.) */
EventOnAnimate = 0x40,
/* DOC(If EventOnViewActivation is set, view activation and deactivation events are included in the set.) */
EventOnViewActivation = 0x80,
/* DOC(EventAll is a catch all name for including all possible events in the set.) */
EventAll = 0xFF
EventAll = 0xFFFFFFFF,
};
/* DOC(A Mouse_Cursor_Show_Type value specifes a mode for 4coder to handle the mouse cursor.) */
@ -360,7 +351,7 @@ DOC_SEE(Key_Modifier) */
};
// TODO(allen): GLOBAL_VAR meta parsing
GLOBAL_VAR Key_Event_Data null_key_event_data = {0};
GLOBAL_VAR Key_Event_Data null_key_event_data = {};
/* DOC(Mouse_State describes an entire mouse state complete with the position, left and right button states, the wheel state, and whether or not the mouse if in the window.) */
STRUCT Mouse_State{
@ -386,7 +377,7 @@ STRUCT Mouse_State{
int32_t y;
};
GLOBAL_VAR Mouse_State null_mouse_state = {0};
GLOBAL_VAR Mouse_State null_mouse_state = {};
/* DOC(Range describes an integer range typically used for ranges within a buffer. Ranges are not used to pass into the API, but this struct is used for returns.
@ -640,7 +631,7 @@ STRUCT i32_Rect{
int32_t y1;
};
GLOBAL_VAR i32_Rect null_i32_rect = {0};
GLOBAL_VAR i32_Rect null_i32_rect = {};
/*
DOC(A four corner axis aligned rectangle, with floating point coordinates.)
@ -652,7 +643,7 @@ STRUCT f32_Rect{
float y1;
};
GLOBAL_VAR f32_Rect null_f32_rect = {0};
GLOBAL_VAR f32_Rect null_f32_rect = {};
/* DOC(View_Summary acts as a handle to a view and describes the state of the view.)
DOC_SEE(Access_Flag)
@ -1027,25 +1018,20 @@ UNION Generic_Command{
/*
DOC(User_Input describes a user input event which can be either a key press or mouse event.)
DOC_SEE(User_Input_Type_ID)
DOC(User_Input describes an event, such as key presses, mouse button presses, mouse moves,
and also non-input related events like animation frames, and view activation changes.)
DOC_SEE(Generic_Command)
DOC_SEE(Key_Event_Data)
DOC_SEE(Mouse_State)
*/
STRUCT User_Input{
/* DOC(This field specifies whether the event was a key press or mouse event.) */
User_Input_Type_ID type;
/* DOC(This field indicates that an abort event has occurred and the command needs to shut down.) */
bool32 abort;
UNION{
/* DOC(This field describes a key press event.) */
Key_Event_Data key;
/* DOC(This field describes a mouse input event.) */
Mouse_State mouse;
};
/* DOC(The description of the event.) */
Key_Event_Data key;
/* DOC(If this event would trigger a command, this field specifies what the command would be.) */
Generic_Command command;
/* DOC(This field indicates that an abort event has occurred and the command needs to shut down.
This can be set even if key and command are also set, in which case the command still needs to abort, and the key and command simply reflect
what event triggered the abort event.) */
bool32 abort;
};
/*

View File

@ -8,13 +8,13 @@ static Hard_Start_Result
buffer_find_hard_start(Application_Links *app, Buffer_Summary *buffer, int32_t line_start, int32_t tab_width){
tab_width -= 1;
Hard_Start_Result result = {0};
Hard_Start_Result result = {};
result.all_space = 1;
result.indent_pos = 0;
result.char_pos = line_start;
char data_chunk[1024];
Stream_Chunk stream = {0};
Stream_Chunk stream = {};
stream.add_null = true;
if (init_stream_chunk(&stream, app, buffer, line_start, data_chunk, sizeof(data_chunk))){
int32_t still_looping = 1;
@ -110,7 +110,7 @@ make_batch_from_indent_marks(Application_Links *app, Partition *arena, Buffer_Su
Assert(edit_count <= edit_max);
}
Buffer_Batch_Edit result = {0};
Buffer_Batch_Edit result = {};
result.str = str_base;
result.str_len = (int32_t)(push_array(arena, char, 0) - str_base);
result.edits = edits;
@ -164,7 +164,7 @@ find_anchor_token(Application_Links *app, Buffer_Summary *buffer, Cpp_Token_Arra
int32_t line_start, int32_t tab_width){
#if 1
// NOTE(allen): New implementation of find_anchor_token (4.0.26) revert if it is a problem.
Indent_Anchor_Position anchor = {0};
Indent_Anchor_Position anchor = {};
if (tokens.count > 0){
Cpp_Token *first_invalid_token = get_first_token_at_line(app, buffer, tokens, line_start);
@ -242,7 +242,7 @@ find_anchor_token(Application_Links *app, Buffer_Summary *buffer, Cpp_Token_Arra
#else
// NOTE(allen): Old (4.0.25) implementation of find_anchor_token.
Indent_Anchor_Position anchor = {0};
Indent_Anchor_Position anchor = {};
if (tokens.count != 0){
anchor.token = get_first_token_at_line(app, buffer, tokens, line_start);
@ -352,7 +352,7 @@ get_indentation_marks(Application_Links *app, Partition *arena, Buffer_Summary *
// Decide where to start indentation parsing.
Indent_Anchor_Position anchor = find_anchor_token(app, buffer, tokens, first_line, tab_width);
Cpp_Token *token_ptr = anchor.token;
Indent_Parse_State indent = {0};
Indent_Parse_State indent = {};
indent.current_indent = anchor.indentation;
if (token_ptr == 0){
@ -372,8 +372,8 @@ get_indentation_marks(Application_Links *app, Partition *arena, Buffer_Summary *
int32_t next_line_start_pos = buffer_get_line_start(app, buffer, line_number);
indent.previous_line_indent = indent.current_indent;
Cpp_Token prev_token = {0};
Cpp_Token token = {0};
Cpp_Token prev_token = {};
Cpp_Token token = {};
if (token_ptr < tokens.tokens + tokens.count){
token = *token_ptr;
}
@ -462,7 +462,7 @@ get_indentation_marks(Application_Links *app, Partition *arena, Buffer_Summary *
bool32 statement_complete = false;
Cpp_Token *prev_usable_token_ptr = token_ptr - 1;
Cpp_Token prev_usable_token = {0};
Cpp_Token prev_usable_token = {};
if (prev_usable_token_ptr >= tokens.tokens){
prev_usable_token = *prev_usable_token_ptr;
}
@ -678,7 +678,7 @@ buffer_auto_indent(Application_Links *app, Partition *part, Buffer_Summary *buff
int32_t *indent_marks = get_indentation_marks(app, part, buffer, tokens, line_start, line_end, (flags & AutoIndent_ExactAlignBlock), tab_width);
// Stage 4: Set the Line Indents
Indent_Options opts = {0};
Indent_Options opts = {};
opts.empty_blank_lines = (flags & AutoIndent_ClearLine);
opts.use_tabs = (flags & AutoIndent_UseTab);
opts.tab_width = tab_width;
@ -753,7 +753,7 @@ CUSTOM_DOC("Inserts a character and auto-indents the line on which the cursor si
uint32_t flags = DEFAULT_INDENT_FLAGS;
User_Input in = get_command_input(app);
if (in.type == UserInputKey && in.key.character == '\n'){
if (in.key.character == '\n'){
flags |= AutoIndent_ExactAlignBlock;
}
buffer_auto_indent(app, &global_part, &buffer, view.cursor.pos, view.cursor.pos, DEF_TAB_WIDTH, DEFAULT_INDENT_FLAGS);

View File

@ -16,7 +16,7 @@ write_character_parameter(Application_Links *app, uint8_t *character, uint32_t l
Buffer_Summary buffer = get_buffer(app, view.buffer_id, access);
int32_t pos = view.cursor.pos;
Marker next_cursor_marker = {0};
Marker next_cursor_marker = {};
next_cursor_marker.pos = character_pos_to_pos(app, &view, &buffer, view.cursor.character_pos);
next_cursor_marker.lean_right = true;
@ -58,7 +58,7 @@ CUSTOM_DOC("Deletes the character to the right of the cursor.")
Buffer_Summary buffer = get_buffer(app, view.buffer_id, access);
int32_t start = view.cursor.pos;
if (0 <= start && start < buffer.size){
Full_Cursor cursor = {0};
Full_Cursor cursor = {};
view_compute_cursor(app, &view, seek_character_pos(view.cursor.character_pos + 1), &cursor);
int32_t end = cursor.pos;
buffer_replace_range(app, &buffer, start, end, 0, 0);
@ -76,7 +76,7 @@ CUSTOM_DOC("Deletes the character to the left of the cursor.")
Buffer_Summary buffer = get_buffer(app, view.buffer_id, access);
int32_t end = view.cursor.pos;
if (0 < end && end <= buffer.size){
Full_Cursor cursor = {0};
Full_Cursor cursor = {};
view_compute_cursor(app, &view, seek_character_pos(view.cursor.character_pos - 1), &cursor);
int32_t start = cursor.pos;
buffer_replace_range(app, &buffer, start, end, 0, 0);
@ -424,7 +424,7 @@ CUSTOM_DOC("Removes trailing whitespace from all lines in the current buffer.")
Buffer_Edit *edits = (Buffer_Edit*)app->memory;
char data[1024];
Stream_Chunk chunk = {0};
Stream_Chunk chunk = {};
int32_t i = 0;
if (init_stream_chunk(&chunk, app, &buffer, i, data, sizeof(data))){
@ -630,7 +630,7 @@ CUSTOM_DOC("Queries the user for a number, and jumps the cursor to the correspon
{
uint32_t access = AccessProtected;
Query_Bar bar = {0};
Query_Bar bar = {};
char string_space[256];
bar.prompt = make_lit_string("Goto Line: ");
@ -650,7 +650,7 @@ CUSTOM_COMMAND_SIG(reverse_search);
static void
isearch__update_highlight(Application_Links *app, View_Summary *view, Managed_Object highlight,
int32_t start, int32_t end){
Marker markers[4] = {0};
Marker markers[4] = {};
markers[0].pos = start;
markers[1].pos = end;
managed_object_store_data(app, highlight, 0, 2, markers);
@ -665,7 +665,7 @@ isearch(Application_Links *app, bool32 start_reversed, String query_init, bool32
return;
}
Query_Bar bar = {0};
Query_Bar bar = {};
if (start_query_bar(app, &bar, 0) == 0){
return;
}
@ -702,7 +702,7 @@ isearch(Application_Links *app, bool32 start_reversed, String query_init, bool32
isearch__update_highlight(app, &view, highlight, match.start, match.end);
cursor_is_hidden = true;
User_Input in = {0};
User_Input in = {};
for (;;){
// NOTE(allen): Change the bar's prompt to match the current direction.
if (reverse){
@ -721,9 +721,6 @@ isearch(Application_Links *app, bool32 start_reversed, String query_init, bool32
in = get_user_input(app, EventOnAnyKey, EventOnEsc);
if (in.abort) break;
// NOTE(allen): If we're getting mouse events here it's a 4coder bug, because we only asked to intercept key events.
Assert(in.type == UserInputKey);
uint8_t character[4];
uint32_t length = to_writable_character(in, character);
@ -850,14 +847,14 @@ isearch(Application_Links *app, bool32 start_reversed, String query_init, bool32
CUSTOM_COMMAND_SIG(search)
CUSTOM_DOC("Begins an incremental search down through the current buffer for a user specified string.")
{
String query = {0};
String query = {};
isearch(app, false, query, false);
}
CUSTOM_COMMAND_SIG(reverse_search)
CUSTOM_DOC("Begins an incremental search up through the current buffer for a user specified string.")
{
String query = {0};
String query = {};
isearch(app, true, query, false);
}
@ -938,12 +935,12 @@ query_replace_base(Application_Links *app, View_Summary *view, Buffer_Summary *b
marker_visual_set_view_key(app, visual, view->view_id);
cursor_is_hidden = true;
User_Input in = {0};
User_Input in = {};
for (;new_pos < buffer->size;){
Range match = make_range(new_pos, new_pos + r.size);
isearch__update_highlight(app, view, highlight, match.min, match.max);
in = get_user_input(app, EventOnAnyKey, EventOnButton);
in = get_user_input(app, EventOnAnyKey, EventOnMouseLeftButton|EventOnMouseRightButton);
if (in.abort || in.key.keycode == key_esc || !key_is_unmodified(&in.key)) break;
if (in.key.character == 'y' || in.key.character == 'Y' ||
@ -1011,7 +1008,7 @@ CUSTOM_DOC("Queries the user for two strings, and incrementally replaces every o
return;
}
Query_Bar replace = {0};
Query_Bar replace = {};
char replace_space[1024];
replace.prompt = make_lit_string("Replace: ");
replace.string = make_fixed_width_string(replace_space);
@ -1035,7 +1032,7 @@ CUSTOM_DOC("Queries the user for a string, and incrementally replace every occur
return;
}
Range range = {0};
Range range = {};
char space[256];
String replace = read_identifier_at_pos(app, &buffer, view.cursor.pos, space, sizeof(space), &range);
@ -1091,7 +1088,7 @@ save_all_dirty_buffers_with_postfix(Application_Links *app, String postfix){
CUSTOM_COMMAND_SIG(save_all_dirty_buffers)
CUSTOM_DOC("Saves all buffers marked dirty (showing the '*' indicator).")
{
String empty = {0};
String empty = {};
save_all_dirty_buffers_with_postfix(app, empty);
}
@ -1125,7 +1122,7 @@ CUSTOM_DOC("Deletes the file of the current buffer if 4coder has the appropriate
Buffer_Summary buffer = get_buffer(app, view.buffer_id, AccessAll);
if (buffer.file_name != 0){
String file_name = {0};
String file_name = {};
file_name = make_string(buffer.file_name, buffer.file_name_len);
char space[4096];
@ -1273,9 +1270,9 @@ CUSTOM_DOC("Swaps the line under the cursor with the line above it, and moves th
return;
}
Full_Cursor prev_line_cursor = {0};
Full_Cursor this_line_cursor = {0};
Full_Cursor next_line_cursor = {0};
Full_Cursor prev_line_cursor = {};
Full_Cursor this_line_cursor = {};
Full_Cursor next_line_cursor = {};
int32_t this_line = view.cursor.line;
int32_t prev_line = this_line - 1;
@ -1336,7 +1333,7 @@ CUSTOM_DOC("Swaps the line under the cursor with the line below it, and moves th
}
int32_t next_line = view.cursor.line + 1;
Full_Cursor new_cursor = {0};
Full_Cursor new_cursor = {};
if (view_compute_cursor(app, &view, seek_line_char(next_line, 1), &new_cursor)){
if (new_cursor.line == next_line){
view_set_cursor(app, &view, seek_pos(new_cursor.pos), true);
@ -1355,7 +1352,7 @@ CUSTOM_DOC("Create a copy of the line on which the cursor sits.")
Partition *part = &global_part;
Temp_Memory temp = begin_temp_memory(part);
String line_string = {0};
String line_string = {};
char *before_line = push_array(part, char, 1);
if (read_line(app, part, &buffer, view.cursor.line, &line_string)){
*before_line = '\n';
@ -1406,7 +1403,7 @@ get_cpp_matching_file(Application_Links *app, Buffer_Summary buffer, Buffer_Summ
append(&file_name, make_string(buffer.file_name, buffer.file_name_len));
String extension = file_extension(file_name);
String new_extensions[2] = {0};
String new_extensions[2] = {};
int32_t new_extensions_count = 0;
if (match(extension, "cpp") || match(extension, "cc")){
@ -1487,7 +1484,7 @@ CUSTOM_DOC("If the current file is a *.cpp or *.h, attempts to open the correspo
View_Summary view = get_active_view(app, AccessAll);
Buffer_Summary buffer = get_buffer(app, view.buffer_id, AccessAll);
Buffer_Summary new_buffer = {0};
Buffer_Summary new_buffer = {};
if (get_cpp_matching_file(app, buffer, &new_buffer)){
get_next_view_looped_primary_panels(app, &view, AccessAll);
view_set_buffer(app, &view, new_buffer.buffer_id, 0);

View File

@ -167,7 +167,7 @@ CUSTOM_DOC("Looks for a build.bat, build.sh, or makefile in the current and pare
static View_Summary
get_or_open_build_panel(Application_Links *app){
View_Summary view = {0};
View_Summary view = {};
Buffer_Summary buffer = GET_COMP_BUFFER(app);
if (buffer.exists){
view = get_first_view_with_buffer(app, buffer.buffer_id);

View File

@ -1140,7 +1140,7 @@ CUSTOM_COMMAND_SIG(casey_force_codelegal_characters)
Buffer_Edit *edits = (Buffer_Edit*)app->memory;
char data[1024];
Stream_Chunk chunk = {0};
Stream_Chunk chunk = {};
int32_t i = 0;
int32_t last_utf = 0;
@ -1244,7 +1244,7 @@ casey_list_all_functions(Application_Links *app, Partition *part, Buffer_Summary
static const int32_t token_chunk_size = 512;
Cpp_Token token_chunk[token_chunk_size];
Stream_Tokens token_stream = {0};
Stream_Tokens token_stream = {};
if (init_stream_tokens(&token_stream, app, buffer, 0, token_chunk, token_chunk_size)){
Stream_Tokens start_position_stream_temp = begin_temp_stream_token(&token_stream);
@ -1779,7 +1779,7 @@ struct Casey_Scroll_Velocity
float x, y, t;
};
Casey_Scroll_Velocity casey_scroll_velocity_[16] = {0};
Casey_Scroll_Velocity casey_scroll_velocity_[16] = {};
Casey_Scroll_Velocity *casey_scroll_velocity = casey_scroll_velocity_ - 1;
SCROLL_RULE_SIG(casey_smooth_scroll_rule){

View File

@ -74,7 +74,7 @@ CUSTOM_DOC("At the cursor, insert the text at the top of the clipboard.")
view_set_cursor(app, &view, seek_pos(pos + len), true);
// TODO(allen): Send this to all views.
Theme_Color paste = {0};
Theme_Color paste = {};
paste.tag = Stag_Paste;
get_theme_colors(app, &paste, 1);
view_post_fade(app, &view, 0.667f, pos, pos + len, paste.color);
@ -119,7 +119,7 @@ CUSTOM_DOC("If the previous command was paste or paste_next, replaces the paste
view_set_cursor(app, &view, seek_pos(pos + len), true);
// TODO(allen): Send this to all views.
Theme_Color paste = {0};
Theme_Color paste = {};
paste.tag = Stag_Paste;
get_theme_colors(app, &paste, 1);
view_post_fade(app, &view, 0.667f, pos, pos + len, paste.color);

View File

@ -193,7 +193,7 @@ snippet_lister__parameterized(Application_Links *app, Snippet_Array snippet_arra
CUSTOM_COMMAND_SIG(snippet_lister)
CUSTOM_DOC("Opens a snippet lister for inserting whole pre-written snippets of text.")
{
Snippet_Array snippet_array = {0};
Snippet_Array snippet_array = {};
snippet_array.snippets = default_snippets;
snippet_array.count = ArrayCount(default_snippets);
snippet_lister__parameterized(app, snippet_array);

View File

@ -6,7 +6,7 @@
static CString_Array
get_code_extensions(Extension_List *list){
CString_Array array = {0};
CString_Array array = {};
array.strings = default_extensions;
array.count = ArrayCount(default_extensions);
if (list->count != 0){
@ -50,7 +50,7 @@ parse_extension_line_to_extension_list(String str, Extension_List *list){
static Error_Location
get_error_location(char *base, char *pos){
Error_Location location = {0};
Error_Location location = {};
location.line_number = 1;
location.column_number = 1;
for (char *ptr = base;
@ -69,7 +69,7 @@ get_error_location(char *base, char *pos){
static String
config_stringize_errors(Partition *arena, Config *parsed){
String result = {0};
String result = {};
if (parsed->errors.first != 0){
result.str = push_array(arena, char, 0);
result.memory_size = partition_remaining(arena);
@ -104,7 +104,7 @@ config_parser__advance_to_next(Config_Parser *ctx){
static Config_Parser
make_config_parser(Partition *arena, String file_name, String data, Cpp_Token_Array array){
Config_Parser ctx = {0};
Config_Parser ctx = {};
ctx.start = array.tokens;
ctx.token = ctx.start - 1;
ctx.end = ctx.start + array.count;
@ -129,7 +129,7 @@ config_parser__recognize_token(Config_Parser *ctx, Cpp_Token_Type type){
static String
config_parser__get_lexeme(Config_Parser *ctx){
String lexeme = {0};
String lexeme = {};
if (ctx->start <= ctx->token && ctx->token < ctx->end){
lexeme = make_string(ctx->data.str + ctx->token->start, ctx->token->size);
}
@ -138,7 +138,7 @@ config_parser__get_lexeme(Config_Parser *ctx){
static Config_Integer
config_parser__get_int(Config_Parser *ctx){
Config_Integer config_integer = {0};
Config_Integer config_integer = {};
String str = config_parser__get_lexeme(ctx);
if (match(substr(str, 0, 2), "0x")){
config_integer.is_signed = false;
@ -512,7 +512,7 @@ config_parser__compound(Config_Parser *ctx){
static Config_Compound_Element*
config_parser__element(Config_Parser *ctx){
Config_Layout layout = {0};
Config_Layout layout = {};
layout.pos = config_parser__get_pos(ctx);
if (config_parser__match_token(ctx, CPP_TOKEN_DOT)){
if (config_parser__recognize_token(ctx, CPP_TOKEN_IDENTIFIER)){
@ -568,7 +568,7 @@ config_var(Config *config, String var_name, int32_t subscript);
static Config_Get_Result
config_evaluate_rvalue(Config *config, Config_Assignment *assignment, Config_RValue *r){
Config_Get_Result result = {0};
Config_Get_Result result = {};
if (r != 0 && !assignment->visited){
if (r->type == ConfigRValueType_LValue){
assignment->visited = true;
@ -613,7 +613,7 @@ config_evaluate_rvalue(Config *config, Config_Assignment *assignment, Config_RVa
static Config_Get_Result
config_var(Config *config, String var_name, int32_t subscript){
Config_Get_Result result = {0};
Config_Get_Result result = {};
Config_Assignment *assignment = config_lookup_assignment(config, var_name, subscript);
if (assignment != 0){
result = config_evaluate_rvalue(config, assignment, assignment->r);
@ -623,7 +623,7 @@ config_var(Config *config, String var_name, int32_t subscript){
static Config_Get_Result
config_compound_member(Config *config, Config_Compound *compound, String var_name, int32_t index){
Config_Get_Result result = {0};
Config_Get_Result result = {};
int32_t implicit_index = 0;
bool32 implicit_index_is_valid = true;
for (Config_Compound_Element *element = compound->first;
@ -655,7 +655,7 @@ config_compound_member(Config *config, Config_Compound *compound, String var_nam
}break;
}
if (element_matches_query){
Config_Assignment dummy_assignment = {0};
Config_Assignment dummy_assignment = {};
dummy_assignment.pos = element->l.pos;
result = config_evaluate_rvalue(config, &dummy_assignment, element->r);
break;
@ -1207,7 +1207,7 @@ typed_no_type_array_reference_list(Partition *arena, Config *config, Config_Comp
static Config_Iteration_Step_Result
typed_array_iteration_step(Config *parsed, Config_Compound *compound, Config_RValue_Type type, int32_t index){
Config_Iteration_Step_Result result = {0};
Config_Iteration_Step_Result result = {};
result.step = Iteration_Quit;
Config_Get_Result get_result = config_compound_member(parsed, compound, make_lit_string("~"), index);
if (get_result.success){
@ -1240,7 +1240,7 @@ typed_array_get_count(Config *parsed, Config_Compound *compound, Config_RValue_T
static Config_Get_Result_List
typed_array_reference_list(Partition *arena, Config *parsed, Config_Compound *compound, Config_RValue_Type type){
Config_Get_Result_List list = {0};
Config_Get_Result_List list = {};
for (int32_t i = 0;; ++i){
Config_Iteration_Step_Result result = typed_array_iteration_step(parsed, compound, type, i);
if (result.step == Iteration_Skip){
@ -1295,12 +1295,12 @@ text_data_to_token_array(Partition *arena, String data){
bool32 success = false;
int32_t max_count = (1 << 20)/sizeof(Cpp_Token);
Temp_Memory restore_point = begin_temp_memory(arena);
Cpp_Token_Array array = {0};
Cpp_Token_Array array = {};
array.tokens = push_array(arena, Cpp_Token, max_count);
if (array.tokens != 0){
array.max_count = max_count;
Cpp_Keyword_Table kw_table = {0};
Cpp_Keyword_Table pp_table = {0};
Cpp_Keyword_Table kw_table = {};
Cpp_Keyword_Table pp_table = {};
if (lexer_keywords_default_init(arena, &kw_table, &pp_table)){
Cpp_Lex_Data S = cpp_lex_data_init(false, kw_table, pp_table);
Cpp_Lex_Result result = cpp_lex_step(&S, data.str, data.size + 1, HAS_NULL_TERM, &array, NO_OUT_LIMIT);
@ -1684,7 +1684,7 @@ load_config_and_apply(Application_Links *app, Partition *scratch, Config_Data *c
change_theme(app, config->default_theme_name.str, config->default_theme_name.size);
highlight_line_at_cursor = config->highlight_line_at_cursor;
Face_Description description = {0};
Face_Description description = {};
int32_t len = config->default_font_name.size;
char *name_ptr = config->default_font_name.str;
if (len > sizeof(description.font.name) - 1){
@ -1708,7 +1708,7 @@ load_config_and_apply(Application_Links *app, Partition *scratch, Config_Data *c
static void
load_theme_file_into_live_set(Application_Links *app, Partition *scratch, char *file_name){
Temp_Memory temp = begin_temp_memory(scratch);
Theme_Data theme = {0};
Theme_Data theme = {};
Config *config = theme_parse__file_name(app, scratch, file_name, &theme);
String error_text = config_stringize_errors(scratch, config);
print_message(app, error_text.str, error_text.size);

View File

@ -27,7 +27,7 @@ lock_jump_buffer(Buffer_Summary buffer){
static View_Summary
get_view_for_locked_jump_buffer(Application_Links *app){
View_Summary view = {0};
View_Summary view = {};
if (locked_buffer.size > 0){
Buffer_Summary buffer = get_buffer_by_name(app, locked_buffer.str, locked_buffer.size, AccessAll);
if (buffer.exists){
@ -290,7 +290,7 @@ CUSTOM_DOC("Toggle fullscreen mode on or off. The change(s) do not take effect
CUSTOM_COMMAND_SIG(remap_interactive)
CUSTOM_DOC("Switch to a named key binding map.")
{
Query_Bar bar = {0};
Query_Bar bar = {};
char space[1024];
bar.prompt = make_lit_string("Map Name: ");
bar.string = make_fixed_width_string(space);

View File

@ -59,12 +59,12 @@ enum{
};
static int32_t fcoder_mode = FCoderMode_Original;
static ID_Line_Column_Jump_Location prev_location = {0};
static ID_Line_Column_Jump_Location prev_location = {};
static Config_Data global_config = {0};
static Config_Data global_config = {};
static char previous_isearch_query[256] = {0};
static char previous_isearch_query[256] = {};
// BOTTOM

View File

@ -107,10 +107,10 @@ sort_highlight_record(Highlight_Record *records, int32_t first, int32_t one_past
static Range_Array
get_enclosure_ranges(Application_Links *app, Partition *part,
Buffer_Summary *buffer, int32_t pos, uint32_t flags){
Range_Array array = {0};
Range_Array array = {};
array.ranges = push_array(part, Range, 0);
for (;;){
Range range = {0};
Range range = {};
if (find_scope_range(app, buffer, pos, &range, flags)){
Range *r = push_array(part, Range, 1);
*r = range;
@ -147,7 +147,7 @@ mark_enclosures(Application_Links *app, Partition *scratch, Managed_Scope render
Managed_Object o = alloc_buffer_markers_on_buffer(app, buffer->buffer_id, marker_count, &render_scope);
managed_object_store_data(app, o, 0, marker_count, markers);
Marker_Visual_Take_Rule take_rule = {0};
Marker_Visual_Take_Rule take_rule = {};
take_rule.take_count_per_step = 2;
take_rule.step_stride_in_marker_count = 8;
@ -263,7 +263,7 @@ RENDER_CALLER_SIG(default_render_caller){
// NOTE(allen): Cursor and mark
Managed_Object cursor_and_mark = alloc_buffer_markers_on_buffer(app, buffer.buffer_id, 2, &render_scope);
Marker cm_markers[2] = {0};
Marker cm_markers[2] = {};
cm_markers[0].pos = view.cursor.pos;
cm_markers[1].pos = view.mark.pos;
managed_object_store_data(app, cursor_and_mark, 0, 2, cm_markers);
@ -272,14 +272,14 @@ RENDER_CALLER_SIG(default_render_caller){
switch (fcoder_mode){
case FCoderMode_Original:
{
Theme_Color colors[2] = {0};
Theme_Color colors[2] = {};
colors[0].tag = Stag_Cursor;
colors[1].tag = Stag_Mark;
get_theme_colors(app, colors, 2);
uint32_t cursor_color = colors[0].color;
uint32_t mark_color = colors[1].color;
Marker_Visual_Take_Rule take_rule = {0};
Marker_Visual_Take_Rule take_rule = {};
take_rule.first_index = 0;
take_rule.take_count_per_step = 1;
take_rule.step_stride_in_marker_count = 1;
@ -302,14 +302,14 @@ RENDER_CALLER_SIG(default_render_caller){
case FCoderMode_NotepadLike:
{
Theme_Color colors[2] = {0};
Theme_Color colors[2] = {};
colors[0].tag = Stag_Cursor;
colors[1].tag = Stag_Highlight;
get_theme_colors(app, colors, 2);
uint32_t cursor_color = colors[0].color;
uint32_t highlight_color = colors[1].color;
Marker_Visual_Take_Rule take_rule = {0};
Marker_Visual_Take_Rule take_rule = {};
take_rule.first_index = 0;
take_rule.take_count_per_step = 1;
take_rule.step_stride_in_marker_count = 1;
@ -333,14 +333,14 @@ RENDER_CALLER_SIG(default_render_caller){
// NOTE(allen): Line highlight setup
if (highlight_line_at_cursor && is_active_view){
Theme_Color color = {0};
Theme_Color color = {};
color.tag = Stag_Highlight_Cursor_Line;
get_theme_colors(app, &color, 1);
uint32_t line_color = color.color;
Marker_Visual visual = create_marker_visual(app, cursor_and_mark);
marker_visual_set_effect(app, visual, VisualType_LineHighlights,
line_color, 0, 0);
Marker_Visual_Take_Rule take_rule = {0};
Marker_Visual_Take_Rule take_rule = {};
take_rule.first_index = 0;
take_rule.take_count_per_step = 1;
take_rule.step_stride_in_marker_count = 1;
@ -352,7 +352,7 @@ RENDER_CALLER_SIG(default_render_caller){
// NOTE(allen): Token highlight setup
bool32 do_token_highlight = false;
if (do_token_highlight){
Theme_Color color = {0};
Theme_Color color = {};
color.tag = Stag_Cursor;
get_theme_colors(app, &color, 1);
uint32_t token_color = (0x50 << 24) | (color.color&0xFFFFFF);
@ -363,7 +363,7 @@ RENDER_CALLER_SIG(default_render_caller){
int32_t pos2 = buffer_boundary_seek(app, &buffer, pos1, DirRight, token_flags);
Managed_Object token_highlight = alloc_buffer_markers_on_buffer(app, buffer.buffer_id, 2, &render_scope);
Marker range_markers[2] = {0};
Marker range_markers[2] = {};
range_markers[0].pos = pos1;
range_markers[1].pos = pos2;
managed_object_store_data(app, token_highlight, 0, 2, range_markers);
@ -811,7 +811,7 @@ struct Scroll_Velocity{
float x, y;
};
Scroll_Velocity scroll_velocity_[16] = {0};
Scroll_Velocity scroll_velocity_[16] = {};
Scroll_Velocity *scroll_velocity = scroll_velocity_ - 1;
static int32_t

View File

@ -14,7 +14,7 @@
static float
get_line_y(Application_Links *app, View_Summary *view, int32_t line){
Full_Cursor cursor = {0};
Full_Cursor cursor = {};
view_compute_cursor(app, view, seek_line_char(line, 1), &cursor);
float y = cursor.wrapped_y;
if (view->unwrapped_lines){
@ -38,7 +38,7 @@ CUSTOM_DOC("Delete characters in a rectangular region. Range testing is done by
int32_t end = 0;
bool32 success = 1;
Full_Cursor cursor = {0};
Full_Cursor cursor = {};
float y = get_line_y(app, &view, line);
@ -60,8 +60,8 @@ CUSTOM_DOC("Delete characters in a rectangular region. Range testing is done by
static void
pad_buffer_line(Application_Links *app, Partition *part, Buffer_Summary *buffer, int32_t line, char padchar, int32_t target){
Partial_Cursor start = {0};
Partial_Cursor end = {0};
Partial_Cursor start = {};
Partial_Cursor end = {};
if (buffer_compute_cursor(app, buffer, seek_line_char(line, 1), &start)){
if (buffer_compute_cursor(app, buffer, seek_line_char(line, 65536), &end)){
@ -145,7 +145,7 @@ CUSTOM_DOC("Begin multi-line mode. In multi-line mode characters are inserted a
Buffer_Edit *edits = edit;
for (int32_t i = rect.line0; i <= rect.line1; ++i){
Partial_Cursor cursor = {0};
Partial_Cursor cursor = {};
if (buffer_compute_cursor(app, &buffer, seek_line_char(i, pos+1), &cursor)){
edit->str_start = 0;
@ -173,7 +173,7 @@ CUSTOM_DOC("Begin multi-line mode. In multi-line mode characters are inserted a
Buffer_Edit *edits = edit;
for (int32_t i = rect.line0; i <= rect.line1; ++i){
Partial_Cursor cursor = {0};
Partial_Cursor cursor = {};
if (buffer_compute_cursor(app, &buffer, seek_line_char(i, pos+1), &cursor)){
edit->str_start = 0;
@ -300,18 +300,18 @@ static void
multi_paste_interactive_up_down(Application_Links *app, int32_t paste_count, int32_t clip_count){
View_Summary view = get_active_view(app, AccessOpen);
Range range = {0};
Range range = {};
range.min = range.max = view.cursor.pos;
bool32 old_to_new = true;
range = multi_paste_range(app, &view, range, paste_count, old_to_new);
Query_Bar bar = {0};
Query_Bar bar = {};
bar.prompt = make_lit_string("Up and Down to condense and expand paste stages; R to reverse order; Return to finish; Escape to abort.");
if (start_query_bar(app, &bar, 0) == 0) return;
User_Input in = {0};
User_Input in = {};
for (;;){
in = get_user_input(app, EventOnAnyKey, EventOnEsc);
if (in.abort) break;
@ -360,7 +360,7 @@ CUSTOM_COMMAND_SIG(multi_paste_interactive_quick){
int32_t clip_count = clipboard_count(app, 0);
if (clip_count > 0){
char string_space[256];
Query_Bar bar = {0};
Query_Bar bar = {};
bar.prompt = make_lit_string("How Many Slots To Paste: ");
bar.string = make_fixed_width_string(string_space);
query_user_number(app, &bar);
@ -397,7 +397,7 @@ CUSTOM_DOC("If the cursor is found to be on the name of a function parameter in
if (!result.in_whitespace){
static const int32_t stream_space_size = 512;
Cpp_Token stream_space[stream_space_size];
Stream_Tokens stream = {0};
Stream_Tokens stream = {};
if (init_stream_tokens(&stream, app, &buffer, result.token_index, stream_space, stream_space_size)){
int32_t token_index = result.token_index;
@ -554,7 +554,7 @@ write_explicit_enum_values_parameters(Application_Links *app, Write_Explicit_Enu
if (buffer_get_token_index(app, &buffer, view.cursor.pos, &result)){
if (!result.in_whitespace){
Cpp_Token stream_space[32];
Stream_Tokens stream = {0};
Stream_Tokens stream = {};
if (init_stream_tokens(&stream, app, &buffer, result.token_index, stream_space, 32)){
int32_t token_index = result.token_index;
@ -725,8 +725,8 @@ replace_all_occurrences_parameters(Application_Links *app, Heap *heap, Partition
for (bool32 got_all_occurrences = false;
!got_all_occurrences;){
// Initialize a generic search all buffers
Search_Set set = {0};
Search_Iter iter = {0};
Search_Set set = {};
Search_Iter iter = {};
initialize_generic_search_all_buffers(app, heap, &target_string, 1, SearchFlag_MatchSubstring, 0, 0, &set, &iter);
// Visit all locations and create replacement list

View File

@ -200,7 +200,7 @@ get_file_list(Partition *part, Filename_Character *pattern, File_Filter *filter)
// TODO(allen): // TODO(allen): // TODO(allen): // TODO(allen): // TODO(allen):
// Get this working with the new search by pattern structure!!!
WIN32_FIND_DATA find_data = {0};
WIN32_FIND_DATA find_data = {};
HANDLE search = FindFirstFile(pattern, &find_data);
if (search == INVALID_HANDLE_VALUE){
fprintf(stdout, "fatal error: could not begin a file search\n");
@ -231,7 +231,7 @@ get_file_list(Partition *part, Filename_Character *pattern, File_Filter *filter)
}while(more_files);
FindClose(search);
Cross_Platform_File_List list = {0};
Cross_Platform_File_List list = {};
Temp_Memory part_reset = begin_temp_memory(part);
int32_t rounded_char_size = (character_count*sizeof(Filename_Character) + 7)&(~7);
@ -311,7 +311,7 @@ static bool32
match_pattern(Filename_Character *name, Filename_Character *pattern){
bool32 match = false;
if (sizeof(*name) == 1){
Absolutes absolutes = {0};
Absolutes absolutes = {};
String pattern_str = make_string_slowly(pattern);
get_absolutes(pattern_str, &absolutes, false, false);
match = wildcard_match_c(&absolutes, name, false);
@ -397,7 +397,7 @@ get_file_list(Partition *part, Filename_Character *pattern, File_Filter *filter)
}
}
Cross_Platform_File_List list = {0};
Cross_Platform_File_List list = {};
Temp_Memory part_reset = begin_temp_memory(part);
int32_t rounded_char_size = (character_count*sizeof(Filename_Character) + 7)&(~7);
@ -479,7 +479,7 @@ get_file_list(Partition *part, Filename_Character *pattern, File_Filter *filter)
static String
file_dump(Partition *part, char *name){
String text = {0};
String text = {};
FILE *file = fopen(name, "rb");
if (file != 0){

View File

@ -7,7 +7,7 @@
static Face_Description
get_buffer_face_description(Application_Links *app, Buffer_Summary *buffer){
Face_ID current_id = get_face_id(app, buffer);
Face_Description description = {0};
Face_Description description = {};
if (current_id != 0){
description = get_face_description(app, current_id);
}

View File

@ -15,11 +15,11 @@
static Get_Positions_Results
get_function_positions(Application_Links *app, Buffer_Summary *buffer, int32_t token_index, Function_Positions *positions_array, int32_t positions_max){
Get_Positions_Results result = {0};
Get_Positions_Results result = {};
static const int32_t token_chunk_size = 512;
Cpp_Token token_chunk[token_chunk_size];
Stream_Tokens token_stream = {0};
Stream_Tokens token_stream = {};
if (init_stream_tokens(&token_stream, app, buffer, token_index, token_chunk, token_chunk_size)){
int32_t nest_level = 0;
@ -171,7 +171,7 @@ print_positions(Application_Links *app, Buffer_Summary *buffer, Function_Positio
static const int32_t sig_chunk_size = 64;
Cpp_Token sig_chunk[sig_chunk_size];
Stream_Tokens sig_stream = {0};
Stream_Tokens sig_stream = {};
if (init_stream_tokens(&sig_stream, app, buffer, local_index, sig_chunk, sig_chunk_size)){
bool32 still_looping = false;
do{

View File

@ -237,222 +237,222 @@ int32_t source_name_len;
int32_t line_number;
};
static Command_Metadata fcoder_metacmd_table[216] = {
{ PROC_LINKS(allow_mouse, 0), "allow_mouse", 11, "Shows the mouse and causes all mouse input to be processed normally.", 68, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 240 },
{ PROC_LINKS(auto_tab_line_at_cursor, 0), "auto_tab_line_at_cursor", 23, "Auto-indents the line on which the cursor sits.", 47, "c:\\4ed\\code\\4coder_auto_indent.cpp", 34, 722 },
{ PROC_LINKS(auto_tab_range, 0), "auto_tab_range", 14, "Auto-indents the range between the cursor and the mark.", 55, "c:\\4ed\\code\\4coder_auto_indent.cpp", 34, 733 },
{ PROC_LINKS(auto_tab_whole_file, 0), "auto_tab_whole_file", 19, "Audo-indents the entire current buffer.", 39, "c:\\4ed\\code\\4coder_auto_indent.cpp", 34, 712 },
{ PROC_LINKS(backspace_char, 0), "backspace_char", 14, "Deletes the character to the left of the cursor.", 48, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 69 },
{ PROC_LINKS(backspace_word, 0), "backspace_word", 14, "Delete characters between the cursor position and the first alphanumeric boundary to the left.", 94, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1258 },
{ PROC_LINKS(basic_change_active_panel, 0), "basic_change_active_panel", 25, "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.", 132, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 476 },
{ PROC_LINKS(build_in_build_panel, 0), "build_in_build_panel", 20, "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.", 230, "c:\\4ed\\code\\4coder_build_commands.cpp", 37, 187 },
{ PROC_LINKS(build_search, 0), "build_search", 12, "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*.", 153, "c:\\4ed\\code\\4coder_build_commands.cpp", 37, 155 },
{ PROC_LINKS(center_view, 0), "center_view", 11, "Centers the view vertically on the line on which the cursor sits.", 65, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 118 },
{ 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, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 144 },
{ 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, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 154 },
{ PROC_LINKS(change_to_build_panel, 0), "change_to_build_panel", 21, "If the special build panel is open, makes the build panel the active panel.", 75, "c:\\4ed\\code\\4coder_build_commands.cpp", 37, 209 },
{ PROC_LINKS(clean_all_lines, 0), "clean_all_lines", 15, "Removes trailing whitespace from all lines in the current buffer.", 65, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 411 },
{ PROC_LINKS(click_set_cursor, 0), "click_set_cursor", 16, "Sets the cursor position to the mouse position.", 47, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 185 },
{ PROC_LINKS(click_set_cursor_and_mark, 0), "click_set_cursor_and_mark", 25, "Sets the cursor position and mark to the mouse position.", 56, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 172 },
{ PROC_LINKS(click_set_cursor_if_lbutton, 0), "click_set_cursor_if_lbutton", 27, "If the mouse left button is pressed, sets the cursor position to the mouse position.", 84, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 198 },
{ PROC_LINKS(click_set_mark, 0), "click_set_mark", 14, "Sets the mark position to the mouse position.", 45, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 213 },
{ PROC_LINKS(close_all_code, 0), "close_all_code", 14, "Closes any buffer with a filename ending with an extension configured to be recognized as a code file type.", 107, "c:\\4ed\\code\\4coder_project_commands.cpp", 39, 1060 },
{ PROC_LINKS(close_build_panel, 0), "close_build_panel", 17, "If the special build panel is open, closes it.", 46, "c:\\4ed\\code\\4coder_build_commands.cpp", 37, 203 },
{ PROC_LINKS(close_panel, 0), "close_panel", 11, "Closes the currently active panel if it is not the only panel open.", 67, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 484 },
{ PROC_LINKS(command_lister, 0), "command_lister", 14, "Opens an interactive list of all registered commands.", 53, "c:\\4ed\\code\\4coder_lists.cpp", 28, 938 },
{ PROC_LINKS(copy, 0), "copy", 4, "Copy the text in the range from the cursor to the mark onto the clipboard.", 74, "c:\\4ed\\code\\4coder_clipboard.cpp", 32, 26 },
{ PROC_LINKS(cursor_mark_swap, 0), "cursor_mark_swap", 16, "Swaps the position of the cursor and the mark.", 46, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 96 },
{ PROC_LINKS(cut, 0), "cut", 3, "Cut the text in the range from the cursor to the mark onto the clipboard.", 73, "c:\\4ed\\code\\4coder_clipboard.cpp", 32, 35 },
{ PROC_LINKS(decrease_face_size, 0), "decrease_face_size", 18, "Decrease the size of the face used by the current buffer.", 57, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 574 },
{ PROC_LINKS(decrease_line_wrap, 0), "decrease_line_wrap", 18, "Decrases the current buffer's width for line wrapping.", 54, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 551 },
{ PROC_LINKS(delete_char, 0), "delete_char", 11, "Deletes the character to the right of the cursor.", 49, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 51 },
{ PROC_LINKS(delete_current_scope, 0), "delete_current_scope", 20, "Deletes the braces surrounding the currently selected scope. Leaves the contents within the scope.", 99, "c:\\4ed\\code\\4coder_scope_commands.cpp", 37, 526 },
{ PROC_LINKS(delete_file_query, 0), "delete_file_query", 17, "Deletes the file of the current buffer if 4coder has the appropriate access rights. Will ask the user for confirmation first.", 125, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1121 },
{ PROC_LINKS(delete_line, 0), "delete_line", 11, "Delete the line the on which the cursor sits.", 45, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1371 },
{ PROC_LINKS(delete_range, 0), "delete_range", 12, "Deletes the text in the range between the cursor and the mark.", 62, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 106 },
{ PROC_LINKS(delete_word, 0), "delete_word", 11, "Delete characters between the cursor position and the first alphanumeric boundary to the right.", 95, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1264 },
{ PROC_LINKS(duplicate_line, 0), "duplicate_line", 14, "Create a copy of the line on which the cursor sits.", 51, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1349 },
{ PROC_LINKS(eol_dosify, 0), "eol_dosify", 10, "Puts the buffer in DOS line ending mode.", 40, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 604 },
{ PROC_LINKS(eol_nixify, 0), "eol_nixify", 10, "Puts the buffer in NIX line ending mode.", 40, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 612 },
{ PROC_LINKS(execute_any_cli, 0), "execute_any_cli", 15, "Queries for an output buffer name and system command, runs the system command as a CLI and prints the output to the specified buffer.", 133, "c:\\4ed\\code\\4coder_system_command.cpp", 37, 23 },
{ PROC_LINKS(execute_previous_cli, 0), "execute_previous_cli", 20, "If the command execute_any_cli has already been used, this will execute a CLI reusing the most recent buffer name and command.", 126, "c:\\4ed\\code\\4coder_system_command.cpp", 37, 7 },
{ PROC_LINKS(exit_4coder, 0), "exit_4coder", 11, "Attempts to close 4coder.", 25, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 620 },
{ PROC_LINKS(goto_beginning_of_file, 0), "goto_beginning_of_file", 22, "Sets the cursor to the beginning of the file.", 45, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1177 },
{ PROC_LINKS(goto_end_of_file, 0), "goto_end_of_file", 16, "Sets the cursor to the end of the file.", 39, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1185 },
{ PROC_LINKS(goto_first_jump_direct, 0), "goto_first_jump_direct", 22, "If a buffer containing jump locations has been locked in, goes to the first jump in the buffer.", 95, "c:\\4ed\\code\\4coder_jump_direct.cpp", 34, 84 },
{ 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, "c:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 550 },
{ PROC_LINKS(goto_first_jump_sticky, 0), "goto_first_jump_sticky", 22, "If a buffer containing jump locations has been locked in, goes to the first jump in the buffer.", 95, "c:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 532 },
{ PROC_LINKS(goto_jump_at_cursor_direct, 0), "goto_jump_at_cursor_direct", 26, "If the cursor is found to be on a jump location, parses the jump location and brings up the file and position in another view and changes the active panel to the view containing the jump.", 187, "c:\\4ed\\code\\4coder_jump_direct.cpp", 34, 8 },
{ PROC_LINKS(goto_jump_at_cursor_same_panel_direct, 0), "goto_jump_at_cursor_same_panel_direct", 37, "If the cursor is found to be on a jump location, parses the jump location and brings up the file and position in this view, losing the compilation output or jump list..", 168, "c:\\4ed\\code\\4coder_jump_direct.cpp", 34, 29 },
{ PROC_LINKS(goto_jump_at_cursor_same_panel_sticky, 0), "goto_jump_at_cursor_same_panel_sticky", 37, "If the cursor is found to be on a jump location, parses the jump location and brings up the file and position in this view, losing the compilation output or jump list.", 167, "c:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 376 },
{ PROC_LINKS(goto_jump_at_cursor_sticky, 0), "goto_jump_at_cursor_sticky", 26, "If the cursor is found to be on a jump location, parses the jump location and brings up the file and position in another view and changes the active panel to the view containing the jump.", 187, "c:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 348 },
{ PROC_LINKS(goto_line, 0), "goto_line", 9, "Queries the user for a number, and jumps the cursor to the corresponding line.", 78, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 628 },
{ PROC_LINKS(goto_next_jump_direct, 0), "goto_next_jump_direct", 21, "If a buffer containing jump locations has been locked in, goes to the next jump in the buffer, skipping sub jump locations.", 123, "c:\\4ed\\code\\4coder_jump_direct.cpp", 34, 48 },
{ PROC_LINKS(goto_next_jump_no_skips_direct, 0), "goto_next_jump_no_skips_direct", 30, "If a buffer containing jump locations has been locked in, goes to the next jump in the buffer, and does not skip sub jump locations.", 132, "c:\\4ed\\code\\4coder_jump_direct.cpp", 34, 66 },
{ PROC_LINKS(goto_next_jump_no_skips_sticky, 0), "goto_next_jump_no_skips_sticky", 30, "If a buffer containing jump locations has been locked in, goes to the next jump in the buffer, and does not skip sub jump locations.", 132, "c:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 501 },
{ PROC_LINKS(goto_next_jump_sticky, 0), "goto_next_jump_sticky", 21, "If a buffer containing jump locations has been locked in, goes to the next jump in the buffer, skipping sub jump locations.", 123, "c:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 471 },
{ PROC_LINKS(goto_prev_jump_direct, 0), "goto_prev_jump_direct", 21, "If a buffer containing jump locations has been locked in, goes to the previous jump in the buffer, skipping sub jump locations.", 127, "c:\\4ed\\code\\4coder_jump_direct.cpp", 34, 57 },
{ PROC_LINKS(goto_prev_jump_no_skips_direct, 0), "goto_prev_jump_no_skips_direct", 30, "If a buffer containing jump locations has been locked in, goes to the previous jump in the buffer, and does not skip sub jump locations.", 136, "c:\\4ed\\code\\4coder_jump_direct.cpp", 34, 75 },
{ PROC_LINKS(goto_prev_jump_no_skips_sticky, 0), "goto_prev_jump_no_skips_sticky", 30, "If a buffer containing jump locations has been locked in, goes to the previous jump in the buffer, and does not skip sub jump locations.", 136, "c:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 517 },
{ PROC_LINKS(goto_prev_jump_sticky, 0), "goto_prev_jump_sticky", 21, "If a buffer containing jump locations has been locked in, goes to the previous jump in the buffer, skipping sub jump locations.", 127, "c:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 487 },
{ PROC_LINKS(hide_filebar, 0), "hide_filebar", 12, "Sets the current view to hide it's filebar.", 43, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 514 },
{ PROC_LINKS(hide_scrollbar, 0), "hide_scrollbar", 14, "Sets the current view to hide it's scrollbar.", 45, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 500 },
{ PROC_LINKS(if0_off, 0), "if0_off", 7, "Surround the range between the cursor and mark with an '#if 0' and an '#endif'", 78, "c:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 81 },
{ PROC_LINKS(increase_face_size, 0), "increase_face_size", 18, "Increase the size of the face used by the current buffer.", 57, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 562 },
{ PROC_LINKS(increase_line_wrap, 0), "increase_line_wrap", 18, "Increases the current buffer's width for line wrapping.", 55, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 540 },
{ PROC_LINKS(interactive_kill_buffer, 0), "interactive_kill_buffer", 23, "Interactively kill an open buffer.", 34, "c:\\4ed\\code\\4coder_lists.cpp", 28, 751 },
{ PROC_LINKS(interactive_new, 0), "interactive_new", 15, "Interactively creates a new file.", 33, "c:\\4ed\\code\\4coder_lists.cpp", 28, 856 },
{ PROC_LINKS(interactive_open, 0), "interactive_open", 16, "Interactively opens a file.", 27, "c:\\4ed\\code\\4coder_lists.cpp", 28, 884 },
{ PROC_LINKS(interactive_open_or_new, 0), "interactive_open_or_new", 23, "Interactively open a file out of the file system.", 49, "c:\\4ed\\code\\4coder_lists.cpp", 28, 822 },
{ PROC_LINKS(interactive_switch_buffer, 0), "interactive_switch_buffer", 25, "Interactively switch to an open buffer.", 39, "c:\\4ed\\code\\4coder_lists.cpp", 28, 732 },
{ PROC_LINKS(kill_buffer, 0), "kill_buffer", 11, "Kills the current buffer.", 25, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1541 },
{ PROC_LINKS(left_adjust_view, 0), "left_adjust_view", 16, "Sets the left size of the view near the x position of the cursor.", 65, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 133 },
{ PROC_LINKS(list_all_functions_all_buffers, 0), "list_all_functions_all_buffers", 30, "Creates a jump list of lines from all buffers that appear to define or declare functions.", 89, "c:\\4ed\\code\\4coder_function_list.cpp", 36, 358 },
{ PROC_LINKS(list_all_functions_all_buffers_lister, 0), "list_all_functions_all_buffers_lister", 37, "Creates a lister of locations that look like function definitions and declarations all buffers.", 95, "c:\\4ed\\code\\4coder_function_list.cpp", 36, 364 },
{ PROC_LINKS(list_all_functions_current_buffer, 0), "list_all_functions_current_buffer", 33, "Creates a jump list of lines of the current buffer that appear to define or declare functions.", 94, "c:\\4ed\\code\\4coder_function_list.cpp", 36, 335 },
{ PROC_LINKS(list_all_functions_current_buffer_lister, 0), "list_all_functions_current_buffer_lister", 40, "Creates a lister of locations that look like function definitions and declarations in the buffer.", 97, "c:\\4ed\\code\\4coder_function_list.cpp", 36, 345 },
{ PROC_LINKS(list_all_locations, 0), "list_all_locations", 18, "Queries the user for a string and lists all exact case-sensitive matches found in all open buffers.", 99, "c:\\4ed\\code\\4coder_search.cpp", 29, 769 },
{ PROC_LINKS(list_all_locations_case_insensitive, 0), "list_all_locations_case_insensitive", 35, "Queries the user for a string and lists all exact case-insensitive matches found in all open buffers.", 101, "c:\\4ed\\code\\4coder_search.cpp", 29, 783 },
{ PROC_LINKS(list_all_locations_of_identifier, 0), "list_all_locations_of_identifier", 32, "Reads a token or word under the cursor and lists all exact case-sensitive mathces in all open buffers.", 102, "c:\\4ed\\code\\4coder_search.cpp", 29, 797 },
{ PROC_LINKS(list_all_locations_of_identifier_case_insensitive, 0), "list_all_locations_of_identifier_case_insensitive", 49, "Reads a token or word under the cursor and lists all exact case-insensitive mathces in all open buffers.", 104, "c:\\4ed\\code\\4coder_search.cpp", 29, 804 },
{ PROC_LINKS(list_all_locations_of_selection, 0), "list_all_locations_of_selection", 31, "Reads the string in the selected range and lists all exact case-sensitive mathces in all open buffers.", 102, "c:\\4ed\\code\\4coder_search.cpp", 29, 811 },
{ PROC_LINKS(list_all_locations_of_selection_case_insensitive, 0), "list_all_locations_of_selection_case_insensitive", 48, "Reads the string in the selected range and lists all exact case-insensitive mathces in all open buffers.", 104, "c:\\4ed\\code\\4coder_search.cpp", 29, 818 },
{ PROC_LINKS(list_all_locations_of_type_definition, 0), "list_all_locations_of_type_definition", 37, "Queries user for string, lists all locations of strings that appear to define a type whose name matches the input string.", 121, "c:\\4ed\\code\\4coder_search.cpp", 29, 825 },
{ PROC_LINKS(list_all_locations_of_type_definition_of_identifier, 0), "list_all_locations_of_type_definition_of_identifier", 51, "Reads a token or word under the cursor and lists all locations of strings that appear to define a type whose name matches it.", 125, "c:\\4ed\\code\\4coder_search.cpp", 29, 836 },
{ PROC_LINKS(list_all_substring_locations, 0), "list_all_substring_locations", 28, "Queries the user for a string and lists all case-sensitive substring matches found in all open buffers.", 103, "c:\\4ed\\code\\4coder_search.cpp", 29, 776 },
{ PROC_LINKS(list_all_substring_locations_case_insensitive, 0), "list_all_substring_locations_case_insensitive", 45, "Queries the user for a string and lists all case-insensitive substring matches found in all open buffers.", 105, "c:\\4ed\\code\\4coder_search.cpp", 29, 790 },
{ PROC_LINKS(lister__activate, 0), "lister__activate", 16, "A lister mode command that activates the list's action on the highlighted item.", 79, "c:\\4ed\\code\\4coder_lists.cpp", 28, 15 },
{ PROC_LINKS(lister__backspace_text_field, 0), "lister__backspace_text_field", 28, "A lister mode command that dispatches to the lister's backspace text field handler.", 83, "c:\\4ed\\code\\4coder_lists.cpp", 28, 41 },
{ PROC_LINKS(lister__backspace_text_field__default, 0), "lister__backspace_text_field__default", 37, "A lister mode command that backspaces one character from the text field.", 72, "c:\\4ed\\code\\4coder_lists.cpp", 28, 146 },
{ PROC_LINKS(lister__backspace_text_field__file_path, 0), "lister__backspace_text_field__file_path", 39, "A lister mode command that backspaces one character from the text field of a file system list.", 94, "c:\\4ed\\code\\4coder_lists.cpp", 28, 218 },
{ PROC_LINKS(lister__mouse_press, 0), "lister__mouse_press", 19, "A lister mode command that beings a click interaction with a list item under the mouse.", 87, "c:\\4ed\\code\\4coder_lists.cpp", 28, 86 },
{ PROC_LINKS(lister__mouse_release, 0), "lister__mouse_release", 21, "A lister mode command that ends a click interaction with a list item under the mouse, possibly activating it.", 109, "c:\\4ed\\code\\4coder_lists.cpp", 28, 98 },
{ PROC_LINKS(lister__move_down, 0), "lister__move_down", 17, "A lister mode command that dispatches to the lister's navigate down handler.", 76, "c:\\4ed\\code\\4coder_lists.cpp", 28, 61 },
{ PROC_LINKS(lister__move_down__default, 0), "lister__move_down__default", 26, "A lister mode command that moves the highlighted item one down in the list.", 75, "c:\\4ed\\code\\4coder_lists.cpp", 28, 177 },
{ PROC_LINKS(lister__move_up, 0), "lister__move_up", 15, "A lister mode command that dispatches to the lister's navigate up handler.", 74, "c:\\4ed\\code\\4coder_lists.cpp", 28, 51 },
{ PROC_LINKS(lister__move_up__default, 0), "lister__move_up__default", 24, "A lister mode command that moves the highlighted item one up in the list.", 73, "c:\\4ed\\code\\4coder_lists.cpp", 28, 161 },
{ PROC_LINKS(lister__quit, 0), "lister__quit", 12, "A lister mode command that quits the list without executing any actions.", 72, "c:\\4ed\\code\\4coder_lists.cpp", 28, 8 },
{ PROC_LINKS(lister__repaint, 0), "lister__repaint", 15, "A lister mode command that updates the lists UI data.", 53, "c:\\4ed\\code\\4coder_lists.cpp", 28, 115 },
{ PROC_LINKS(lister__wheel_scroll, 0), "lister__wheel_scroll", 20, "A lister mode command that scrolls the list in response to the mouse wheel.", 75, "c:\\4ed\\code\\4coder_lists.cpp", 28, 71 },
{ PROC_LINKS(lister__write_character, 0), "lister__write_character", 23, "A lister mode command that dispatches to the lister's write character handler.", 78, "c:\\4ed\\code\\4coder_lists.cpp", 28, 31 },
{ PROC_LINKS(lister__write_character__default, 0), "lister__write_character__default", 32, "A lister mode command that inserts a new character to the text field.", 69, "c:\\4ed\\code\\4coder_lists.cpp", 28, 126 },
{ PROC_LINKS(lister__write_character__file_path, 0), "lister__write_character__file_path", 34, "A lister mode command that inserts a character into the text field of a file system list.", 89, "c:\\4ed\\code\\4coder_lists.cpp", 28, 193 },
{ PROC_LINKS(lister__write_character__fixed_list, 0), "lister__write_character__fixed_list", 35, "A lister mode command that handles input for the fixed sure to kill list.", 73, "c:\\4ed\\code\\4coder_lists.cpp", 28, 253 },
{ PROC_LINKS(load_project, 0), "load_project", 12, "Looks for a project.4coder file in the current directory and tries to load it. Looks in parent directories until a project file is found or there are no more parents.", 167, "c:\\4ed\\code\\4coder_project_commands.cpp", 39, 1083 },
{ PROC_LINKS(make_directory_query, 0), "make_directory_query", 20, "Queries the user for a name and creates a new directory with the given name.", 76, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1229 },
{ PROC_LINKS(mouse_wheel_scroll, 0), "mouse_wheel_scroll", 18, "Reads the scroll wheel value from the mouse state and scrolls accordingly.", 74, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 226 },
{ PROC_LINKS(move_down, 0), "move_down", 9, "Moves the cursor down one line.", 31, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 290 },
{ PROC_LINKS(move_down_10, 0), "move_down_10", 12, "Moves the cursor down ten lines.", 32, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 302 },
{ PROC_LINKS(move_down_textual, 0), "move_down_textual", 17, "Moves down to the next line of actual text, regardless of line wrapping.", 72, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 308 },
{ PROC_LINKS(move_left, 0), "move_left", 9, "Moves the cursor one character to the left.", 43, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 339 },
{ PROC_LINKS(move_line_down, 0), "move_line_down", 14, "Swaps the line under the cursor with the line below it, and moves the cursor down with it.", 90, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1326 },
{ PROC_LINKS(move_line_up, 0), "move_line_up", 12, "Swaps the line under the cursor with the line above it, and moves the cursor up with it.", 88, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1262 },
{ PROC_LINKS(move_right, 0), "move_right", 10, "Moves the cursor one character to the right.", 44, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 349 },
{ PROC_LINKS(move_up, 0), "move_up", 7, "Moves the cursor up one line.", 29, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 284 },
{ PROC_LINKS(move_up_10, 0), "move_up_10", 10, "Moves the cursor up ten lines.", 30, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 296 },
{ PROC_LINKS(newline_or_goto_position_direct, 0), "newline_or_goto_position_direct", 31, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor.", 106, "c:\\4ed\\code\\4coder_jump_direct.cpp", 34, 101 },
{ PROC_LINKS(newline_or_goto_position_same_panel_direct, 0), "newline_or_goto_position_same_panel_direct", 42, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor_same_panel.", 117, "c:\\4ed\\code\\4coder_jump_direct.cpp", 34, 116 },
{ PROC_LINKS(newline_or_goto_position_same_panel_sticky, 0), "newline_or_goto_position_same_panel_sticky", 42, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor_same_panel.", 117, "c:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 588 },
{ PROC_LINKS(newline_or_goto_position_sticky, 0), "newline_or_goto_position_sticky", 31, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor.", 106, "c:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 573 },
{ PROC_LINKS(open_all_code, 0), "open_all_code", 13, "Open all code in the current directory. File types are determined by extensions. An extension is considered code based on the extensions specified in 4coder.config.", 164, "c:\\4ed\\code\\4coder_project_commands.cpp", 39, 1067 },
{ PROC_LINKS(open_all_code_recursive, 0), "open_all_code_recursive", 23, "Works as open_all_code but also runs in all subdirectories.", 59, "c:\\4ed\\code\\4coder_project_commands.cpp", 39, 1074 },
{ PROC_LINKS(open_color_tweaker, 0), "open_color_tweaker", 18, "Opens the 4coder theme selector list.", 37, "c:\\4ed\\code\\4coder_lists.cpp", 28, 900 },
{ PROC_LINKS(open_file_in_quotes, 0), "open_file_in_quotes", 19, "Reads a filename from surrounding '\"' characters and attempts to open the corresponding file.", 94, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1448 },
{ PROC_LINKS(open_in_other, 0), "open_in_other", 13, "Interactively opens a file in the other panel.", 46, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1599 },
{ PROC_LINKS(open_long_braces, 0), "open_long_braces", 16, "At the cursor, insert a '{' and '}' separated by a blank line.", 62, "c:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 57 },
{ PROC_LINKS(open_long_braces_break, 0), "open_long_braces_break", 22, "At the cursor, insert a '{' and '}break;' separated by a blank line.", 68, "c:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 73 },
{ PROC_LINKS(open_long_braces_semicolon, 0), "open_long_braces_semicolon", 26, "At the cursor, insert a '{' and '};' separated by a blank line.", 63, "c:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 65 },
{ PROC_LINKS(open_matching_file_cpp, 0), "open_matching_file_cpp", 22, "If the current file is a *.cpp or *.h, attempts to open the corresponding *.h or *.cpp file in the other view.", 110, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1484 },
{ PROC_LINKS(open_panel_hsplit, 0), "open_panel_hsplit", 17, "Create a new panel by horizontally splitting the active panel.", 62, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 173 },
{ PROC_LINKS(open_panel_vsplit, 0), "open_panel_vsplit", 17, "Create a new panel by vertically splitting the active panel.", 60, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 164 },
{ PROC_LINKS(page_down, 0), "page_down", 9, "Scrolls the view down one view height and moves the cursor down one view height.", 80, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 328 },
{ PROC_LINKS(page_up, 0), "page_up", 7, "Scrolls the view up one view height and moves the cursor up one view height.", 76, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 319 },
{ PROC_LINKS(paste, 0), "paste", 5, "At the cursor, insert the text at the top of the clipboard.", 59, "c:\\4ed\\code\\4coder_clipboard.cpp", 32, 46 },
{ PROC_LINKS(paste_and_indent, 0), "paste_and_indent", 16, "Paste from the top of clipboard and run auto-indent on the newly pasted text.", 77, "c:\\4ed\\code\\4coder_clipboard.cpp", 32, 134 },
{ PROC_LINKS(paste_next, 0), "paste_next", 10, "If the previous command was paste or paste_next, replaces the paste range with the next text down on the clipboard, otherwise operates as the paste command.", 156, "c:\\4ed\\code\\4coder_clipboard.cpp", 32, 85 },
{ PROC_LINKS(paste_next_and_indent, 0), "paste_next_and_indent", 21, "Paste the next item on the clipboard and run auto-indent on the newly pasted text.", 82, "c:\\4ed\\code\\4coder_clipboard.cpp", 32, 141 },
{ PROC_LINKS(place_in_scope, 0), "place_in_scope", 14, "Wraps the code contained in the range between cursor and mark with a new curly brace scope.", 91, "c:\\4ed\\code\\4coder_scope_commands.cpp", 37, 520 },
{ PROC_LINKS(project_command_lister, 0), "project_command_lister", 22, "Open a lister of all commands in the currently loaded project.", 62, "c:\\4ed\\code\\4coder_project_commands.cpp", 39, 1529 },
{ PROC_LINKS(project_fkey_command, 0), "project_fkey_command", 20, "Run an 'fkey command' configured in a project.4coder file. Determines the index of the 'fkey command' by which function key or numeric key was pressed to trigger the command.", 175, "c:\\4ed\\code\\4coder_project_commands.cpp", 39, 1090 },
{ PROC_LINKS(project_go_to_root_directory, 0), "project_go_to_root_directory", 28, "Changes 4coder's hot directory to the root directory of the currently loaded project. With no loaded project nothing hapepns.", 125, "c:\\4ed\\code\\4coder_project_commands.cpp", 39, 1115 },
{ PROC_LINKS(query_replace, 0), "query_replace", 13, "Queries the user for two strings, and incrementally replaces every occurence of the first string with the second string.", 120, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1005 },
{ PROC_LINKS(query_replace_identifier, 0), "query_replace_identifier", 24, "Queries the user for a string, and incrementally replace every occurence of the word or token found at the cursor with the specified string.", 140, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1029 },
{ PROC_LINKS(query_replace_selection, 0), "query_replace_selection", 23, "Queries the user for a string, and incrementally replace every occurence of the string found in the selected range with the specified string.", 141, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1047 },
{ PROC_LINKS(redo, 0), "redo", 4, "Advances forewards through the undo history.", 44, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1556 },
{ PROC_LINKS(reload_themes, 0), "reload_themes", 13, "Loads all the theme files in the theme folder, replacing duplicates with the new theme data.", 92, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1576 },
{ PROC_LINKS(remap_interactive, 0), "remap_interactive", 17, "Switch to a named key binding map.", 34, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 290 },
{ PROC_LINKS(rename_file_query, 0), "rename_file_query", 17, "Queries the user for a new name and renames the file of the current buffer, altering the buffer's name too.", 107, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1187 },
{ PROC_LINKS(reopen, 0), "reopen", 6, "Reopen the current buffer from the hard drive.", 46, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1562 },
{ PROC_LINKS(replace_in_range, 0), "replace_in_range", 16, "Queries the user for two strings, and replaces all occurences of the first string in the range between the cursor and the mark with the second string.", 150, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 886 },
{ PROC_LINKS(reverse_search, 0), "reverse_search", 14, "Begins an incremental search up through the current buffer for a user specified string.", 87, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 857 },
{ PROC_LINKS(reverse_search_identifier, 0), "reverse_search_identifier", 25, "Begins an incremental search up through the current buffer for the word or token under the cursor.", 98, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 875 },
{ PROC_LINKS(save, 0), "save", 4, "Saves the current buffer.", 25, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1568 },
{ PROC_LINKS(save_all_dirty_buffers, 0), "save_all_dirty_buffers", 22, "Saves all buffers marked dirty (showing the '*' indicator).", 59, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1091 },
{ PROC_LINKS(save_to_query, 0), "save_to_query", 13, "Queries the user for a file name and saves the contents of the current buffer, altering the buffer's name too.", 110, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1147 },
{ PROC_LINKS(scope_absorb_down, 0), "scope_absorb_down", 17, "If a scope is currently selected, and a statement or block statement is present below the current scope, the statement is moved into the scope.", 143, "c:\\4ed\\code\\4coder_scope_commands.cpp", 37, 777 },
{ PROC_LINKS(search, 0), "search", 6, "Begins an incremental search down through the current buffer for a user specified string.", 89, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 850 },
{ PROC_LINKS(search_identifier, 0), "search_identifier", 17, "Begins an incremental search down through the current buffer for the word or token under the cursor.", 100, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 864 },
{ PROC_LINKS(seek_alphanumeric_left, 0), "seek_alphanumeric_left", 22, "Seek left for boundary between alphanumeric characters and non-alphanumeric characters.", 87, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1238 },
{ PROC_LINKS(seek_alphanumeric_or_camel_left, 0), "seek_alphanumeric_or_camel_left", 31, "Seek left for boundary between alphanumeric characters or camel case word and non-alphanumeric characters.", 106, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1250 },
{ PROC_LINKS(seek_alphanumeric_or_camel_right, 0), "seek_alphanumeric_or_camel_right", 32, "Seek right for boundary between alphanumeric characters or camel case word and non-alphanumeric characters.", 107, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1244 },
{ PROC_LINKS(seek_alphanumeric_right, 0), "seek_alphanumeric_right", 23, "Seek right for boundary between alphanumeric characters and non-alphanumeric characters.", 88, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1232 },
{ PROC_LINKS(seek_beginning_of_line, 0), "seek_beginning_of_line", 22, "Seeks the cursor to the beginning of the visual line.", 53, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1131 },
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1111 },
{ PROC_LINKS(seek_end_of_line, 0), "seek_end_of_line", 16, "Seeks the cursor to the end of the visual line.", 47, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1143 },
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1121 },
{ PROC_LINKS(seek_token_left, 0), "seek_token_left", 15, "Seek left for the next beginning of a token.", 44, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1214 },
{ PROC_LINKS(seek_token_right, 0), "seek_token_right", 16, "Seek right for the next end of a token.", 39, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1208 },
{ PROC_LINKS(seek_white_or_token_left, 0), "seek_white_or_token_left", 24, "Seek left for the next end of a token or boundary between whitespace and non-whitespace.", 88, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1226 },
{ PROC_LINKS(seek_white_or_token_right, 0), "seek_white_or_token_right", 25, "Seek right for the next end of a token or boundary between whitespace and non-whitespace.", 89, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1220 },
{ PROC_LINKS(seek_whitespace_down, 0), "seek_whitespace_down", 20, "Seeks the cursor down to the next blank line.", 45, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1101 },
{ PROC_LINKS(seek_whitespace_down_end_line, 0), "seek_whitespace_down_end_line", 29, "Seeks the cursor down to the next blank line and places it at the end of the line.", 82, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1166 },
{ PROC_LINKS(seek_whitespace_left, 0), "seek_whitespace_left", 20, "Seek left for the next boundary between whitespace and non-whitespace.", 70, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1202 },
{ PROC_LINKS(seek_whitespace_right, 0), "seek_whitespace_right", 21, "Seek right for the next boundary between whitespace and non-whitespace.", 71, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1196 },
{ PROC_LINKS(seek_whitespace_up, 0), "seek_whitespace_up", 18, "Seeks the cursor up to the next blank line.", 43, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1091 },
{ PROC_LINKS(seek_whitespace_up_end_line, 0), "seek_whitespace_up_end_line", 27, "Seeks the cursor up to the next blank line and places it at the end of the line.", 80, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1155 },
{ PROC_LINKS(select_all, 0), "select_all", 10, "Puts the cursor at the top of the file, and the mark at the bottom of the file.", 79, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 359 },
{ PROC_LINKS(select_next_scope_absolute, 0), "select_next_scope_absolute", 26, "Finds the first scope started by '{' after the cursor and puts the cursor and mark on the '{' and '}'.", 102, "c:\\4ed\\code\\4coder_scope_commands.cpp", 37, 401 },
{ PROC_LINKS(select_prev_scope_absolute, 0), "select_prev_scope_absolute", 26, "Finds the first scope started by '{' before the cursor and puts the cursor and mark on the '{' and '}'.", 103, "c:\\4ed\\code\\4coder_scope_commands.cpp", 37, 421 },
{ PROC_LINKS(select_surrounding_scope, 0), "select_surrounding_scope", 24, "Finds the scope enclosed by '{' '}' surrounding the cursor and puts the cursor and mark on the '{' and '}'.", 107, "c:\\4ed\\code\\4coder_scope_commands.cpp", 37, 385 },
{ PROC_LINKS(set_bindings_choose, 0), "set_bindings_choose", 19, "Remap keybindings using the 'choose' mapping rule.", 50, "c:\\4ed\\code\\4coder_remapping_commands.cpp", 41, 47 },
{ PROC_LINKS(set_bindings_default, 0), "set_bindings_default", 20, "Remap keybindings using the 'default' mapping rule.", 51, "c:\\4ed\\code\\4coder_remapping_commands.cpp", 41, 61 },
{ PROC_LINKS(set_bindings_mac_default, 0), "set_bindings_mac_default", 24, "Remap keybindings using the 'mac-default' mapping rule.", 55, "c:\\4ed\\code\\4coder_remapping_commands.cpp", 41, 75 },
{ PROC_LINKS(set_mark, 0), "set_mark", 8, "Sets the mark to the current position of the cursor.", 52, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 88 },
{ PROC_LINKS(set_mode_to_notepad_like, 0), "set_mode_to_notepad_like", 24, "Sets the edit mode to Notepad like.", 35, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 258 },
{ PROC_LINKS(set_mode_to_original, 0), "set_mode_to_original", 20, "Sets the edit mode to 4coder original.", 38, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 252 },
{ PROC_LINKS(setup_build_bat, 0), "setup_build_bat", 15, "Queries the user for several configuration options and initializes a new build batch script.", 92, "c:\\4ed\\code\\4coder_project_commands.cpp", 39, 1500 },
{ PROC_LINKS(setup_build_bat_and_sh, 0), "setup_build_bat_and_sh", 22, "Queries the user for several configuration options and initializes a new build batch script.", 92, "c:\\4ed\\code\\4coder_project_commands.cpp", 39, 1512 },
{ PROC_LINKS(setup_build_sh, 0), "setup_build_sh", 14, "Queries the user for several configuration options and initializes a new build shell script.", 92, "c:\\4ed\\code\\4coder_project_commands.cpp", 39, 1506 },
{ PROC_LINKS(setup_new_project, 0), "setup_new_project", 17, "Queries the user for several configuration options and initializes a new 4coder project with build scripts for every OS.", 120, "c:\\4ed\\code\\4coder_project_commands.cpp", 39, 1493 },
{ PROC_LINKS(show_filebar, 0), "show_filebar", 12, "Sets the current view to show it's filebar.", 43, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 507 },
{ PROC_LINKS(show_scrollbar, 0), "show_scrollbar", 14, "Sets the current view to show it's scrollbar.", 45, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 493 },
{ PROC_LINKS(snipe_token_or_word, 0), "snipe_token_or_word", 19, "Delete a single, whole token on or to the left of the cursor and post it to the clipboard.", 90, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1270 },
{ PROC_LINKS(snipe_token_or_word_right, 0), "snipe_token_or_word_right", 25, "Delete a single, whole token on or to the right of the cursor and post it to the clipboard.", 91, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1276 },
{ PROC_LINKS(snippet_lister, 0), "snippet_lister", 14, "Opens a snippet lister for inserting whole pre-written snippets of text.", 72, "c:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 193 },
{ PROC_LINKS(suppress_mouse, 0), "suppress_mouse", 14, "Hides the mouse and causes all mosue input (clicks, position, wheel) to be ignored.", 83, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 234 },
{ PROC_LINKS(swap_buffers_between_panels, 0), "swap_buffers_between_panels", 27, "Set the other non-active panel to view the buffer that the active panel views, and switch to that panel.", 104, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1508 },
{ PROC_LINKS(to_lowercase, 0), "to_lowercase", 12, "Converts all ascii text in the range between the cursor and the mark to lowercase.", 82, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 391 },
{ PROC_LINKS(to_uppercase, 0), "to_uppercase", 12, "Converts all ascii text in the range between the cursor and the mark to uppercase.", 82, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 371 },
{ PROC_LINKS(toggle_filebar, 0), "toggle_filebar", 14, "Toggles the visibility status of the current view's filebar.", 60, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 521 },
{ PROC_LINKS(toggle_fullscreen, 0), "toggle_fullscreen", 17, "Toggle fullscreen mode on or off. The change(s) do not take effect until the next frame.", 89, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 282 },
{ PROC_LINKS(toggle_highlight_enclosing_scopes, 0), "toggle_highlight_enclosing_scopes", 33, "In code files scopes surrounding the cursor are highlighted with distinguishing colors.", 87, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 270 },
{ PROC_LINKS(toggle_highlight_line_at_cursor, 0), "toggle_highlight_line_at_cursor", 31, "Toggles the line highlight at the cursor.", 41, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 264 },
{ PROC_LINKS(toggle_line_wrap, 0), "toggle_line_wrap", 16, "Toggles the current buffer's line wrapping status.", 50, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 530 },
{ PROC_LINKS(toggle_mouse, 0), "toggle_mouse", 12, "Toggles the mouse suppression mode, see suppress_mouse and allow_mouse.", 71, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 246 },
{ PROC_LINKS(toggle_paren_matching_helper, 0), "toggle_paren_matching_helper", 28, "In code files matching parentheses pairs are colored with distinguishing colors.", 80, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 276 },
{ PROC_LINKS(toggle_show_whitespace, 0), "toggle_show_whitespace", 22, "Toggles the current buffer's whitespace visibility status.", 58, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 597 },
{ PROC_LINKS(toggle_virtual_whitespace, 0), "toggle_virtual_whitespace", 25, "Toggles the current buffer's virtual whitespace status.", 55, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 586 },
{ PROC_LINKS(undo, 0), "undo", 4, "Advances backwards through the undo history.", 44, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1550 },
{ PROC_LINKS(view_buffer_other_panel, 0), "view_buffer_other_panel", 23, "Set the other non-active panel to view the buffer that the active panel views, and switch to that panel.", 104, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1498 },
{ 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, "c:\\4ed\\code\\4coder_jump_lister.cpp", 34, 108 },
{ PROC_LINKS(word_complete, 0), "word_complete", 13, "Iteratively tries completing the word to the left of the cursor with other words in open buffers that have the same prefix string.", 130, "c:\\4ed\\code\\4coder_search.cpp", 29, 856 },
{ PROC_LINKS(write_and_auto_tab, 0), "write_and_auto_tab", 18, "Inserts a character and auto-indents the line on which the cursor sits.", 71, "c:\\4ed\\code\\4coder_auto_indent.cpp", 34, 745 },
{ PROC_LINKS(write_block, 0), "write_block", 11, "At the cursor, insert a block comment.", 38, "c:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 105 },
{ PROC_LINKS(write_character, 0), "write_character", 15, "Inserts whatever character was used to trigger this command.", 60, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 35 },
{ PROC_LINKS(write_hack, 0), "write_hack", 10, "At the cursor, insert a '// HACK' comment, includes user name if it was specified in config.4coder.", 99, "c:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 93 },
{ PROC_LINKS(write_note, 0), "write_note", 10, "At the cursor, insert a '// NOTE' comment, includes user name if it was specified in config.4coder.", 99, "c:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 99 },
{ PROC_LINKS(write_todo, 0), "write_todo", 10, "At the cursor, insert a '// TODO' comment, includes user name if it was specified in config.4coder.", 99, "c:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 87 },
{ PROC_LINKS(write_underscore, 0), "write_underscore", 16, "Inserts an underscore.", 22, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 44 },
{ PROC_LINKS(write_zero_struct, 0), "write_zero_struct", 17, "At the cursor, insert a ' = {};'.", 33, "c:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 111 },
{ PROC_LINKS(allow_mouse, 0), "allow_mouse", 11, "Shows the mouse and causes all mouse input to be processed normally.", 68, "w:\\4ed\\code\\4coder_default_framework.cpp", 40, 240 },
{ PROC_LINKS(auto_tab_line_at_cursor, 0), "auto_tab_line_at_cursor", 23, "Auto-indents the line on which the cursor sits.", 47, "w:\\4ed\\code\\4coder_auto_indent.cpp", 34, 722 },
{ PROC_LINKS(auto_tab_range, 0), "auto_tab_range", 14, "Auto-indents the range between the cursor and the mark.", 55, "w:\\4ed\\code\\4coder_auto_indent.cpp", 34, 733 },
{ PROC_LINKS(auto_tab_whole_file, 0), "auto_tab_whole_file", 19, "Audo-indents the entire current buffer.", 39, "w:\\4ed\\code\\4coder_auto_indent.cpp", 34, 712 },
{ PROC_LINKS(backspace_char, 0), "backspace_char", 14, "Deletes the character to the left of the cursor.", 48, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 69 },
{ PROC_LINKS(backspace_word, 0), "backspace_word", 14, "Delete characters between the cursor position and the first alphanumeric boundary to the left.", 94, "w:\\4ed\\code\\4coder_seek.cpp", 27, 1258 },
{ PROC_LINKS(basic_change_active_panel, 0), "basic_change_active_panel", 25, "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.", 132, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 476 },
{ PROC_LINKS(build_in_build_panel, 0), "build_in_build_panel", 20, "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.", 230, "w:\\4ed\\code\\4coder_build_commands.cpp", 37, 187 },
{ PROC_LINKS(build_search, 0), "build_search", 12, "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*.", 153, "w:\\4ed\\code\\4coder_build_commands.cpp", 37, 155 },
{ PROC_LINKS(center_view, 0), "center_view", 11, "Centers the view vertically on the line on which the cursor sits.", 65, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 118 },
{ 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\\4coder_default_framework.cpp", 40, 144 },
{ 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\\4coder_default_framework.cpp", 40, 154 },
{ PROC_LINKS(change_to_build_panel, 0), "change_to_build_panel", 21, "If the special build panel is open, makes the build panel the active panel.", 75, "w:\\4ed\\code\\4coder_build_commands.cpp", 37, 209 },
{ PROC_LINKS(clean_all_lines, 0), "clean_all_lines", 15, "Removes trailing whitespace from all lines in the current buffer.", 65, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 411 },
{ PROC_LINKS(click_set_cursor, 0), "click_set_cursor", 16, "Sets the cursor position to the mouse position.", 47, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 185 },
{ PROC_LINKS(click_set_cursor_and_mark, 0), "click_set_cursor_and_mark", 25, "Sets the cursor position and mark to the mouse position.", 56, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 172 },
{ PROC_LINKS(click_set_cursor_if_lbutton, 0), "click_set_cursor_if_lbutton", 27, "If the mouse left button is pressed, sets the cursor position to the mouse position.", 84, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 198 },
{ PROC_LINKS(click_set_mark, 0), "click_set_mark", 14, "Sets the mark position to the mouse position.", 45, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 213 },
{ PROC_LINKS(close_all_code, 0), "close_all_code", 14, "Closes any buffer with a filename ending with an extension configured to be recognized as a code file type.", 107, "w:\\4ed\\code\\4coder_project_commands.cpp", 39, 1060 },
{ PROC_LINKS(close_build_panel, 0), "close_build_panel", 17, "If the special build panel is open, closes it.", 46, "w:\\4ed\\code\\4coder_build_commands.cpp", 37, 203 },
{ PROC_LINKS(close_panel, 0), "close_panel", 11, "Closes the currently active panel if it is not the only panel open.", 67, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 484 },
{ PROC_LINKS(command_lister, 0), "command_lister", 14, "Opens an interactive list of all registered commands.", 53, "w:\\4ed\\code\\4coder_lists.cpp", 28, 938 },
{ 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\\4coder_clipboard.cpp", 32, 26 },
{ PROC_LINKS(cursor_mark_swap, 0), "cursor_mark_swap", 16, "Swaps the position of the cursor and the mark.", 46, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 96 },
{ 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\\4coder_clipboard.cpp", 32, 35 },
{ PROC_LINKS(decrease_face_size, 0), "decrease_face_size", 18, "Decrease the size of the face used by the current buffer.", 57, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 574 },
{ PROC_LINKS(decrease_line_wrap, 0), "decrease_line_wrap", 18, "Decrases the current buffer's width for line wrapping.", 54, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 551 },
{ PROC_LINKS(delete_char, 0), "delete_char", 11, "Deletes the character to the right of the cursor.", 49, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 51 },
{ PROC_LINKS(delete_current_scope, 0), "delete_current_scope", 20, "Deletes the braces surrounding the currently selected scope. Leaves the contents within the scope.", 99, "w:\\4ed\\code\\4coder_scope_commands.cpp", 37, 526 },
{ PROC_LINKS(delete_file_query, 0), "delete_file_query", 17, "Deletes the file of the current buffer if 4coder has the appropriate access rights. Will ask the user for confirmation first.", 125, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1118 },
{ PROC_LINKS(delete_line, 0), "delete_line", 11, "Delete the line the on which the cursor sits.", 45, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1368 },
{ PROC_LINKS(delete_range, 0), "delete_range", 12, "Deletes the text in the range between the cursor and the mark.", 62, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 106 },
{ PROC_LINKS(delete_word, 0), "delete_word", 11, "Delete characters between the cursor position and the first alphanumeric boundary to the right.", 95, "w:\\4ed\\code\\4coder_seek.cpp", 27, 1264 },
{ PROC_LINKS(duplicate_line, 0), "duplicate_line", 14, "Create a copy of the line on which the cursor sits.", 51, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1346 },
{ PROC_LINKS(eol_dosify, 0), "eol_dosify", 10, "Puts the buffer in DOS line ending mode.", 40, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 604 },
{ PROC_LINKS(eol_nixify, 0), "eol_nixify", 10, "Puts the buffer in NIX line ending mode.", 40, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 612 },
{ PROC_LINKS(execute_any_cli, 0), "execute_any_cli", 15, "Queries for an output buffer name and system command, runs the system command as a CLI and prints the output to the specified buffer.", 133, "w:\\4ed\\code\\4coder_system_command.cpp", 37, 23 },
{ PROC_LINKS(execute_previous_cli, 0), "execute_previous_cli", 20, "If the command execute_any_cli has already been used, this will execute a CLI reusing the most recent buffer name and command.", 126, "w:\\4ed\\code\\4coder_system_command.cpp", 37, 7 },
{ PROC_LINKS(exit_4coder, 0), "exit_4coder", 11, "Attempts to close 4coder.", 25, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 620 },
{ 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\\4coder_seek.cpp", 27, 1177 },
{ 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\\4coder_seek.cpp", 27, 1185 },
{ PROC_LINKS(goto_first_jump_direct, 0), "goto_first_jump_direct", 22, "If a buffer containing jump locations has been locked in, goes to the first jump in the buffer.", 95, "w:\\4ed\\code\\4coder_jump_direct.cpp", 34, 84 },
{ 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\\4coder_jump_sticky.cpp", 34, 550 },
{ PROC_LINKS(goto_first_jump_sticky, 0), "goto_first_jump_sticky", 22, "If a buffer containing jump locations has been locked in, goes to the first jump in the buffer.", 95, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 532 },
{ PROC_LINKS(goto_jump_at_cursor_direct, 0), "goto_jump_at_cursor_direct", 26, "If the cursor is found to be on a jump location, parses the jump location and brings up the file and position in another view and changes the active panel to the view containing the jump.", 187, "w:\\4ed\\code\\4coder_jump_direct.cpp", 34, 8 },
{ PROC_LINKS(goto_jump_at_cursor_same_panel_direct, 0), "goto_jump_at_cursor_same_panel_direct", 37, "If the cursor is found to be on a jump location, parses the jump location and brings up the file and position in this view, losing the compilation output or jump list..", 168, "w:\\4ed\\code\\4coder_jump_direct.cpp", 34, 29 },
{ PROC_LINKS(goto_jump_at_cursor_same_panel_sticky, 0), "goto_jump_at_cursor_same_panel_sticky", 37, "If the cursor is found to be on a jump location, parses the jump location and brings up the file and position in this view, losing the compilation output or jump list.", 167, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 376 },
{ PROC_LINKS(goto_jump_at_cursor_sticky, 0), "goto_jump_at_cursor_sticky", 26, "If the cursor is found to be on a jump location, parses the jump location and brings up the file and position in another view and changes the active panel to the view containing the jump.", 187, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 348 },
{ PROC_LINKS(goto_line, 0), "goto_line", 9, "Queries the user for a number, and jumps the cursor to the corresponding line.", 78, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 628 },
{ PROC_LINKS(goto_next_jump_direct, 0), "goto_next_jump_direct", 21, "If a buffer containing jump locations has been locked in, goes to the next jump in the buffer, skipping sub jump locations.", 123, "w:\\4ed\\code\\4coder_jump_direct.cpp", 34, 48 },
{ PROC_LINKS(goto_next_jump_no_skips_direct, 0), "goto_next_jump_no_skips_direct", 30, "If a buffer containing jump locations has been locked in, goes to the next jump in the buffer, and does not skip sub jump locations.", 132, "w:\\4ed\\code\\4coder_jump_direct.cpp", 34, 66 },
{ PROC_LINKS(goto_next_jump_no_skips_sticky, 0), "goto_next_jump_no_skips_sticky", 30, "If a buffer containing jump locations has been locked in, goes to the next jump in the buffer, and does not skip sub jump locations.", 132, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 501 },
{ PROC_LINKS(goto_next_jump_sticky, 0), "goto_next_jump_sticky", 21, "If a buffer containing jump locations has been locked in, goes to the next jump in the buffer, skipping sub jump locations.", 123, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 471 },
{ PROC_LINKS(goto_prev_jump_direct, 0), "goto_prev_jump_direct", 21, "If a buffer containing jump locations has been locked in, goes to the previous jump in the buffer, skipping sub jump locations.", 127, "w:\\4ed\\code\\4coder_jump_direct.cpp", 34, 57 },
{ PROC_LINKS(goto_prev_jump_no_skips_direct, 0), "goto_prev_jump_no_skips_direct", 30, "If a buffer containing jump locations has been locked in, goes to the previous jump in the buffer, and does not skip sub jump locations.", 136, "w:\\4ed\\code\\4coder_jump_direct.cpp", 34, 75 },
{ PROC_LINKS(goto_prev_jump_no_skips_sticky, 0), "goto_prev_jump_no_skips_sticky", 30, "If a buffer containing jump locations has been locked in, goes to the previous jump in the buffer, and does not skip sub jump locations.", 136, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 517 },
{ PROC_LINKS(goto_prev_jump_sticky, 0), "goto_prev_jump_sticky", 21, "If a buffer containing jump locations has been locked in, goes to the previous jump in the buffer, skipping sub jump locations.", 127, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 487 },
{ PROC_LINKS(hide_filebar, 0), "hide_filebar", 12, "Sets the current view to hide it's filebar.", 43, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 514 },
{ PROC_LINKS(hide_scrollbar, 0), "hide_scrollbar", 14, "Sets the current view to hide it's scrollbar.", 45, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 500 },
{ PROC_LINKS(if0_off, 0), "if0_off", 7, "Surround the range between the cursor and mark with an '#if 0' and an '#endif'", 78, "w:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 81 },
{ PROC_LINKS(increase_face_size, 0), "increase_face_size", 18, "Increase the size of the face used by the current buffer.", 57, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 562 },
{ PROC_LINKS(increase_line_wrap, 0), "increase_line_wrap", 18, "Increases the current buffer's width for line wrapping.", 55, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 540 },
{ PROC_LINKS(interactive_kill_buffer, 0), "interactive_kill_buffer", 23, "Interactively kill an open buffer.", 34, "w:\\4ed\\code\\4coder_lists.cpp", 28, 751 },
{ PROC_LINKS(interactive_new, 0), "interactive_new", 15, "Interactively creates a new file.", 33, "w:\\4ed\\code\\4coder_lists.cpp", 28, 856 },
{ PROC_LINKS(interactive_open, 0), "interactive_open", 16, "Interactively opens a file.", 27, "w:\\4ed\\code\\4coder_lists.cpp", 28, 884 },
{ PROC_LINKS(interactive_open_or_new, 0), "interactive_open_or_new", 23, "Interactively open a file out of the file system.", 49, "w:\\4ed\\code\\4coder_lists.cpp", 28, 822 },
{ PROC_LINKS(interactive_switch_buffer, 0), "interactive_switch_buffer", 25, "Interactively switch to an open buffer.", 39, "w:\\4ed\\code\\4coder_lists.cpp", 28, 732 },
{ PROC_LINKS(kill_buffer, 0), "kill_buffer", 11, "Kills the current buffer.", 25, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1538 },
{ PROC_LINKS(left_adjust_view, 0), "left_adjust_view", 16, "Sets the left size of the view near the x position of the cursor.", 65, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 133 },
{ PROC_LINKS(list_all_functions_all_buffers, 0), "list_all_functions_all_buffers", 30, "Creates a jump list of lines from all buffers that appear to define or declare functions.", 89, "w:\\4ed\\code\\4coder_function_list.cpp", 36, 358 },
{ PROC_LINKS(list_all_functions_all_buffers_lister, 0), "list_all_functions_all_buffers_lister", 37, "Creates a lister of locations that look like function definitions and declarations all buffers.", 95, "w:\\4ed\\code\\4coder_function_list.cpp", 36, 364 },
{ PROC_LINKS(list_all_functions_current_buffer, 0), "list_all_functions_current_buffer", 33, "Creates a jump list of lines of the current buffer that appear to define or declare functions.", 94, "w:\\4ed\\code\\4coder_function_list.cpp", 36, 335 },
{ PROC_LINKS(list_all_functions_current_buffer_lister, 0), "list_all_functions_current_buffer_lister", 40, "Creates a lister of locations that look like function definitions and declarations in the buffer.", 97, "w:\\4ed\\code\\4coder_function_list.cpp", 36, 345 },
{ PROC_LINKS(list_all_locations, 0), "list_all_locations", 18, "Queries the user for a string and lists all exact case-sensitive matches found in all open buffers.", 99, "w:\\4ed\\code\\4coder_search.cpp", 29, 769 },
{ PROC_LINKS(list_all_locations_case_insensitive, 0), "list_all_locations_case_insensitive", 35, "Queries the user for a string and lists all exact case-insensitive matches found in all open buffers.", 101, "w:\\4ed\\code\\4coder_search.cpp", 29, 783 },
{ PROC_LINKS(list_all_locations_of_identifier, 0), "list_all_locations_of_identifier", 32, "Reads a token or word under the cursor and lists all exact case-sensitive mathces in all open buffers.", 102, "w:\\4ed\\code\\4coder_search.cpp", 29, 797 },
{ PROC_LINKS(list_all_locations_of_identifier_case_insensitive, 0), "list_all_locations_of_identifier_case_insensitive", 49, "Reads a token or word under the cursor and lists all exact case-insensitive mathces in all open buffers.", 104, "w:\\4ed\\code\\4coder_search.cpp", 29, 804 },
{ PROC_LINKS(list_all_locations_of_selection, 0), "list_all_locations_of_selection", 31, "Reads the string in the selected range and lists all exact case-sensitive mathces in all open buffers.", 102, "w:\\4ed\\code\\4coder_search.cpp", 29, 811 },
{ PROC_LINKS(list_all_locations_of_selection_case_insensitive, 0), "list_all_locations_of_selection_case_insensitive", 48, "Reads the string in the selected range and lists all exact case-insensitive mathces in all open buffers.", 104, "w:\\4ed\\code\\4coder_search.cpp", 29, 818 },
{ PROC_LINKS(list_all_locations_of_type_definition, 0), "list_all_locations_of_type_definition", 37, "Queries user for string, lists all locations of strings that appear to define a type whose name matches the input string.", 121, "w:\\4ed\\code\\4coder_search.cpp", 29, 825 },
{ PROC_LINKS(list_all_locations_of_type_definition_of_identifier, 0), "list_all_locations_of_type_definition_of_identifier", 51, "Reads a token or word under the cursor and lists all locations of strings that appear to define a type whose name matches it.", 125, "w:\\4ed\\code\\4coder_search.cpp", 29, 836 },
{ PROC_LINKS(list_all_substring_locations, 0), "list_all_substring_locations", 28, "Queries the user for a string and lists all case-sensitive substring matches found in all open buffers.", 103, "w:\\4ed\\code\\4coder_search.cpp", 29, 776 },
{ PROC_LINKS(list_all_substring_locations_case_insensitive, 0), "list_all_substring_locations_case_insensitive", 45, "Queries the user for a string and lists all case-insensitive substring matches found in all open buffers.", 105, "w:\\4ed\\code\\4coder_search.cpp", 29, 790 },
{ PROC_LINKS(lister__activate, 0), "lister__activate", 16, "A lister mode command that activates the list's action on the highlighted item.", 79, "w:\\4ed\\code\\4coder_lists.cpp", 28, 15 },
{ PROC_LINKS(lister__backspace_text_field, 0), "lister__backspace_text_field", 28, "A lister mode command that dispatches to the lister's backspace text field handler.", 83, "w:\\4ed\\code\\4coder_lists.cpp", 28, 41 },
{ PROC_LINKS(lister__backspace_text_field__default, 0), "lister__backspace_text_field__default", 37, "A lister mode command that backspaces one character from the text field.", 72, "w:\\4ed\\code\\4coder_lists.cpp", 28, 146 },
{ PROC_LINKS(lister__backspace_text_field__file_path, 0), "lister__backspace_text_field__file_path", 39, "A lister mode command that backspaces one character from the text field of a file system list.", 94, "w:\\4ed\\code\\4coder_lists.cpp", 28, 218 },
{ PROC_LINKS(lister__mouse_press, 0), "lister__mouse_press", 19, "A lister mode command that beings a click interaction with a list item under the mouse.", 87, "w:\\4ed\\code\\4coder_lists.cpp", 28, 86 },
{ PROC_LINKS(lister__mouse_release, 0), "lister__mouse_release", 21, "A lister mode command that ends a click interaction with a list item under the mouse, possibly activating it.", 109, "w:\\4ed\\code\\4coder_lists.cpp", 28, 98 },
{ PROC_LINKS(lister__move_down, 0), "lister__move_down", 17, "A lister mode command that dispatches to the lister's navigate down handler.", 76, "w:\\4ed\\code\\4coder_lists.cpp", 28, 61 },
{ PROC_LINKS(lister__move_down__default, 0), "lister__move_down__default", 26, "A lister mode command that moves the highlighted item one down in the list.", 75, "w:\\4ed\\code\\4coder_lists.cpp", 28, 177 },
{ PROC_LINKS(lister__move_up, 0), "lister__move_up", 15, "A lister mode command that dispatches to the lister's navigate up handler.", 74, "w:\\4ed\\code\\4coder_lists.cpp", 28, 51 },
{ PROC_LINKS(lister__move_up__default, 0), "lister__move_up__default", 24, "A lister mode command that moves the highlighted item one up in the list.", 73, "w:\\4ed\\code\\4coder_lists.cpp", 28, 161 },
{ PROC_LINKS(lister__quit, 0), "lister__quit", 12, "A lister mode command that quits the list without executing any actions.", 72, "w:\\4ed\\code\\4coder_lists.cpp", 28, 8 },
{ PROC_LINKS(lister__repaint, 0), "lister__repaint", 15, "A lister mode command that updates the lists UI data.", 53, "w:\\4ed\\code\\4coder_lists.cpp", 28, 115 },
{ PROC_LINKS(lister__wheel_scroll, 0), "lister__wheel_scroll", 20, "A lister mode command that scrolls the list in response to the mouse wheel.", 75, "w:\\4ed\\code\\4coder_lists.cpp", 28, 71 },
{ PROC_LINKS(lister__write_character, 0), "lister__write_character", 23, "A lister mode command that dispatches to the lister's write character handler.", 78, "w:\\4ed\\code\\4coder_lists.cpp", 28, 31 },
{ PROC_LINKS(lister__write_character__default, 0), "lister__write_character__default", 32, "A lister mode command that inserts a new character to the text field.", 69, "w:\\4ed\\code\\4coder_lists.cpp", 28, 126 },
{ PROC_LINKS(lister__write_character__file_path, 0), "lister__write_character__file_path", 34, "A lister mode command that inserts a character into the text field of a file system list.", 89, "w:\\4ed\\code\\4coder_lists.cpp", 28, 193 },
{ PROC_LINKS(lister__write_character__fixed_list, 0), "lister__write_character__fixed_list", 35, "A lister mode command that handles input for the fixed sure to kill list.", 73, "w:\\4ed\\code\\4coder_lists.cpp", 28, 253 },
{ PROC_LINKS(load_project, 0), "load_project", 12, "Looks for a project.4coder file in the current directory and tries to load it. Looks in parent directories until a project file is found or there are no more parents.", 167, "w:\\4ed\\code\\4coder_project_commands.cpp", 39, 1083 },
{ PROC_LINKS(make_directory_query, 0), "make_directory_query", 20, "Queries the user for a name and creates a new directory with the given name.", 76, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1226 },
{ PROC_LINKS(mouse_wheel_scroll, 0), "mouse_wheel_scroll", 18, "Reads the scroll wheel value from the mouse state and scrolls accordingly.", 74, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 226 },
{ PROC_LINKS(move_down, 0), "move_down", 9, "Moves the cursor down one line.", 31, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 290 },
{ PROC_LINKS(move_down_10, 0), "move_down_10", 12, "Moves the cursor down ten lines.", 32, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 302 },
{ PROC_LINKS(move_down_textual, 0), "move_down_textual", 17, "Moves down to the next line of actual text, regardless of line wrapping.", 72, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 308 },
{ PROC_LINKS(move_left, 0), "move_left", 9, "Moves the cursor one character to the left.", 43, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 339 },
{ PROC_LINKS(move_line_down, 0), "move_line_down", 14, "Swaps the line under the cursor with the line below it, and moves the cursor down with it.", 90, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1323 },
{ PROC_LINKS(move_line_up, 0), "move_line_up", 12, "Swaps the line under the cursor with the line above it, and moves the cursor up with it.", 88, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1259 },
{ PROC_LINKS(move_right, 0), "move_right", 10, "Moves the cursor one character to the right.", 44, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 349 },
{ PROC_LINKS(move_up, 0), "move_up", 7, "Moves the cursor up one line.", 29, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 284 },
{ PROC_LINKS(move_up_10, 0), "move_up_10", 10, "Moves the cursor up ten lines.", 30, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 296 },
{ PROC_LINKS(newline_or_goto_position_direct, 0), "newline_or_goto_position_direct", 31, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor.", 106, "w:\\4ed\\code\\4coder_jump_direct.cpp", 34, 101 },
{ PROC_LINKS(newline_or_goto_position_same_panel_direct, 0), "newline_or_goto_position_same_panel_direct", 42, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor_same_panel.", 117, "w:\\4ed\\code\\4coder_jump_direct.cpp", 34, 116 },
{ PROC_LINKS(newline_or_goto_position_same_panel_sticky, 0), "newline_or_goto_position_same_panel_sticky", 42, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor_same_panel.", 117, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 588 },
{ PROC_LINKS(newline_or_goto_position_sticky, 0), "newline_or_goto_position_sticky", 31, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor.", 106, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 573 },
{ PROC_LINKS(open_all_code, 0), "open_all_code", 13, "Open all code in the current directory. File types are determined by extensions. An extension is considered code based on the extensions specified in 4coder.config.", 164, "w:\\4ed\\code\\4coder_project_commands.cpp", 39, 1067 },
{ PROC_LINKS(open_all_code_recursive, 0), "open_all_code_recursive", 23, "Works as open_all_code but also runs in all subdirectories.", 59, "w:\\4ed\\code\\4coder_project_commands.cpp", 39, 1074 },
{ PROC_LINKS(open_color_tweaker, 0), "open_color_tweaker", 18, "Opens the 4coder theme selector list.", 37, "w:\\4ed\\code\\4coder_lists.cpp", 28, 900 },
{ PROC_LINKS(open_file_in_quotes, 0), "open_file_in_quotes", 19, "Reads a filename from surrounding '\"' characters and attempts to open the corresponding file.", 94, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1445 },
{ PROC_LINKS(open_in_other, 0), "open_in_other", 13, "Interactively opens a file in the other panel.", 46, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1596 },
{ PROC_LINKS(open_long_braces, 0), "open_long_braces", 16, "At the cursor, insert a '{' and '}' separated by a blank line.", 62, "w:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 57 },
{ PROC_LINKS(open_long_braces_break, 0), "open_long_braces_break", 22, "At the cursor, insert a '{' and '}break;' separated by a blank line.", 68, "w:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 73 },
{ PROC_LINKS(open_long_braces_semicolon, 0), "open_long_braces_semicolon", 26, "At the cursor, insert a '{' and '};' separated by a blank line.", 63, "w:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 65 },
{ PROC_LINKS(open_matching_file_cpp, 0), "open_matching_file_cpp", 22, "If the current file is a *.cpp or *.h, attempts to open the corresponding *.h or *.cpp file in the other view.", 110, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1481 },
{ PROC_LINKS(open_panel_hsplit, 0), "open_panel_hsplit", 17, "Create a new panel by horizontally splitting the active panel.", 62, "w:\\4ed\\code\\4coder_default_framework.cpp", 40, 173 },
{ PROC_LINKS(open_panel_vsplit, 0), "open_panel_vsplit", 17, "Create a new panel by vertically splitting the active panel.", 60, "w:\\4ed\\code\\4coder_default_framework.cpp", 40, 164 },
{ PROC_LINKS(page_down, 0), "page_down", 9, "Scrolls the view down one view height and moves the cursor down one view height.", 80, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 328 },
{ PROC_LINKS(page_up, 0), "page_up", 7, "Scrolls the view up one view height and moves the cursor up one view height.", 76, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 319 },
{ PROC_LINKS(paste, 0), "paste", 5, "At the cursor, insert the text at the top of the clipboard.", 59, "w:\\4ed\\code\\4coder_clipboard.cpp", 32, 46 },
{ PROC_LINKS(paste_and_indent, 0), "paste_and_indent", 16, "Paste from the top of clipboard and run auto-indent on the newly pasted text.", 77, "w:\\4ed\\code\\4coder_clipboard.cpp", 32, 134 },
{ PROC_LINKS(paste_next, 0), "paste_next", 10, "If the previous command was paste or paste_next, replaces the paste range with the next text down on the clipboard, otherwise operates as the paste command.", 156, "w:\\4ed\\code\\4coder_clipboard.cpp", 32, 85 },
{ PROC_LINKS(paste_next_and_indent, 0), "paste_next_and_indent", 21, "Paste the next item on the clipboard and run auto-indent on the newly pasted text.", 82, "w:\\4ed\\code\\4coder_clipboard.cpp", 32, 141 },
{ PROC_LINKS(place_in_scope, 0), "place_in_scope", 14, "Wraps the code contained in the range between cursor and mark with a new curly brace scope.", 91, "w:\\4ed\\code\\4coder_scope_commands.cpp", 37, 520 },
{ PROC_LINKS(project_command_lister, 0), "project_command_lister", 22, "Open a lister of all commands in the currently loaded project.", 62, "w:\\4ed\\code\\4coder_project_commands.cpp", 39, 1527 },
{ PROC_LINKS(project_fkey_command, 0), "project_fkey_command", 20, "Run an 'fkey command' configured in a project.4coder file. Determines the index of the 'fkey command' by which function key or numeric key was pressed to trigger the command.", 175, "w:\\4ed\\code\\4coder_project_commands.cpp", 39, 1090 },
{ PROC_LINKS(project_go_to_root_directory, 0), "project_go_to_root_directory", 28, "Changes 4coder's hot directory to the root directory of the currently loaded project. With no loaded project nothing hapepns.", 125, "w:\\4ed\\code\\4coder_project_commands.cpp", 39, 1113 },
{ PROC_LINKS(query_replace, 0), "query_replace", 13, "Queries the user for two strings, and incrementally replaces every occurence of the first string with the second string.", 120, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1002 },
{ PROC_LINKS(query_replace_identifier, 0), "query_replace_identifier", 24, "Queries the user for a string, and incrementally replace every occurence of the word or token found at the cursor with the specified string.", 140, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1026 },
{ PROC_LINKS(query_replace_selection, 0), "query_replace_selection", 23, "Queries the user for a string, and incrementally replace every occurence of the string found in the selected range with the specified string.", 141, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1044 },
{ PROC_LINKS(redo, 0), "redo", 4, "Advances forewards through the undo history.", 44, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1553 },
{ PROC_LINKS(reload_themes, 0), "reload_themes", 13, "Loads all the theme files in the theme folder, replacing duplicates with the new theme data.", 92, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1573 },
{ PROC_LINKS(remap_interactive, 0), "remap_interactive", 17, "Switch to a named key binding map.", 34, "w:\\4ed\\code\\4coder_default_framework.cpp", 40, 290 },
{ PROC_LINKS(rename_file_query, 0), "rename_file_query", 17, "Queries the user for a new name and renames the file of the current buffer, altering the buffer's name too.", 107, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1184 },
{ PROC_LINKS(reopen, 0), "reopen", 6, "Reopen the current buffer from the hard drive.", 46, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1559 },
{ PROC_LINKS(replace_in_range, 0), "replace_in_range", 16, "Queries the user for two strings, and replaces all occurences of the first string in the range between the cursor and the mark with the second string.", 150, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 883 },
{ PROC_LINKS(reverse_search, 0), "reverse_search", 14, "Begins an incremental search up through the current buffer for a user specified string.", 87, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 854 },
{ PROC_LINKS(reverse_search_identifier, 0), "reverse_search_identifier", 25, "Begins an incremental search up through the current buffer for the word or token under the cursor.", 98, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 872 },
{ PROC_LINKS(save, 0), "save", 4, "Saves the current buffer.", 25, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1565 },
{ PROC_LINKS(save_all_dirty_buffers, 0), "save_all_dirty_buffers", 22, "Saves all buffers marked dirty (showing the '*' indicator).", 59, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1088 },
{ PROC_LINKS(save_to_query, 0), "save_to_query", 13, "Queries the user for a file name and saves the contents of the current buffer, altering the buffer's name too.", 110, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1144 },
{ PROC_LINKS(scope_absorb_down, 0), "scope_absorb_down", 17, "If a scope is currently selected, and a statement or block statement is present below the current scope, the statement is moved into the scope.", 143, "w:\\4ed\\code\\4coder_scope_commands.cpp", 37, 777 },
{ PROC_LINKS(search, 0), "search", 6, "Begins an incremental search down through the current buffer for a user specified string.", 89, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 847 },
{ PROC_LINKS(search_identifier, 0), "search_identifier", 17, "Begins an incremental search down through the current buffer for the word or token under the cursor.", 100, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 861 },
{ PROC_LINKS(seek_alphanumeric_left, 0), "seek_alphanumeric_left", 22, "Seek left for boundary between alphanumeric characters and non-alphanumeric characters.", 87, "w:\\4ed\\code\\4coder_seek.cpp", 27, 1238 },
{ PROC_LINKS(seek_alphanumeric_or_camel_left, 0), "seek_alphanumeric_or_camel_left", 31, "Seek left for boundary between alphanumeric characters or camel case word and non-alphanumeric characters.", 106, "w:\\4ed\\code\\4coder_seek.cpp", 27, 1250 },
{ PROC_LINKS(seek_alphanumeric_or_camel_right, 0), "seek_alphanumeric_or_camel_right", 32, "Seek right for boundary between alphanumeric characters or camel case word and non-alphanumeric characters.", 107, "w:\\4ed\\code\\4coder_seek.cpp", 27, 1244 },
{ PROC_LINKS(seek_alphanumeric_right, 0), "seek_alphanumeric_right", 23, "Seek right for boundary between alphanumeric characters and non-alphanumeric characters.", 88, "w:\\4ed\\code\\4coder_seek.cpp", 27, 1232 },
{ 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\\4coder_seek.cpp", 27, 1131 },
{ 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\\4coder_seek.cpp", 27, 1111 },
{ 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\\4coder_seek.cpp", 27, 1143 },
{ 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\\4coder_seek.cpp", 27, 1121 },
{ PROC_LINKS(seek_token_left, 0), "seek_token_left", 15, "Seek left for the next beginning of a token.", 44, "w:\\4ed\\code\\4coder_seek.cpp", 27, 1214 },
{ PROC_LINKS(seek_token_right, 0), "seek_token_right", 16, "Seek right for the next end of a token.", 39, "w:\\4ed\\code\\4coder_seek.cpp", 27, 1208 },
{ PROC_LINKS(seek_white_or_token_left, 0), "seek_white_or_token_left", 24, "Seek left for the next end of a token or boundary between whitespace and non-whitespace.", 88, "w:\\4ed\\code\\4coder_seek.cpp", 27, 1226 },
{ PROC_LINKS(seek_white_or_token_right, 0), "seek_white_or_token_right", 25, "Seek right for the next end of a token or boundary between whitespace and non-whitespace.", 89, "w:\\4ed\\code\\4coder_seek.cpp", 27, 1220 },
{ PROC_LINKS(seek_whitespace_down, 0), "seek_whitespace_down", 20, "Seeks the cursor down to the next blank line.", 45, "w:\\4ed\\code\\4coder_seek.cpp", 27, 1101 },
{ PROC_LINKS(seek_whitespace_down_end_line, 0), "seek_whitespace_down_end_line", 29, "Seeks the cursor down to the next blank line and places it at the end of the line.", 82, "w:\\4ed\\code\\4coder_seek.cpp", 27, 1166 },
{ PROC_LINKS(seek_whitespace_left, 0), "seek_whitespace_left", 20, "Seek left for the next boundary between whitespace and non-whitespace.", 70, "w:\\4ed\\code\\4coder_seek.cpp", 27, 1202 },
{ PROC_LINKS(seek_whitespace_right, 0), "seek_whitespace_right", 21, "Seek right for the next boundary between whitespace and non-whitespace.", 71, "w:\\4ed\\code\\4coder_seek.cpp", 27, 1196 },
{ PROC_LINKS(seek_whitespace_up, 0), "seek_whitespace_up", 18, "Seeks the cursor up to the next blank line.", 43, "w:\\4ed\\code\\4coder_seek.cpp", 27, 1091 },
{ PROC_LINKS(seek_whitespace_up_end_line, 0), "seek_whitespace_up_end_line", 27, "Seeks the cursor up to the next blank line and places it at the end of the line.", 80, "w:\\4ed\\code\\4coder_seek.cpp", 27, 1155 },
{ PROC_LINKS(select_all, 0), "select_all", 10, "Puts the cursor at the top of the file, and the mark at the bottom of the file.", 79, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 359 },
{ PROC_LINKS(select_next_scope_absolute, 0), "select_next_scope_absolute", 26, "Finds the first scope started by '{' after the cursor and puts the cursor and mark on the '{' and '}'.", 102, "w:\\4ed\\code\\4coder_scope_commands.cpp", 37, 401 },
{ PROC_LINKS(select_prev_scope_absolute, 0), "select_prev_scope_absolute", 26, "Finds the first scope started by '{' before the cursor and puts the cursor and mark on the '{' and '}'.", 103, "w:\\4ed\\code\\4coder_scope_commands.cpp", 37, 421 },
{ PROC_LINKS(select_surrounding_scope, 0), "select_surrounding_scope", 24, "Finds the scope enclosed by '{' '}' surrounding the cursor and puts the cursor and mark on the '{' and '}'.", 107, "w:\\4ed\\code\\4coder_scope_commands.cpp", 37, 385 },
{ PROC_LINKS(set_bindings_choose, 0), "set_bindings_choose", 19, "Remap keybindings using the 'choose' mapping rule.", 50, "w:\\4ed\\code\\4coder_remapping_commands.cpp", 41, 47 },
{ PROC_LINKS(set_bindings_default, 0), "set_bindings_default", 20, "Remap keybindings using the 'default' mapping rule.", 51, "w:\\4ed\\code\\4coder_remapping_commands.cpp", 41, 61 },
{ PROC_LINKS(set_bindings_mac_default, 0), "set_bindings_mac_default", 24, "Remap keybindings using the 'mac-default' mapping rule.", 55, "w:\\4ed\\code\\4coder_remapping_commands.cpp", 41, 75 },
{ PROC_LINKS(set_mark, 0), "set_mark", 8, "Sets the mark to the current position of the cursor.", 52, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 88 },
{ PROC_LINKS(set_mode_to_notepad_like, 0), "set_mode_to_notepad_like", 24, "Sets the edit mode to Notepad like.", 35, "w:\\4ed\\code\\4coder_default_framework.cpp", 40, 258 },
{ PROC_LINKS(set_mode_to_original, 0), "set_mode_to_original", 20, "Sets the edit mode to 4coder original.", 38, "w:\\4ed\\code\\4coder_default_framework.cpp", 40, 252 },
{ PROC_LINKS(setup_build_bat, 0), "setup_build_bat", 15, "Queries the user for several configuration options and initializes a new build batch script.", 92, "w:\\4ed\\code\\4coder_project_commands.cpp", 39, 1498 },
{ PROC_LINKS(setup_build_bat_and_sh, 0), "setup_build_bat_and_sh", 22, "Queries the user for several configuration options and initializes a new build batch script.", 92, "w:\\4ed\\code\\4coder_project_commands.cpp", 39, 1510 },
{ PROC_LINKS(setup_build_sh, 0), "setup_build_sh", 14, "Queries the user for several configuration options and initializes a new build shell script.", 92, "w:\\4ed\\code\\4coder_project_commands.cpp", 39, 1504 },
{ PROC_LINKS(setup_new_project, 0), "setup_new_project", 17, "Queries the user for several configuration options and initializes a new 4coder project with build scripts for every OS.", 120, "w:\\4ed\\code\\4coder_project_commands.cpp", 39, 1491 },
{ PROC_LINKS(show_filebar, 0), "show_filebar", 12, "Sets the current view to show it's filebar.", 43, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 507 },
{ PROC_LINKS(show_scrollbar, 0), "show_scrollbar", 14, "Sets the current view to show it's scrollbar.", 45, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 493 },
{ PROC_LINKS(snipe_token_or_word, 0), "snipe_token_or_word", 19, "Delete a single, whole token on or to the left of the cursor and post it to the clipboard.", 90, "w:\\4ed\\code\\4coder_seek.cpp", 27, 1270 },
{ PROC_LINKS(snipe_token_or_word_right, 0), "snipe_token_or_word_right", 25, "Delete a single, whole token on or to the right of the cursor and post it to the clipboard.", 91, "w:\\4ed\\code\\4coder_seek.cpp", 27, 1276 },
{ PROC_LINKS(snippet_lister, 0), "snippet_lister", 14, "Opens a snippet lister for inserting whole pre-written snippets of text.", 72, "w:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 193 },
{ PROC_LINKS(suppress_mouse, 0), "suppress_mouse", 14, "Hides the mouse and causes all mosue input (clicks, position, wheel) to be ignored.", 83, "w:\\4ed\\code\\4coder_default_framework.cpp", 40, 234 },
{ PROC_LINKS(swap_buffers_between_panels, 0), "swap_buffers_between_panels", 27, "Set the other non-active panel to view the buffer that the active panel views, and switch to that panel.", 104, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1505 },
{ PROC_LINKS(to_lowercase, 0), "to_lowercase", 12, "Converts all ascii text in the range between the cursor and the mark to lowercase.", 82, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 391 },
{ PROC_LINKS(to_uppercase, 0), "to_uppercase", 12, "Converts all ascii text in the range between the cursor and the mark to uppercase.", 82, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 371 },
{ PROC_LINKS(toggle_filebar, 0), "toggle_filebar", 14, "Toggles the visibility status of the current view's filebar.", 60, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 521 },
{ PROC_LINKS(toggle_fullscreen, 0), "toggle_fullscreen", 17, "Toggle fullscreen mode on or off. The change(s) do not take effect until the next frame.", 89, "w:\\4ed\\code\\4coder_default_framework.cpp", 40, 282 },
{ PROC_LINKS(toggle_highlight_enclosing_scopes, 0), "toggle_highlight_enclosing_scopes", 33, "In code files scopes surrounding the cursor are highlighted with distinguishing colors.", 87, "w:\\4ed\\code\\4coder_default_framework.cpp", 40, 270 },
{ PROC_LINKS(toggle_highlight_line_at_cursor, 0), "toggle_highlight_line_at_cursor", 31, "Toggles the line highlight at the cursor.", 41, "w:\\4ed\\code\\4coder_default_framework.cpp", 40, 264 },
{ PROC_LINKS(toggle_line_wrap, 0), "toggle_line_wrap", 16, "Toggles the current buffer's line wrapping status.", 50, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 530 },
{ PROC_LINKS(toggle_mouse, 0), "toggle_mouse", 12, "Toggles the mouse suppression mode, see suppress_mouse and allow_mouse.", 71, "w:\\4ed\\code\\4coder_default_framework.cpp", 40, 246 },
{ PROC_LINKS(toggle_paren_matching_helper, 0), "toggle_paren_matching_helper", 28, "In code files matching parentheses pairs are colored with distinguishing colors.", 80, "w:\\4ed\\code\\4coder_default_framework.cpp", 40, 276 },
{ PROC_LINKS(toggle_show_whitespace, 0), "toggle_show_whitespace", 22, "Toggles the current buffer's whitespace visibility status.", 58, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 597 },
{ PROC_LINKS(toggle_virtual_whitespace, 0), "toggle_virtual_whitespace", 25, "Toggles the current buffer's virtual whitespace status.", 55, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 586 },
{ PROC_LINKS(undo, 0), "undo", 4, "Advances backwards through the undo history.", 44, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1547 },
{ PROC_LINKS(view_buffer_other_panel, 0), "view_buffer_other_panel", 23, "Set the other non-active panel to view the buffer that the active panel views, and switch to that panel.", 104, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1495 },
{ 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\\4coder_jump_lister.cpp", 34, 108 },
{ PROC_LINKS(word_complete, 0), "word_complete", 13, "Iteratively tries completing the word to the left of the cursor with other words in open buffers that have the same prefix string.", 130, "w:\\4ed\\code\\4coder_search.cpp", 29, 856 },
{ PROC_LINKS(write_and_auto_tab, 0), "write_and_auto_tab", 18, "Inserts a character and auto-indents the line on which the cursor sits.", 71, "w:\\4ed\\code\\4coder_auto_indent.cpp", 34, 745 },
{ PROC_LINKS(write_block, 0), "write_block", 11, "At the cursor, insert a block comment.", 38, "w:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 105 },
{ PROC_LINKS(write_character, 0), "write_character", 15, "Inserts whatever character was used to trigger this command.", 60, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 35 },
{ PROC_LINKS(write_hack, 0), "write_hack", 10, "At the cursor, insert a '// HACK' comment, includes user name if it was specified in config.4coder.", 99, "w:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 93 },
{ PROC_LINKS(write_note, 0), "write_note", 10, "At the cursor, insert a '// NOTE' comment, includes user name if it was specified in config.4coder.", 99, "w:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 99 },
{ PROC_LINKS(write_todo, 0), "write_todo", 10, "At the cursor, insert a '// TODO' comment, includes user name if it was specified in config.4coder.", 99, "w:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 87 },
{ PROC_LINKS(write_underscore, 0), "write_underscore", 16, "Inserts an underscore.", 22, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 44 },
{ PROC_LINKS(write_zero_struct, 0), "write_zero_struct", 17, "At the cursor, insert a ' = {};'.", 33, "w:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 111 },
};
static int32_t fcoder_metacmd_ID_allow_mouse = 0;
static int32_t fcoder_metacmd_ID_auto_tab_line_at_cursor = 1;

View File

@ -18,23 +18,24 @@ key_mouse_right_release = 55311,
key_mouse_wheel = 55312,
key_mouse_move = 55313,
key_animate = 55314,
key_view_activate = 55315,
key_f1 = 55316,
key_f2 = 55317,
key_f3 = 55318,
key_f4 = 55319,
key_f5 = 55320,
key_f6 = 55321,
key_f7 = 55322,
key_f8 = 55323,
key_f9 = 55324,
key_f10 = 55325,
key_f11 = 55326,
key_f12 = 55327,
key_f13 = 55328,
key_f14 = 55329,
key_f15 = 55330,
key_f16 = 55331,
key_click_activate_view = 55315,
key_click_deactivate_view = 55316,
key_f1 = 55317,
key_f2 = 55318,
key_f3 = 55319,
key_f4 = 55320,
key_f5 = 55321,
key_f6 = 55322,
key_f7 = 55323,
key_f8 = 55324,
key_f9 = 55325,
key_f10 = 55326,
key_f11 = 55327,
key_f12 = 55328,
key_f13 = 55329,
key_f14 = 55330,
key_f15 = 55331,
key_f16 = 55332,
};
static char*
global_key_name(uint32_t key_code, int32_t *size){
@ -59,7 +60,8 @@ case key_mouse_right_release: result = "key_mouse_right_release"; *size = sizeof
case key_mouse_wheel: result = "key_mouse_wheel"; *size = sizeof("key_mouse_wheel")-1; break;
case key_mouse_move: result = "key_mouse_move"; *size = sizeof("key_mouse_move")-1; break;
case key_animate: result = "key_animate"; *size = sizeof("key_animate")-1; break;
case key_view_activate: result = "key_view_activate"; *size = sizeof("key_view_activate")-1; break;
case key_click_activate_view: result = "key_click_activate_view"; *size = sizeof("key_click_activate_view")-1; break;
case key_click_deactivate_view: result = "key_click_deactivate_view"; *size = sizeof("key_click_deactivate_view")-1; break;
case key_f1: result = "key_f1"; *size = sizeof("key_f1")-1; break;
case key_f2: result = "key_f2"; *size = sizeof("key_f2")-1; break;
case key_f3: result = "key_f3"; *size = sizeof("key_f3")-1; break;

View File

@ -44,7 +44,7 @@ end_map(context);
begin_map(context, mapid_file);
bind_vanilla_keys(context, write_character);
bind(context, key_mouse_left, MDFR_NONE, click_set_cursor_and_mark);
bind(context, key_view_activate, MDFR_NONE, click_set_cursor_and_mark);
bind(context, key_click_activate_view, MDFR_NONE, click_set_cursor_and_mark);
bind(context, key_mouse_left_release, MDFR_NONE, click_set_cursor);
bind(context, key_mouse_move, MDFR_NONE, click_set_cursor_if_lbutton);
bind(context, key_del, MDFR_NONE, delete_char);
@ -167,7 +167,6 @@ bind(context, key_down, MDFR_NONE, lister__move_down);
bind(context, key_page_down, MDFR_NONE, lister__move_down);
bind(context, key_mouse_wheel, MDFR_NONE, lister__wheel_scroll);
bind(context, key_mouse_left, MDFR_NONE, lister__mouse_press);
bind(context, key_view_activate, MDFR_NONE, lister__mouse_press);
bind(context, key_mouse_left_release, MDFR_NONE, lister__mouse_release);
bind(context, key_mouse_move, MDFR_NONE, lister__repaint);
bind(context, key_animate, MDFR_NONE, lister__repaint);
@ -219,7 +218,7 @@ begin_map(context, mapid_file);
bind_vanilla_keys(context, write_character);
bind_vanilla_keys(context, MDFR_ALT, write_character);
bind(context, key_mouse_left, MDFR_NONE, click_set_cursor_and_mark);
bind(context, key_view_activate, MDFR_NONE, click_set_cursor_and_mark);
bind(context, key_click_activate_view, MDFR_NONE, click_set_cursor_and_mark);
bind(context, key_mouse_left_release, MDFR_NONE, click_set_cursor);
bind(context, key_mouse_move, MDFR_NONE, click_set_cursor_if_lbutton);
bind(context, key_del, MDFR_NONE, delete_char);
@ -340,7 +339,6 @@ bind(context, key_down, MDFR_NONE, lister__move_down);
bind(context, key_page_down, MDFR_NONE, lister__move_down);
bind(context, key_mouse_wheel, MDFR_NONE, lister__wheel_scroll);
bind(context, key_mouse_left, MDFR_NONE, lister__mouse_press);
bind(context, key_view_activate, MDFR_NONE, click_set_cursor_and_mark);
bind(context, key_mouse_left_release, MDFR_NONE, lister__mouse_release);
bind(context, key_mouse_move, MDFR_NONE, lister__repaint);
bind(context, key_animate, MDFR_NONE, lister__repaint);
@ -402,7 +400,6 @@ static Meta_Key_Bind fcoder_binds_for_default_mapid_global[39] = {
{0, 88, 2, "project_command_lister", 22, LINK_PROCS(project_command_lister)},
{0, 73, 1, "list_all_functions_current_buffer_lister", 40, LINK_PROCS(list_all_functions_current_buffer_lister)},
{0, 69, 2, "exit_4coder", 11, LINK_PROCS(exit_4coder)},
{0, 55316, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
{0, 55317, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
{0, 55318, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
{0, 55319, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
@ -418,6 +415,7 @@ static Meta_Key_Bind fcoder_binds_for_default_mapid_global[39] = {
{0, 55329, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
{0, 55330, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
{0, 55331, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
{0, 55332, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
{0, 55312, 0, "mouse_wheel_scroll", 18, LINK_PROCS(mouse_wheel_scroll)},
};
static Meta_Key_Bind fcoder_binds_for_default_mapid_file[78] = {
@ -533,7 +531,7 @@ static Meta_Key_Bind fcoder_binds_for_default_default_code_map[31] = {
{0, 50, 2, "open_matching_file_cpp", 22, LINK_PROCS(open_matching_file_cpp)},
{0, 48, 1, "write_zero_struct", 17, LINK_PROCS(write_zero_struct)},
};
static Meta_Key_Bind fcoder_binds_for_default_default_lister_ui_map[15] = {
static Meta_Key_Bind fcoder_binds_for_default_default_lister_ui_map[14] = {
{1, 0, 0, "lister__write_character", 23, LINK_PROCS(lister__write_character)},
{0, 55307, 0, "lister__quit", 12, LINK_PROCS(lister__quit)},
{0, 10, 0, "lister__activate", 16, LINK_PROCS(lister__activate)},
@ -545,7 +543,6 @@ static Meta_Key_Bind fcoder_binds_for_default_default_lister_ui_map[15] = {
{0, 55306, 0, "lister__move_down", 17, LINK_PROCS(lister__move_down)},
{0, 55312, 0, "lister__wheel_scroll", 20, LINK_PROCS(lister__wheel_scroll)},
{0, 55308, 0, "lister__mouse_press", 19, LINK_PROCS(lister__mouse_press)},
{0, 55315, 0, "lister__mouse_press", 19, LINK_PROCS(lister__mouse_press)},
{0, 55310, 0, "lister__mouse_release", 21, LINK_PROCS(lister__mouse_release)},
{0, 55313, 0, "lister__repaint", 15, LINK_PROCS(lister__repaint)},
{0, 55314, 0, "lister__repaint", 15, LINK_PROCS(lister__repaint)},
@ -554,7 +551,7 @@ static Meta_Sub_Map fcoder_submaps_for_default[4] = {
{"mapid_global", 12, "The following bindings apply in all situations.", 47, 0, 0, fcoder_binds_for_default_mapid_global, 39},
{"mapid_file", 10, "The following bindings apply in general text files and most apply in code files, but some are overriden by other commands specific to code files.", 145, 0, 0, fcoder_binds_for_default_mapid_file, 78},
{"default_code_map", 16, "The following commands only apply in files where the lexer (syntax highlighting) is turned on.", 94, "mapid_file", 10, fcoder_binds_for_default_default_code_map, 31},
{"default_lister_ui_map", 21, "These commands apply in 'lister mode' such as when you open a file.", 67, 0, 0, fcoder_binds_for_default_default_lister_ui_map, 15},
{"default_lister_ui_map", 21, "These commands apply in 'lister mode' such as when you open a file.", 67, 0, 0, fcoder_binds_for_default_default_lister_ui_map, 14},
};
static Meta_Key_Bind fcoder_binds_for_mac_default_mapid_global[39] = {
{0, 44, 4, "change_active_panel", 19, LINK_PROCS(change_active_panel)},
@ -579,7 +576,6 @@ static Meta_Key_Bind fcoder_binds_for_mac_default_mapid_global[39] = {
{0, 88, 1, "project_command_lister", 22, LINK_PROCS(project_command_lister)},
{0, 73, 4, "list_all_functions_current_buffer_lister", 40, LINK_PROCS(list_all_functions_current_buffer_lister)},
{0, 69, 1, "exit_4coder", 11, LINK_PROCS(exit_4coder)},
{0, 55316, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
{0, 55317, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
{0, 55318, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
{0, 55319, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
@ -595,6 +591,7 @@ static Meta_Key_Bind fcoder_binds_for_mac_default_mapid_global[39] = {
{0, 55329, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
{0, 55330, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
{0, 55331, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
{0, 55332, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
{0, 55312, 0, "mouse_wheel_scroll", 18, LINK_PROCS(mouse_wheel_scroll)},
};
static Meta_Key_Bind fcoder_binds_for_mac_default_mapid_file[77] = {
@ -709,7 +706,7 @@ static Meta_Key_Bind fcoder_binds_for_mac_default_default_code_map[31] = {
{0, 50, 1, "open_matching_file_cpp", 22, LINK_PROCS(open_matching_file_cpp)},
{0, 48, 4, "write_zero_struct", 17, LINK_PROCS(write_zero_struct)},
};
static Meta_Key_Bind fcoder_binds_for_mac_default_default_lister_ui_map[15] = {
static Meta_Key_Bind fcoder_binds_for_mac_default_default_lister_ui_map[14] = {
{1, 0, 0, "lister__write_character", 23, LINK_PROCS(lister__write_character)},
{0, 55307, 0, "lister__quit", 12, LINK_PROCS(lister__quit)},
{0, 10, 0, "lister__activate", 16, LINK_PROCS(lister__activate)},
@ -721,7 +718,6 @@ static Meta_Key_Bind fcoder_binds_for_mac_default_default_lister_ui_map[15] = {
{0, 55306, 0, "lister__move_down", 17, LINK_PROCS(lister__move_down)},
{0, 55312, 0, "lister__wheel_scroll", 20, LINK_PROCS(lister__wheel_scroll)},
{0, 55308, 0, "lister__mouse_press", 19, LINK_PROCS(lister__mouse_press)},
{0, 55315, 0, "click_set_cursor_and_mark", 25, LINK_PROCS(click_set_cursor_and_mark)},
{0, 55310, 0, "lister__mouse_release", 21, LINK_PROCS(lister__mouse_release)},
{0, 55313, 0, "lister__repaint", 15, LINK_PROCS(lister__repaint)},
{0, 55314, 0, "lister__repaint", 15, LINK_PROCS(lister__repaint)},
@ -730,7 +726,7 @@ static Meta_Sub_Map fcoder_submaps_for_mac_default[4] = {
{"mapid_global", 12, "The following bindings apply in all situations.", 47, 0, 0, fcoder_binds_for_mac_default_mapid_global, 39},
{"mapid_file", 10, "The following bindings apply in general text files and most apply in code files, but some are overriden by other commands specific to code files.", 145, 0, 0, fcoder_binds_for_mac_default_mapid_file, 77},
{"default_code_map", 16, "The following commands only apply in files where the lexer (syntax highlighting) is turned on.", 94, "mapid_file", 10, fcoder_binds_for_mac_default_default_code_map, 31},
{"default_lister_ui_map", 21, "These commands apply in 'lister mode' such as when you open a file.", 67, 0, 0, fcoder_binds_for_mac_default_default_lister_ui_map, 15},
{"default_lister_ui_map", 21, "These commands apply in 'lister mode' such as when you open a file.", 67, 0, 0, fcoder_binds_for_mac_default_default_lister_ui_map, 14},
};
static Meta_Mapping fcoder_meta_maps[2] = {
{"default", 7, "The default 4coder bindings - typically good for Windows and Linux", 66, fcoder_submaps_for_default, 4, LINK_PROCS(fill_keys_default)},

View File

@ -17,11 +17,11 @@ write_unit(Bind_Helper *helper, Binding_Unit unit){
inline Bind_Helper
begin_bind_helper(void *data, int32_t size){
Bind_Helper result = {0};
Bind_Helper result = {};
result.cursor = (Binding_Unit*)data;
result.start = result.cursor;
result.end = result.start + size / sizeof(*result.cursor);
Binding_Unit unit = {0};
Binding_Unit unit = {};
unit.type = unit_header;
unit.header.total_size = sizeof(*result.header);
result.header = write_unit(&result, unit);
@ -134,7 +134,7 @@ inline void
inherit_map(Bind_Helper *helper, int32_t mapid){
if (helper->group == 0 && helper->error == 0) helper->error = BH_ERR_MISSING_BEGIN;
if (!helper->error && mapid < mapid_global) ++helper->header->header.user_map_count;
Binding_Unit unit = {0};
Binding_Unit unit = {};
unit.type = unit_inherit;
unit.map_inherit.mapid = mapid;
write_unit(helper, unit);
@ -142,7 +142,7 @@ inherit_map(Bind_Helper *helper, int32_t mapid){
inline void
set_hook(Bind_Helper *helper, int32_t hook_id, Hook_Function *func){
Binding_Unit unit = {0};
Binding_Unit unit = {};
unit.type = unit_hook;
unit.hook.hook_id = hook_id;
unit.hook.func = (void*)func;
@ -151,7 +151,7 @@ set_hook(Bind_Helper *helper, int32_t hook_id, Hook_Function *func){
inline void
set_scroll_rule(Bind_Helper *helper, Scroll_Rule_Function *func){
Binding_Unit unit = {0};
Binding_Unit unit = {};
unit.type = unit_hook;
unit.hook.hook_id = special_hook_scroll_rule;
unit.hook.func = (void*)func;
@ -160,7 +160,7 @@ set_scroll_rule(Bind_Helper *helper, Scroll_Rule_Function *func){
inline void
set_buffer_name_resolver(Bind_Helper *helper, Buffer_Name_Resolver_Function *func){
Binding_Unit unit = {0};
Binding_Unit unit = {};
unit.type = unit_hook;
unit.hook.hook_id = special_hook_buffer_name_resolver;
unit.hook.func = (void*)func;
@ -169,7 +169,7 @@ set_buffer_name_resolver(Bind_Helper *helper, Buffer_Name_Resolver_Function *fun
inline void
set_new_file_hook(Bind_Helper *helper, Open_File_Hook_Function *func){
Binding_Unit unit = {0};
Binding_Unit unit = {};
unit.type = unit_hook;
unit.hook.hook_id = special_hook_new_file;
unit.hook.func = (void*)func;
@ -178,7 +178,7 @@ set_new_file_hook(Bind_Helper *helper, Open_File_Hook_Function *func){
inline void
set_start_hook(Bind_Helper *helper, Start_Hook_Function *func){
Binding_Unit unit = {0};
Binding_Unit unit = {};
unit.type = unit_hook;
unit.hook.hook_id = special_hook_start;
unit.hook.func = (void*)func;
@ -187,7 +187,7 @@ set_start_hook(Bind_Helper *helper, Start_Hook_Function *func){
inline void
set_open_file_hook(Bind_Helper *helper, Open_File_Hook_Function *func){
Binding_Unit unit = {0};
Binding_Unit unit = {};
unit.type = unit_hook;
unit.hook.hook_id = special_hook_open_file;
unit.hook.func = (void*)func;
@ -196,7 +196,7 @@ set_open_file_hook(Bind_Helper *helper, Open_File_Hook_Function *func){
inline void
set_save_file_hook(Bind_Helper *helper, Open_File_Hook_Function *func){
Binding_Unit unit = {0};
Binding_Unit unit = {};
unit.type = unit_hook;
unit.hook.hook_id = special_hook_save_file;
unit.hook.func = (void*)func;
@ -205,7 +205,7 @@ set_save_file_hook(Bind_Helper *helper, Open_File_Hook_Function *func){
inline void
set_end_file_hook(Bind_Helper *helper, Open_File_Hook_Function *func){
Binding_Unit unit = {0};
Binding_Unit unit = {};
unit.type = unit_hook;
unit.hook.hook_id = special_hook_end_file;
unit.hook.func = (void*)func;
@ -214,7 +214,7 @@ set_end_file_hook(Bind_Helper *helper, Open_File_Hook_Function *func){
inline void
set_command_caller(Bind_Helper *helper, Command_Caller_Hook_Function *func){
Binding_Unit unit = {0};
Binding_Unit unit = {};
unit.type = unit_hook;
unit.hook.hook_id = special_hook_command_caller;
unit.hook.func = (void*)func;
@ -223,7 +223,7 @@ set_command_caller(Bind_Helper *helper, Command_Caller_Hook_Function *func){
inline void
set_render_caller(Bind_Helper *helper, Render_Caller_Function *func){
Binding_Unit unit = {0};
Binding_Unit unit = {};
unit.type = unit_hook;
unit.hook.hook_id = special_hook_render_caller;
unit.hook.func = (void*)func;
@ -232,7 +232,7 @@ set_render_caller(Bind_Helper *helper, Render_Caller_Function *func){
inline void
set_input_filter(Bind_Helper *helper, Input_Filter_Function *func){
Binding_Unit unit = {0};
Binding_Unit unit = {};
unit.type = unit_hook;
unit.hook.hook_id = special_hook_input_filter;
unit.hook.func = (void*)func;
@ -252,7 +252,7 @@ end_bind_helper(Bind_Helper *helper){
inline Bind_Buffer
end_bind_helper_get_buffer(Bind_Helper *helper){
int32_t size = end_bind_helper(helper);
Bind_Buffer result = {0};
Bind_Buffer result = {};
result.data = helper->start;
result.size = size;
return(result);
@ -310,10 +310,8 @@ key_is_unmodified(Key_Event_Data *key){
static uint32_t
to_writable_character(User_Input in, uint8_t *character){
uint32_t result = 0;
if (in.type == UserInputKey){
if (in.key.character != 0){
u32_to_utf8_unchecked(in.key.character, character, &result);
}
if (in.key.character != 0){
u32_to_utf8_unchecked(in.key.character, character, &result);
}
return(result);
}
@ -362,7 +360,7 @@ query_user_general(Application_Links *app, Query_Bar *bar, bool32 force_number){
// types specified in the flags. The first set of flags are inputs you'd like to intercept
// that you don't want to abort on. The second set are inputs that you'd like to cause
// the command to abort. If an event satisfies both flags, it is treated as an abort.
User_Input in = get_user_input(app, EventOnAnyKey, EventOnEsc | EventOnButton);
User_Input in = get_user_input(app, EventOnAnyKey, EventOnEsc|EventOnMouseLeftButton|EventOnMouseRightButton);
// NOTE(allen|a3.4.4): The responsible thing to do on abort is to end the command
// without waiting on get_user_input again.
@ -392,16 +390,14 @@ query_user_general(Application_Links *app, Query_Bar *bar, bool32 force_number){
// NOTE(allen|a3.4.4): All we have to do to update the query bar is edit our
// local Query_Bar struct! This is handy because it means our Query_Bar
// is always correct for typical use without extra work updating the bar.
if (in.type == UserInputKey){
if (in.key.keycode == '\n' || in.key.keycode == '\t'){
break;
}
else if (in.key.keycode == key_back){
backspace_utf8(&bar->string);
}
else if (good_character){
append(&bar->string, make_string(character, length));
}
if (in.key.keycode == '\n' || in.key.keycode == '\t'){
break;
}
else if (in.key.keycode == key_back){
backspace_utf8(&bar->string);
}
else if (good_character){
append(&bar->string, make_string(character, length));
}
}
@ -474,7 +470,7 @@ adjust_all_buffer_wrap_widths(Application_Links *app, int32_t wrap_width, int32_
static Buffer_Rect
get_rect(View_Summary *view){
Buffer_Rect rect = {0};
Buffer_Rect rect = {};
rect.char0 = view->mark.character;
rect.line0 = view->mark.line;
@ -494,7 +490,7 @@ get_rect(View_Summary *view){
static i32_Rect
get_line_x_rect(View_Summary *view){
i32_Rect rect = {0};
i32_Rect rect = {};
if (view->unwrapped_lines){
rect.x0 = (int32_t)view->mark.unwrapped_x;
@ -519,8 +515,8 @@ get_line_x_rect(View_Summary *view){
static View_Summary
get_first_view_with_buffer(Application_Links *app, int32_t buffer_id){
View_Summary result = {0};
View_Summary test = {0};
View_Summary result = {};
View_Summary test = {};
if (buffer_id != 0){
uint32_t access = AccessAll;
@ -591,7 +587,7 @@ buffer_identifier_to_id(Application_Links *app, Buffer_Identifier identifier){
static Buffer_Summary
buffer_identifier_to_buffer_summary(Application_Links *app, Buffer_Identifier identifier, Access_Flag access){
Buffer_Summary buffer = {0};
Buffer_Summary buffer = {};
if (identifier.id != 0){
buffer = get_buffer(app, identifier.id, access);
}
@ -610,7 +606,7 @@ view_open_file(Application_Links *app, View_Summary *view,
bool32 result = false;
if (view != 0){
Buffer_Summary buffer = {0};
Buffer_Summary buffer = {};
if (open_file(app, &buffer, filename, filename_len, false, never_new)){
view_set_buffer(app, view, buffer.buffer_id, 0);
result = true;
@ -626,7 +622,7 @@ get_view_prev(Application_Links *app, View_Summary *view, uint32_t access){
View_ID original_id = view->view_id;
View_ID check_id = original_id;
View_Summary new_view = {0};
View_Summary new_view = {};
for (;;){
--check_id;
@ -660,7 +656,7 @@ kill_buffer(Application_Links *app, Buffer_Identifier identifier, View_ID gui_vi
static View_Summary
get_view_last(Application_Links *app, uint32_t access){
View_Summary view = {0};
View_Summary view = {};
view.exists = true;
get_view_prev(app, &view, access);
if (view.view_id < 1 || view.view_id > 16){
@ -699,7 +695,7 @@ refresh_view(Application_Links *app, View_Summary *view){
static int32_t
character_pos_to_pos(Application_Links *app, View_Summary *view, Buffer_Summary *buffer, int32_t character_pos){
int32_t result = 0;
Full_Cursor cursor = {0};
Full_Cursor cursor = {};
if (view_compute_cursor(app, view, seek_character_pos(character_pos), &cursor)){
result = cursor.pos;
}
@ -731,8 +727,8 @@ get_view_range(View_Summary *view){
static bool32
read_line(Application_Links *app, Partition *part, Buffer_Summary *buffer, int32_t line, String *str){
Partial_Cursor begin = {0};
Partial_Cursor end = {0};
Partial_Cursor begin = {};
Partial_Cursor end = {};
bool32 success = false;
if (buffer_compute_cursor(app, buffer, seek_line_char(line, 1), &begin)){
@ -761,7 +757,7 @@ static int32_t
buffer_get_line_start(Application_Links *app, Buffer_Summary *buffer, int32_t line){
int32_t result = buffer->size;
if (line <= buffer->line_count){
Partial_Cursor partial_cursor = {0};
Partial_Cursor partial_cursor = {};
buffer_compute_cursor(app, buffer, seek_line_char(line, 1), &partial_cursor);
result = partial_cursor.pos;
}
@ -772,7 +768,7 @@ static int32_t
buffer_get_line_end(Application_Links *app, Buffer_Summary *buffer, int32_t line){
int32_t result = buffer->size;
if (line <= buffer->line_count){
Partial_Cursor partial_cursor = {0};
Partial_Cursor partial_cursor = {};
buffer_compute_cursor(app, buffer, seek_line_char(line, -1), &partial_cursor);
result = partial_cursor.pos;
}
@ -781,7 +777,7 @@ buffer_get_line_end(Application_Links *app, Buffer_Summary *buffer, int32_t line
static int32_t
buffer_get_line_number(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
Partial_Cursor partial_cursor = {0};
Partial_Cursor partial_cursor = {};
buffer_compute_cursor(app, buffer, seek_pos(pos), &partial_cursor);
return(partial_cursor.line);
}
@ -1029,7 +1025,7 @@ get_query_string(Application_Links *app, char *query_str, char *string_space, in
static String
get_string_in_view_range(Application_Links *app, Partition *arena, View_Summary *view){
String str = {0};
String str = {};
Buffer_Summary buffer = get_buffer(app, view->buffer_id, AccessProtected);
if (!buffer.exists) return(str);
Range range = get_view_range(view);
@ -1045,8 +1041,8 @@ get_string_in_view_range(Application_Links *app, Partition *arena, View_Summary
static String
get_token_or_word_under_pos(Application_Links *app, Buffer_Summary *buffer, int32_t pos, char *space, int32_t capacity){
String result = {0};
Cpp_Get_Token_Result get_result = {0};
String result = {};
Cpp_Get_Token_Result get_result = {};
bool32 success = buffer_get_token_index(app, buffer, pos, &get_result);
if (success && !get_result.in_whitespace){
int32_t size = get_result.token_end - get_result.token_start;
@ -1062,7 +1058,7 @@ get_token_or_word_under_pos(Application_Links *app, Buffer_Summary *buffer, int3
static String
build_string(Partition *part, char *s0, char *s1, char *s2){
String sr = {0};
String sr = {};
sr.memory_size = str_size(s0) + str_size(s1) + str_size(s2) + 1;
sr.str = push_array(part, char, sr.memory_size);
if (sr.str != 0){
@ -1075,7 +1071,7 @@ build_string(Partition *part, char *s0, char *s1, char *s2){
static String
build_string(Partition *part, char *s0, char *s1, String s2){
String sr = {0};
String sr = {};
sr.memory_size = str_size(s0) + str_size(s1) + s2.size + 1;
sr.str = push_array(part, char, sr.memory_size);
if (sr.str != 0){
@ -1089,7 +1085,7 @@ build_string(Partition *part, char *s0, char *s1, String s2){
static String
build_string(Partition *part, char *s0, String s1, char *s2){
String sr = {0};
String sr = {};
sr.memory_size = str_size(s0) + s1.size + str_size(s2) + 1;
sr.str = push_array(part, char, sr.memory_size);
if (sr.str != 0){
@ -1103,7 +1099,7 @@ build_string(Partition *part, char *s0, String s1, char *s2){
static String
build_string(Partition *part, char *s0, String s1, String s2){
String sr = {0};
String sr = {};
sr.memory_size = str_size(s0) + s1.size + s2.size + 1;
sr.str = push_array(part, char, sr.memory_size);
if (sr.str != 0){
@ -1117,7 +1113,7 @@ build_string(Partition *part, char *s0, String s1, String s2){
static String
build_string(Partition *part, String s0, char *s1, char *s2){
String sr = {0};
String sr = {};
sr.memory_size = s0.size + str_size(s1) + str_size(s2) + 1;
sr.str = push_array(part, char, sr.memory_size);
if (sr.str != 0){
@ -1131,7 +1127,7 @@ build_string(Partition *part, String s0, char *s1, char *s2){
static String
build_string(Partition *part, String s0, char *s1, String s2){
String sr = {0};
String sr = {};
sr.memory_size = s0.size + str_size(s1) + s2.size + 1;
sr.str = push_array(part, char, sr.memory_size);
if (sr.str != 0){
@ -1145,7 +1141,7 @@ build_string(Partition *part, String s0, char *s1, String s2){
static String
build_string(Partition *part, String s0, String s1, char *s2){
String sr = {0};
String sr = {};
sr.memory_size = s0.size + s1.size + str_size(s2) + 1;
sr.str = push_array(part, char, sr.memory_size);
if (sr.str != 0){
@ -1159,7 +1155,7 @@ build_string(Partition *part, String s0, String s1, char *s2){
static String
build_string(Partition *part, String s0, String s1, String s2){
String sr = {0};
String sr = {};
sr.memory_size = s0.size + s1.size + s2.size + 1;
sr.str = push_array(part, char, sr.memory_size);
if (sr.str != 0){
@ -1205,7 +1201,7 @@ get_hot_directory(Application_Links *app, Partition *arena){
static String
dump_file_handle(Partition *arena, FILE *file){
String str = {0};
String str = {};
if (file != 0){
fseek(file, 0, SEEK_END);
int32_t size = ftell(file);
@ -1223,7 +1219,7 @@ dump_file_handle(Partition *arena, FILE *file){
static File_Handle_Path
open_file_search_up_path(Partition *arena, String path, String file_name){
File_Handle_Path result = {0};
File_Handle_Path result = {};
int32_t cap = path.size + file_name.size + 2;
char *space = push_array(arena, char, cap);
@ -1301,7 +1297,7 @@ open_file(Partition *scratch, String name){
static File_Name_Data
dump_file(Partition *arena, String file_name){
File_Name_Data result = {0};
File_Name_Data result = {};
FILE *file = open_file(arena, file_name);
if (file != 0){
result.file_name = file_name;
@ -1313,7 +1309,7 @@ dump_file(Partition *arena, String file_name){
static File_Name_Path_Data
dump_file_search_up_path(Partition *arena, String path, String file_name){
File_Name_Path_Data result = {0};
File_Name_Path_Data result = {};
File_Handle_Path file = open_file_search_up_path(arena, path, file_name);
if (file.file != 0){
result.file_name = file_name;
@ -1327,7 +1323,7 @@ dump_file_search_up_path(Partition *arena, String path, String file_name){
static String
push_string(Partition *arena, int32_t cap){
char *mem = push_array(arena, char, cap);
String result = {0};
String result = {};
if (mem != 0){
result = make_string_cap(mem, 0, cap);
}
@ -1336,7 +1332,7 @@ push_string(Partition *arena, int32_t cap){
static String
push_string_copy(Partition *arena, String str){
String result = {0};
String result = {};
if (str.str != 0){
result = push_string(arena, str.size + 1);
push_align(arena, 8);
@ -1396,7 +1392,7 @@ sort_pairs_by_key(Sort_Pair_i32 *pairs, int32_t count){
static Range_Array
get_ranges_of_duplicate_keys(Partition *arena, int32_t *keys, int32_t stride, int32_t count){
Range_Array result = {0};
Range_Array result = {};
result.ranges = push_array(arena, Range, 0);
uint8_t *ptr = (uint8_t*)keys;
int32_t start_i = 0;
@ -1433,7 +1429,7 @@ no_mark_snap_to_cursor(Application_Links *app, View_ID view_id){
static void
no_mark_snap_to_cursor_if_shift(Application_Links *app, View_ID view_id){
User_Input in = get_command_input(app);
if (in.type == UserInputKey && in.key.modifiers[MDFR_SHIFT_INDEX]){
if (in.key.modifiers[MDFR_SHIFT_INDEX]){
no_mark_snap_to_cursor(app, view_id);
}
}

View File

@ -11,12 +11,12 @@ CUSTOM_DOC("If the cursor is found to be on a jump location, parses the jump loc
Temp_Memory temp = begin_temp_memory(&global_part);
View_Summary view = get_active_view(app, AccessProtected);
Name_Line_Column_Location location = {0};
Name_Line_Column_Location location = {};
if (parse_jump_from_buffer_line(app, &global_part, view.buffer_id, view.cursor.line, false, &location)){
change_active_panel(app);
View_Summary target_view = get_active_view(app, AccessAll);
Buffer_Summary buffer = {0};
Buffer_Summary buffer = {};
if (get_jump_buffer(app, &buffer, &location)){
switch_to_existing_view(app, &target_view, &buffer);
jump_to_location(app, &target_view, &buffer, location);
@ -32,11 +32,11 @@ CUSTOM_DOC("If the cursor is found to be on a jump location, parses the jump loc
Temp_Memory temp = begin_temp_memory(&global_part);
View_Summary view = get_active_view(app, AccessProtected);
Name_Line_Column_Location location = {0};
Name_Line_Column_Location location = {};
if (parse_jump_from_buffer_line(app, &global_part, view.buffer_id, view.cursor.line, false, &location)){
View_Summary target_view = view;
Buffer_Summary buffer = {0};
Buffer_Summary buffer = {};
if (get_jump_buffer(app, &buffer, &location)){
jump_to_location(app, &target_view, &buffer, location);
}

View File

@ -13,7 +13,7 @@ activate_jump(Application_Links *app, Partition *scratch, Heap *heap,
Jump_Lister_Parameters *params = (Jump_Lister_Parameters*)state->lister.user_data;
Marker_List *list = get_marker_list_for_buffer(params->list_buffer_id);
if (list != 0){
View_Summary target_view = {0};
View_Summary target_view = {};
switch (params->activation_rule){
case JumpListerActivation_OpenInUIView:
{
@ -48,9 +48,9 @@ activate_jump(Application_Links *app, Partition *scratch, Heap *heap,
}break;
}
ID_Pos_Jump_Location location = {0};
ID_Pos_Jump_Location location = {};
if (get_jump_from_list(app, list, list_index, &location)){
Buffer_Summary buffer = {0};
Buffer_Summary buffer = {};
if (get_jump_buffer(app, &buffer, &location)){
set_active_view(app, &target_view);
jump_to_location(app, &target_view, &buffer, location);
@ -77,9 +77,9 @@ open_jump_lister(Application_Links *app, Partition *scratch, Heap *heap,
Lister_Option *options = push_array(scratch, Lister_Option, option_count);
Managed_Object stored_jumps = list->jump_array;
for (int32_t i = 0; i < option_count; i += 1){
Sticky_Jump_Stored stored = {0};
Sticky_Jump_Stored stored = {};
managed_object_load_data(app, stored_jumps, i, 1, &stored);
String line = {0};
String line = {};
read_line(app, scratch, &list_buffer, stored.list_line, &line);
options[i].string = line.str;
options[i].status = 0;
@ -89,7 +89,7 @@ open_jump_lister(Application_Links *app, Partition *scratch, Heap *heap,
estimated_string_space_size += aligned_size;
}
Jump_Lister_Parameters jump_lister_params = {0};
Jump_Lister_Parameters jump_lister_params = {};
jump_lister_params.list_buffer_id = list_buffer_id;
jump_lister_params.activation_rule = activation_rule;
if (optional_target_view != 0){

View File

@ -40,7 +40,7 @@ binary_search(uint32_t *array, int32_t stride, int32_t count, uint32_t x){
static Sticky_Jump_Array
parse_buffer_to_jump_array(Application_Links *app, Partition *arena, Buffer_Summary buffer){
Sticky_Jump_Array result = {0};
Sticky_Jump_Array result = {};
result.jumps = push_array(arena, Sticky_Jump, 0);
for (int32_t line = 1;; line += 1){
@ -51,14 +51,14 @@ parse_buffer_to_jump_array(Application_Links *app, Partition *arena, Buffer_Summ
int32_t out_pos = 0;
Temp_Memory temp = begin_temp_memory(arena);
String line_str = {0};
String line_str = {};
if (read_line(app, arena, &buffer, line, &line_str)){
Name_Line_Column_Location location = {0};
Name_Line_Column_Location location = {};
if (parse_jump_location(line_str, &location, &colon_index, &is_sub_error)){
Buffer_Summary jump_buffer = {0};
Buffer_Summary jump_buffer = {};
if (open_file(app, &jump_buffer, location.file.str, location.file.size, false, true)){
if (jump_buffer.exists){
Partial_Cursor cursor = {0};
Partial_Cursor cursor = {};
if (buffer_compute_cursor(app, &jump_buffer,
seek_line_char(location.line, location.column),
&cursor)){
@ -117,7 +117,7 @@ init_marker_list(Application_Links *app, Partition *scratch, Heap *heap, Buffer_
Sticky_Jump_Stored *stored = push_array(scratch, Sticky_Jump_Stored, jumps.count);
Managed_Scope scope_array[2] = {0};
Managed_Scope scope_array[2] = {};
scope_array[0] = buffer_get_managed_scope(app, buffer_id);
for (int32_t i = 0; i < scoped_buffer_ranges.count; i += 1){
@ -240,7 +240,7 @@ get_or_make_list_for_buffer(Application_Links *app, Partition *scratch, Heap *he
static bool32
get_stored_jump_from_list(Application_Links *app, Marker_List *list, int32_t index,
Sticky_Jump_Stored *stored_out){
Sticky_Jump_Stored stored = {0};
Sticky_Jump_Stored stored = {};
if (list != 0){
if (managed_object_load_data(app, list->jump_array, index, 1, &stored)){
*stored_out = stored;
@ -268,11 +268,11 @@ get_all_stored_jumps_from_list(Application_Links *app, Partition *arena, Marker_
static bool32
get_jump_from_list(Application_Links *app, Marker_List *list, int32_t index, ID_Pos_Jump_Location *location){
Sticky_Jump_Stored stored = {0};
Sticky_Jump_Stored stored = {};
if (get_stored_jump_from_list(app, list, index, &stored)){
Buffer_ID target_buffer_id = stored.jump_buffer_id;
Managed_Scope scope_array[2] = {0};
Managed_Scope scope_array[2] = {};
scope_array[0] = buffer_get_managed_scope(app, list->buffer_id);
scope_array[1] = buffer_get_managed_scope(app, target_buffer_id);
Managed_Scope scope = get_managed_scope_with_multiple_dependencies(app, scope_array, ArrayCount(scope_array));
@ -280,7 +280,7 @@ get_jump_from_list(Application_Links *app, Marker_List *list, int32_t index, ID_
sticky_jump_marker_handle_loc = managed_variable_create_or_get_id(app, sticky_jump_marker_handle_var, 0);
Managed_Object marker_array = 0;
if (managed_variable_get(app, scope, sticky_jump_marker_handle_loc, &marker_array)){
Marker marker = {0};
Marker marker = {};
managed_object_load_data(app, marker_array, stored.index_into_marker_array, 1, &marker);
location->buffer_id = target_buffer_id;
location->pos = marker.pos;
@ -294,7 +294,7 @@ static int32_t
get_line_from_list(Application_Links *app, Marker_List *list, int32_t index){
int32_t result = 0;
if (list != 0){
Sticky_Jump_Stored stored = {0};
Sticky_Jump_Stored stored = {};
if (get_stored_jump_from_list(app, list, index, &stored)){
result = stored.list_line;
}
@ -306,7 +306,7 @@ static bool32
get_is_sub_error_from_list(Application_Links *app, Marker_List *list, int32_t index){
bool32 result = false;
if (list != 0){
Sticky_Jump_Stored stored = {0};
Sticky_Jump_Stored stored = {};
if (get_stored_jump_from_list(app, list, index, &stored)){
result = stored.is_sub_error;
}
@ -358,9 +358,9 @@ CUSTOM_DOC("If the cursor is found to be on a jump location, parses the jump loc
int32_t list_index = get_index_exact_from_list(app, part, list, view.cursor.line);
if (list_index >= 0){
ID_Pos_Jump_Location location = {0};
ID_Pos_Jump_Location location = {};
if (get_jump_from_list(app, list, list_index, &location)){
Buffer_Summary buffer = {0};
Buffer_Summary buffer = {};
if (get_jump_buffer(app, &buffer, &location)){
change_active_panel(app);
View_Summary target_view = get_active_view(app, AccessAll);
@ -385,9 +385,9 @@ CUSTOM_DOC("If the cursor is found to be on a jump location, parses the jump loc
int32_t list_index = get_index_exact_from_list(app, part, list, view.cursor.line);
if (list_index >= 0){
ID_Pos_Jump_Location location = {0};
ID_Pos_Jump_Location location = {};
if (get_jump_from_list(app, list, list_index, &location)){
Buffer_Summary buffer = {0};
Buffer_Summary buffer = {};
if (get_jump_buffer(app, &buffer, &location)){
View_Summary target_view = view;
jump_to_location(app, &target_view, &buffer, location);
@ -400,7 +400,7 @@ CUSTOM_DOC("If the cursor is found to be on a jump location, parses the jump loc
static void
goto_jump_in_order(Application_Links *app, Marker_List *list, View_Summary *jump_view, ID_Pos_Jump_Location location){
Buffer_Summary buffer = {0};
Buffer_Summary buffer = {};
if (get_jump_buffer(app, &buffer, &location)){
View_Summary target_view = get_active_view(app, AccessAll);
if (target_view.view_id == jump_view->view_id){
@ -434,7 +434,7 @@ goto_next_filtered_jump(Application_Links *app, Marker_List *list, View_Summary
if (list != 0){
for (;list_index >= 0 && list_index < list->jump_count;){
ID_Pos_Jump_Location location = {0};
ID_Pos_Jump_Location location = {};
if (get_jump_from_list(app, list, list_index, &location)){
bool32 skip_this = false;
if (skip_repeats && jump_is_repeat(prev_location, location)){
@ -459,7 +459,7 @@ goto_next_filtered_jump(Application_Links *app, Marker_List *list, View_Summary
static Locked_Jump_State
get_locked_jump_state(Application_Links *app, Partition *part, Heap *heap){
Locked_Jump_State result = {0};
Locked_Jump_State result = {};
result.view = get_view_for_locked_jump_buffer(app);
if (result.view.exists){
result.list = get_or_make_list_for_buffer(app, part, heap, result.view.buffer_id);
@ -538,7 +538,7 @@ CUSTOM_DOC("If a buffer containing jump locations has been locked in, goes to th
Locked_Jump_State jump_state = get_locked_jump_state(app, part, heap);
if (jump_state.view.exists){
int32_t list_index = 0;
ID_Pos_Jump_Location location = {0};
ID_Pos_Jump_Location location = {};
if (get_jump_from_list(app, jump_state.list, list_index, &location)){
goto_jump_in_order(app, jump_state.list, &jump_state.view, location);
int32_t updated_line = get_line_from_list(app, jump_state.list, list_index);
@ -556,9 +556,9 @@ CUSTOM_DOC("If a buffer containing jump locations has been locked in, goes to th
Locked_Jump_State jump_state = get_locked_jump_state(app, part, heap);
if (jump_state.view.exists){
int32_t list_index = 0;
ID_Pos_Jump_Location location = {0};
ID_Pos_Jump_Location location = {};
if (get_jump_from_list(app, jump_state.list, list_index, &location)){
Buffer_Summary buffer = {0};
Buffer_Summary buffer = {};
if (get_jump_buffer(app, &buffer, &location)){
jump_to_location(app, &jump_state.view, &buffer, location);
}

View File

@ -175,7 +175,7 @@ parse_jump_from_buffer_line(Application_Links *app, Partition *arena,
int32_t buffer_id, int32_t line,
bool32 skip_sub_errors, Name_Line_Column_Location *location){
int32_t result = false;
String line_str = {0};
String line_str = {};
Buffer_Summary buffer = get_buffer(app, buffer_id, AccessAll);
if (read_line(app, arena, &buffer, line, &line_str)){
int32_t colon_char = 0;
@ -252,7 +252,7 @@ seek_next_jump_in_buffer(Application_Links *app, Partition *part,
bool32 result = false;
int32_t line = first_line;
String line_str = {0};
String line_str = {};
Buffer_Summary buffer = get_buffer(app, buffer_id, AccessAll);
for (;;){
if (read_line(app, part, &buffer, line, &line_str)){
@ -278,7 +278,7 @@ seek_next_jump_in_buffer(Application_Links *app, Partition *part,
static ID_Line_Column_Jump_Location
convert_name_based_to_id_based(Application_Links *app, Name_Line_Column_Location loc){
ID_Line_Column_Jump_Location result = {0};
ID_Line_Column_Jump_Location result = {};
Buffer_Summary buffer = get_buffer_by_name(app, loc.file.str, loc.file.size, AccessAll);
if (buffer.exists){
@ -294,7 +294,7 @@ static int32_t
seek_next_jump_in_view(Application_Links *app, Partition *part, View_Summary *view, int32_t skip_sub_errors, int32_t direction, int32_t *line_out, int32_t *colon_index_out, Name_Line_Column_Location *location_out){
int32_t result = false;
Name_Line_Column_Location location = {0};
Name_Line_Column_Location location = {};
int32_t line = view->cursor.line;
int32_t colon_index = 0;
if (seek_next_jump_in_buffer(app, part, view->buffer_id, line+direction, skip_sub_errors, direction, &line, &colon_index, &location)){
@ -320,8 +320,8 @@ static bool32
advance_cursor_in_jump_view(Application_Links *app, Partition *part, View_Summary *view, int32_t skip_repeats, int32_t skip_sub_error, int32_t direction, Name_Line_Column_Location *location_out){
bool32 result = true;
Name_Line_Column_Location location = {0};
ID_Line_Column_Jump_Location jump = {0};
Name_Line_Column_Location location = {};
ID_Line_Column_Jump_Location jump = {};
int32_t line = 0;
int32_t colon_index = 0;
@ -355,10 +355,10 @@ seek_jump(Application_Links *app, Partition *part, bool32 skip_repeats, bool32 s
View_Summary view = get_view_for_locked_jump_buffer(app);
if (view.exists){
Name_Line_Column_Location location = {0};
Name_Line_Column_Location location = {};
if (advance_cursor_in_jump_view(app, &global_part, &view, skip_repeats, skip_sub_errors, direction, &location)){
Buffer_Summary buffer = {0};
Buffer_Summary buffer = {};
if (get_jump_buffer(app, &buffer, &location)){
View_Summary target_view = get_active_view(app, AccessAll);
if (target_view.view_id == view.view_id){

View File

@ -11,7 +11,7 @@ distribute, and modify this file as you see fit.
inline Partition
make_part(void *memory, i32_4tech size){
Partition partition = {0};
Partition partition = {};
partition.base = (char*)memory;
partition.pos = 0;
partition.max = size;
@ -65,9 +65,7 @@ partition_sub_part(Partition *data, i32_4tech size){
return(result);
}
#define push_struct(part, T) (T*)partition_allocate(part, sizeof(T))
#define push_array(part, T, size) (T*)partition_allocate(part, sizeof(T)*(size))
#define push_block(part, size) partition_allocate(part, size)
#define push_align(part, b) partition_align(part, b)
inline Temp_Memory
@ -85,7 +83,7 @@ end_temp_memory(Temp_Memory temp){
inline Tail_Temp_Partition
begin_tail_part(Partition *data, i32_4tech size){
Tail_Temp_Partition result = {0};
Tail_Temp_Partition result = {};
if (data->pos + size <= data->max){
result.handle = data;
result.old_max = data->max;

View File

@ -65,7 +65,7 @@ typedef struct String{
i32_4tech memory_size;
} String;
static String null_string = {0};
static String null_string = {};
#endif
#if !defined(FCODER_STRING_H)
@ -551,7 +551,7 @@ substr(String str, i32_4tech start, i32_4tech size)
FSTRING_LINK String
skip_whitespace(String str)
{
String result = {0};
String result = {};
i32_4tech i = 0;
for (; i < str.size && char_is_whitespace(str.str[i]); ++i);
result = substr(str, i, str.size - i);
@ -564,7 +564,7 @@ skip_whitespace(String str)
FSTRING_LINK String
skip_whitespace_measure(String str, i32_4tech *skip_length)
{
String result = {0};
String result = {};
i32_4tech i = 0;
for (; i < str.size && char_is_whitespace(str.str[i]); ++i);
result = substr(str, i, str.size - i);
@ -577,7 +577,7 @@ skip_whitespace_measure(String str, i32_4tech *skip_length)
FSTRING_LINK String
chop_whitespace(String str)
{
String result = {0};
String result = {};
i32_4tech i = str.size;
for (; i > 0 && char_is_whitespace(str.str[i-1]); --i);
result = substr(str, 0, i);
@ -1863,7 +1863,7 @@ typedef struct Float_To_Str_Variables{
static Float_To_Str_Variables
get_float_vars(float x){
Float_To_Str_Variables vars = {0};
Float_To_Str_Variables vars = {};
if (x < 0){
vars.negative = 1;
@ -2219,7 +2219,7 @@ string_set_match(String *str_set, i32_4tech count, String str, i32_4tech *match_
#if defined(FSTRING_IMPLEMENTATION)
FSTRING_LINK String
get_first_double_line(String source){
String line = {0};
String line = {};
i32_4tech pos0 = find_substr_s(source, 0, make_lit_string("\n\n"));
i32_4tech pos1 = find_substr_s(source, 0, make_lit_string("\r\n\r\n"));
if (pos1 < pos0){
@ -2233,7 +2233,7 @@ get_first_double_line(String source){
#if defined(FSTRING_IMPLEMENTATION)
FSTRING_LINK String
get_next_double_line(String source, String line){
String next = {0};
String next = {};
i32_4tech pos = (i32_4tech)(line.str - source.str) + line.size;
i32_4tech start = 0, pos0 = 0, pos1 = 0;
@ -2259,7 +2259,7 @@ get_next_double_line(String source, String line){
FSTRING_LINK String
get_next_word(String source, String prev_word){
String word = {0};
String word = {};
i32_4tech pos0 = (i32_4tech)(prev_word.str - source.str) + prev_word.size;
i32_4tech pos1 = 0;
char c = 0;

View File

@ -201,7 +201,7 @@ DOC(This call reads in an array of strings, either null terminated or not, and o
DOC_SEE(cpp_get_table_memory_size_null_terminated)
DOC_SEE(cpp_get_table_memory_size_string_lengths)
*/{
Cpp_Keyword_Table table = {0};
Cpp_Keyword_Table table = {};
table.mem = memory;
table.memsize = memsize;
table.keywords = (u64_4tech*)memory;
@ -1326,7 +1326,7 @@ File_Data file = read_whole_file(file_name);
Cpp_Lex_Data lex_state = cpp_lex_data_init(false);
Cpp_Token_Array array = {0};
Cpp_Token_Array array = {};
array.tokens = (Cpp_Token*)malloc(1 << 20); // hopefully big enough
array.max_count = (1 << 20)/sizeof(Cpp_Token);
@ -1370,7 +1370,7 @@ DOC_RETURN(A brand new lex state setup to lex from the beginning of the file.)
DOC(Creates a new lex state in the form of a Cpp_Lex_Data struct and returns the struct.)
*/{
Cpp_Lex_Data data = {0};
Cpp_Lex_Data data = {};
data.ignore_string_delims = (b8_4tech)ignore_string_delims;
data.keyword_table = keywords;
data.preprops_table = preprocessor_words;
@ -1434,8 +1434,8 @@ DOC_PARAM(start_pos, The start position of the edited region of the file.
The start and end points are based on the edited region of the file before the edit.)
DOC_PARAM(end_pos, The end position of the edited region of the file. In particular, end_pos is the first character after the edited region not effected by the edit. Thus if the edited region contained one character end_pos - start_pos should equal 1. The start and end points are based on the edited region of the file before the edit.)
*/{
Cpp_Relex_Range range = {0};
Cpp_Get_Token_Result get_result = {0};
Cpp_Relex_Range range = {};
Cpp_Get_Token_Result get_result = {};
get_result = cpp_get_token(*array, start_pos);
range.start_token_index = get_result.token_index-1;
@ -1477,7 +1477,7 @@ DOC_SEE(cpp_relex_declare_first_chunk_position)
DOC_SEE(cpp_relex_is_start_chunk)
*/{
Cpp_Relex_Data state = {0};
Cpp_Relex_Data state = {};
Cpp_Relex_Range range = cpp_get_relex_range(array, start_pos, end_pos);
state.start_token_index = range.start_token_index;
@ -1832,7 +1832,7 @@ DOC_SEE(cpp_free_table)
DOC_SEE(Cpp_Word_Table_Type)
DOC_SEE(cpp_make_table)
*/{
Cpp_Keyword_Table result = {0};
Cpp_Keyword_Table result = {};
umem_4tech size = cpp_get_table_memory_size_default(type);
if (size > 0){
void *mem = malloc((size_t)size);

View File

@ -279,7 +279,7 @@ STRUCT Cpp_Token_Array{
int32_t max_count;
};
static Cpp_Token_Array null_cpp_token_array = {0};
static Cpp_Token_Array null_cpp_token_array = {};
/* DOC(Cpp_Get_Token_Result is the return result of the cpp_get_token call.)
DOC_SEE(cpp_get_token) */
@ -312,7 +312,7 @@ struct Cpp_Lex_FSM{
uint8_t emit_token;
uint8_t flags;
};
static Cpp_Lex_FSM null_lex_fsm = {0};
static Cpp_Lex_FSM null_lex_fsm = {};
/* DOC(A Cpp_Keyword_Table contains a list of keywords and a hashed lookup table for the keywords. They are used to setup a parse context.)
DOC_SEE(cpp_make_token_array)

View File

@ -287,7 +287,7 @@ CUSTOM_DOC("A lister mode command that handles input for the fixed sure to kill
static Lister_Handlers
lister_get_default_handlers(void){
Lister_Handlers handlers = {0};
Lister_Handlers handlers = {};
handlers.write_character = lister__write_character__default;
handlers.backspace = lister__backspace_text_field__default;
handlers.navigate_up = lister__move_up__default;
@ -297,7 +297,7 @@ lister_get_default_handlers(void){
static Lister_Handlers
lister_get_fixed_list_handlers(void){
Lister_Handlers handlers = {0};
Lister_Handlers handlers = {};
handlers.write_character = lister__write_character__fixed_list;
handlers.backspace = 0;
handlers.navigate_up = lister__move_up__default;
@ -452,7 +452,7 @@ begin_integrated_lister__ui_list(Application_Links *app, char *query_string,
static void
generate_all_buffers_list__output_buffer(Partition *arena, Lister *lister, Buffer_Summary buffer){
String status = {0};
String status = {};
switch (buffer.dirty){
case DirtyState_UnsavedChanges: status = make_lit_string("*"); break;
case DirtyState_UnloadedChanges: status = make_lit_string("!"); break;
@ -536,7 +536,7 @@ generate_hot_directory_file_list(Application_Links *app, Partition *arena, Liste
lister_begin_new_item_set(lister);
String hot = get_hot_directory(app, arena);
push_align(arena, 8);
File_List file_list = {0};
File_List file_list = {};
if (hot.str != 0){
file_list = get_file_list(app, hot.str, hot.size);
}
@ -561,7 +561,7 @@ generate_hot_directory_file_list(Application_Links *app, Partition *arena, Liste
char *status_flag = "";
Temp_Memory path_temp = begin_temp_memory(arena);
String full_file_path = {0};
String full_file_path = {};
full_file_path.size = 0;
full_file_path.memory_size = hot.size + 1 + info->filename_len + 1;
full_file_path.str = push_array(arena, char, full_file_path.memory_size);
@ -801,7 +801,7 @@ activate_open_or_new(Application_Links *app, Partition *scratch, Heap *heap,
View_Summary *view, struct Lister_State *state,
String text_field, void *user_data, bool32 clicked){
Lister_Activation_Code result = 0;
String file_name = {0};
String file_name = {};
if (user_data == 0){
file_name = front_of_directory(text_field);
}
@ -866,7 +866,7 @@ activate_open(Application_Links *app, Partition *scratch, Heap *heap,
View_Summary *view, struct Lister_State *state,
String text_field, void *user_data, bool32 clicked){
Lister_Activation_Code result = 0;
String file_name = {0};
String file_name = {};
if (user_data != 0){
file_name = make_string_slowly((char*)user_data);
}

View File

@ -33,7 +33,7 @@ line_column_coordinates(String text, int32_t pos){
pos = text.size;
}
Line_Column_Coordinates coords = {0};
Line_Column_Coordinates coords = {};
coords.line = 1;
coords.column = 1;
char *end = text.str + pos;
@ -79,7 +79,7 @@ struct Temp_Read{
static Reader
make_reader(Cpp_Token_Array array, char *source_name, String text){
Reader reader = {0};
Reader reader = {};
reader.tokens = array;
reader.ptr = array.tokens;
reader.source_name = source_name;
@ -89,7 +89,7 @@ make_reader(Cpp_Token_Array array, char *source_name, String text){
static Cpp_Token
prev_token(Reader *reader){
Cpp_Token result = {0};
Cpp_Token result = {};
for (;;){
if (reader->ptr > reader->tokens.tokens + reader->tokens.count){
@ -116,7 +116,7 @@ prev_token(Reader *reader){
static Cpp_Token
get_token(Reader *reader){
Cpp_Token result = {0};
Cpp_Token result = {};
for (;;){
if (reader->ptr < reader->tokens.tokens){
@ -144,7 +144,7 @@ get_token(Reader *reader){
static Cpp_Token
peek_token(Reader *reader){
Cpp_Token result = {0};
Cpp_Token result = {};
if (reader->ptr < reader->tokens.tokens){
reader->ptr = reader->tokens.tokens;
@ -179,7 +179,7 @@ error(Reader *reader, int32_t pos, char *msg){
static Temp_Read
begin_temp_read(Reader *reader){
Temp_Read temp = {0};
Temp_Read temp = {};
temp.reader = reader;
temp.pos = reader->ptr;
return(temp);
@ -466,10 +466,10 @@ extract_string(Reader *reader, String *str_out, int32_t *opt_pos_out = 0){
static bool32
parse_documented_command(Partition *part, Meta_Command_Entry_Arrays *arrays, Reader *reader){
String name = {0};
String file_name = {0};
String line_number = {0};
String doc = {0};
String name = {};
String file_name = {};
String line_number = {};
String doc = {};
// Getting the command's name
int32_t start_pos = 0;
@ -552,8 +552,8 @@ parse_documented_command(Partition *part, Meta_Command_Entry_Arrays *arrays, Rea
static bool32
parse_alias(Partition *part, Meta_Command_Entry_Arrays *arrays, Reader *reader){
String name = {0};
String potential = {0};
String name = {};
String potential = {};
// Getting the alias's name
int32_t start_pos = 0;
@ -765,7 +765,7 @@ main(int argc, char **argv){
start_i = 3;
}
Meta_Command_Entry_Arrays entry_arrays = {0};
Meta_Command_Entry_Arrays entry_arrays = {};
for (int32_t i = start_i; i < argc; ++i){
Filename_Character *pattern_name = encode(part, argv[i]);
parse_files_by_pattern(part, &entry_arrays, pattern_name, recursive);

View File

@ -14,7 +14,7 @@ get_numeric_string_at_cursor(Application_Links *app, Buffer_Summary *buffer, int
if (char_is_numeric(current)){
char chunk[1024];
int32_t chunk_size = sizeof(chunk);
Stream_Chunk stream = {0};
Stream_Chunk stream = {};
int32_t pos = start_pos;
@ -97,7 +97,7 @@ CUSTOM_DOC("Increment an integer under the cursor by one.")
View_Summary view = get_active_view(app, AccessOpen);
Buffer_Summary buffer = get_buffer(app, view.buffer_id, AccessOpen);
Miblo_Number_Info number = {0};
Miblo_Number_Info number = {};
if (get_numeric_at_cursor(app, &buffer, view.cursor.pos, &number)){
char str_space[1024];
String str = make_fixed_width_string(str_space);
@ -113,7 +113,7 @@ CUSTOM_DOC("Decrement an integer under the cursor by one.")
View_Summary view = get_active_view(app, AccessOpen);
Buffer_Summary buffer = get_buffer(app, view.buffer_id, AccessOpen);
Miblo_Number_Info number = {0};
Miblo_Number_Info number = {};
if (get_numeric_at_cursor(app, &buffer, view.cursor.pos, &number)){
char str_space[1024];
String str = make_fixed_width_string(str_space);
@ -135,7 +135,7 @@ get_timestamp_string_at_cursor(Application_Links *app, Buffer_Summary *buffer, i
if (char_is_numeric(current) || current == ':'){
char chunk[1024];
int32_t chunk_size = sizeof(chunk);
Stream_Chunk stream = {0};
Stream_Chunk stream = {};
int32_t pos = start_pos;
@ -188,7 +188,7 @@ struct Miblo_Timestamp{
int32_t minute;
int32_t hour;
};
static Miblo_Timestamp null_miblo_timestamp = {0};
static Miblo_Timestamp null_miblo_timestamp = {};
enum{
MIBLO_SECOND,
@ -298,7 +298,7 @@ get_timestamp_at_cursor(Application_Links *app, Buffer_Summary *buffer, int32_t
}
if (count_colons == 1 || count_colons == 2){
Miblo_Timestamp t = {0};
Miblo_Timestamp t = {};
int32_t success = 0;
@ -362,7 +362,7 @@ miblo_time_stamp_alter(Application_Links *app, int32_t unit_type, int32_t amt){
View_Summary view = get_active_view(app, AccessOpen);
Buffer_Summary buffer = get_buffer(app, view.buffer_id, AccessOpen);
Miblo_Timestamp_Info timestamp = {0};
Miblo_Timestamp_Info timestamp = {};
if (get_timestamp_at_cursor(app, &buffer, view.cursor.pos, &timestamp)){
char str_space[1024];
String str = make_fixed_width_string(str_space);

View File

@ -4,14 +4,14 @@
// TOP
static Project current_project = {0};
static Partition current_project_arena = {0};
static Project current_project = {};
static Partition current_project_arena = {};
///////////////////////////////
static Project_File_Pattern_Array
get_pattern_array_from_cstring_array(Partition *arena, CString_Array list){
Project_File_Pattern_Array array = {0};
Project_File_Pattern_Array array = {};
int32_t count = list.count;
array.patterns = push_array(arena, Project_File_Pattern, count);
array.count = count;
@ -28,7 +28,7 @@ get_pattern_array_from_cstring_array(Partition *arena, CString_Array list){
static Project_File_Pattern_Array
get_pattern_array_from_extension_list(Partition *arena, Extension_List extension_list){
CString_Array list = {0};
CString_Array list = {};
list.strings = extension_list.exts;
list.count = extension_list.count;
return(get_pattern_array_from_cstring_array(arena, list));
@ -51,7 +51,7 @@ close_all_files_with_extension(Application_Links *app, Partition *scratch_part,
do_repeat = 0;
uint32_t access = AccessAll;
Buffer_Summary buffer = {0};
Buffer_Summary buffer = {};
for (buffer = get_buffer_first(app, access);
buffer.exists;
get_buffer_next(app, &buffer, access)){
@ -145,7 +145,7 @@ open_all_files_in_directory_pattern_match__inner(Application_Links *app, String
static Project_File_Pattern_Array
get_standard_blacklist(Partition *arena){
static char *dot_str = ".*";
CString_Array black_array = {0};
CString_Array black_array = {};
black_array.strings = &dot_str;
black_array.count = 1;
return(get_pattern_array_from_cstring_array(arena, black_array));
@ -234,7 +234,7 @@ parse_project__config_data__version_0(Partition *arena, String file_dir, Config
}
// Read the settings from project.4coder
String str = {0};
String str = {};
if (config_string_var(parsed, "extensions", 0, &str)){
Extension_List extension_list;
parse_extension_line_to_extension_list(str, &extension_list);
@ -263,12 +263,12 @@ parse_project__config_data__version_0(Partition *arena, String file_dir, Config
append_int_to_str(&command->name, j);
terminate_with_null(&command->name);
String cmd = {0};
String cmd = {};
if (config_compound_string_member(parsed, compound, "cmd", 0, &cmd)){
command->cmd = push_string_copy(arena, cmd);
}
String out = {0};
String out = {};
if (config_compound_string_member(parsed, compound, "out", 1, &out)){
command->out = push_string_copy(arena, out);
}
@ -344,7 +344,7 @@ parse_project__config_data__version_1(Partition *arena, String root_dir, Config
// project_name
{
String str = {0};
String str = {};
if (config_string_var(parsed, "project_name", 0, &str)){
project->name = push_string_copy(arena, str);
}
@ -378,7 +378,7 @@ parse_project__config_data__version_1(Partition *arena, String root_dir, Config
Config_Compound *paths = 0;
if (config_compound_compound_member(parsed, paths_option, "paths", 0, &paths)){
String str = {0};
String str = {};
if (config_compound_string_member(parsed, paths_option, "os", 1, &str)){
Project_OS_Match_Level r = parse_project__version_1__os_match(str, make_lit_string(PlatformName));
if (r == ProjectOSMatchLevel_ActiveMatch){
@ -411,7 +411,7 @@ parse_project__config_data__version_1(Partition *arena, String root_dir, Config
dst->recursive = true;
dst->relative = true;
String str = {0};
String str = {};
if (config_compound_string_member(parsed, src, "path", 0, &str)){
dst->path = push_string_copy(arena, str);
}
@ -442,12 +442,12 @@ parse_project__config_data__version_1(Partition *arena, String root_dir, Config
bool32 can_emit_command = true;
String name = {0};
Config_Get_Result cmd_result = {0};
String name = {};
Config_Get_Result cmd_result = {};
Config_Compound *cmd_set = 0;
char *cmd_pos = 0;
String cmd_str = {0};
String out = {0};
String cmd_str = {};
String out = {};
bool32 footer_panel = false;
bool32 save_dirty_files = true;
bool32 cursor_at_end = false;
@ -481,9 +481,9 @@ parse_project__config_data__version_1(Partition *arena, String root_dir, Config
}
Config_Compound *cmd_option = result.get.compound;
String cmd = {0};
String cmd = {};
if (config_compound_string_member(parsed, cmd_option, "cmd", 0, &cmd)){
String str = {0};
String str = {};
if (config_compound_string_member(parsed, cmd_option, "os", 1, &str)){
Project_OS_Match_Level r = parse_project__version_1__os_match(str, make_lit_string(PlatformName));
if (r == ProjectOSMatchLevel_ActiveMatch){
@ -528,7 +528,7 @@ parse_project__config_data__version_1(Partition *arena, String root_dir, Config
// fkey_command
{
for (int32_t i = 1; i <= 16; ++i){
String name = {0};
String name = {};
int32_t index = -1;
if (config_string_var(parsed, "fkey_command", i, &name)){
int32_t count = project->command_array.count;
@ -575,7 +575,7 @@ parse_project__config_data(Partition *arena, String file_dir, Config *parsed){
static Project_Parse_Result
parse_project__data(Partition *arena, String file_name, String data, String file_dir){
Project_Parse_Result result = {0};
Project_Parse_Result result = {};
Cpp_Token_Array array = text_data_to_token_array(arena, data);
if (array.tokens != 0){
result.parsed = text_data_and_token_array_to_parse_data(arena, file_name, data, array);
@ -588,10 +588,10 @@ parse_project__data(Partition *arena, String file_name, String data, String file
static Project_Parse_Result
parse_project__nearest_file(Application_Links *app, Partition *arena){
Project_Parse_Result result = {0};
Project_Parse_Result result = {};
Temp_Memory restore_point = begin_temp_memory(arena);
String project_path = {0};
String project_path = {};
int32_t size = 32 << 10;
char *space = push_array(arena, char, size);
if (space != 0){
@ -664,7 +664,7 @@ project_deep_copy__pattern_array(Partition *arena, Project_File_Pattern_Array *s
static Project
project_deep_copy__inner(Partition *arena, Project *project){
Project result = {0};
Project result = {};
result.dir = push_string_copy(arena, project->dir);
if (result.dir.str == 0){
@ -971,9 +971,9 @@ exec_project_command(Application_Links *app, Project_Command *command){
save_all_dirty_buffers(app);
}
View_Summary view = {0};
View_Summary view = {};
View_Summary *view_ptr = 0;
Buffer_Identifier buffer_id = {0};
Buffer_Identifier buffer_id = {};
uint32_t flags = CLI_OverlapWithConflict;
if (cursor_at_end){
flags |= CLI_CursorAtEnd;
@ -1091,24 +1091,22 @@ CUSTOM_COMMAND_SIG(project_fkey_command)
CUSTOM_DOC("Run an 'fkey command' configured in a project.4coder file. Determines the index of the 'fkey command' by which function key or numeric key was pressed to trigger the command.")
{
User_Input input = get_command_input(app);
if (input.type == UserInputKey){
bool32 got_ind = false;
int32_t ind = 0;
if (input.key.keycode >= key_f1 && input.key.keycode <= key_f16){
ind = (input.key.keycode - key_f1);
got_ind = true;
}
else if (input.key.character_no_caps_lock >= '1' && input.key.character_no_caps_lock >= '9'){
ind = (input.key.character_no_caps_lock - '1');
got_ind = true;
}
else if (input.key.character_no_caps_lock == '0'){
ind = 9;
got_ind = true;
}
if (got_ind){
exec_project_fkey_command(app, ind);
}
bool32 got_ind = false;
int32_t ind = 0;
if (input.key.keycode >= key_f1 && input.key.keycode <= key_f16){
ind = (input.key.keycode - key_f1);
got_ind = true;
}
else if (input.key.character_no_caps_lock >= '1' && input.key.character_no_caps_lock >= '9'){
ind = (input.key.character_no_caps_lock - '1');
got_ind = true;
}
else if (input.key.character_no_caps_lock == '0'){
ind = 9;
got_ind = true;
}
if (got_ind){
exec_project_fkey_command(app, ind);
}
}
@ -1125,7 +1123,7 @@ CUSTOM_DOC("Changes 4coder's hot directory to the root directory of the currentl
static Project_Setup_Status
project_is_setup(Application_Links *app, Partition *scratch, String script_path, String script_file){
Project_Setup_Status result = {0};
Project_Setup_Status result = {};
Temp_Memory temp = begin_temp_memory(scratch);
@ -1164,12 +1162,12 @@ project_key_strings_query_user(Application_Links *app,
char *code_file_space, int32_t code_file_cap,
char *output_dir_space, int32_t output_dir_cap,
char *binary_file_space, int32_t binary_file_cap){
Project_Key_Strings keys = {0};
Project_Key_Strings keys = {};
Query_Bar script_file_bar = {0};
Query_Bar code_file_bar = {0};
Query_Bar output_dir_bar = {0};
Query_Bar binary_file_bar = {0};
Query_Bar script_file_bar = {};
Query_Bar code_file_bar = {};
Query_Bar output_dir_bar = {};
Query_Bar binary_file_bar = {};
if (get_script_file){
script_file_bar.prompt = make_lit_string("Script Name: ");
@ -1394,7 +1392,7 @@ project_setup_scripts__generic(Application_Links *app, Partition *scratch,
String script_path = get_hot_directory(app, scratch);
bool32 needs_to_do_work = false;
Project_Setup_Status status = {0};
Project_Setup_Status status = {};
if (do_project_file){
status = project_is_setup(app, scratch, script_path, make_lit_string("build"));
needs_to_do_work =

View File

@ -31,7 +31,7 @@ mac_default_keys(Bind_Helper *context){
static Bind_Helper
get_context_on_global_part(void){
Bind_Helper result = {0};
Bind_Helper result = {};
int32_t size = (1 << 20);
for (;;){
void *data = push_array(&global_part, char, size);

View File

@ -41,7 +41,7 @@ find_scope_get_token_type(uint32_t flags, Cpp_Token_Type token_type){
static bool32
find_scope_top(Application_Links *app, Buffer_Summary *buffer, int32_t start_pos, uint32_t flags, int32_t *end_pos_out){
Cpp_Get_Token_Result get_result = {0};
Cpp_Get_Token_Result get_result = {};
bool32 success = false;
int32_t position = 0;
@ -58,7 +58,7 @@ find_scope_top(Application_Links *app, Buffer_Summary *buffer, int32_t start_pos
if (token_index >= 0){
static const int32_t chunk_cap = 512;
Cpp_Token chunk[chunk_cap];
Stream_Tokens stream = {0};
Stream_Tokens stream = {};
if (init_stream_tokens(&stream, app, buffer, token_index, chunk, chunk_cap)){int32_t nest_level = 0;
bool32 still_looping = false;
@ -100,7 +100,7 @@ find_scope_top(Application_Links *app, Buffer_Summary *buffer, int32_t start_pos
static bool32
find_scope_bottom(Application_Links *app, Buffer_Summary *buffer, int32_t start_pos, uint32_t flags, int32_t *end_pos_out){
Cpp_Get_Token_Result get_result = {0};
Cpp_Get_Token_Result get_result = {};
bool32 success = false;
int32_t position = 0;
@ -117,7 +117,7 @@ find_scope_bottom(Application_Links *app, Buffer_Summary *buffer, int32_t start_
if (token_index >= 0){
static const int32_t chunk_cap = 512;
Cpp_Token chunk[chunk_cap];
Stream_Tokens stream = {0};
Stream_Tokens stream = {};
if (init_stream_tokens(&stream, app, buffer, token_index, chunk, chunk_cap)){
int32_t nest_level = 0;
@ -160,7 +160,7 @@ find_scope_bottom(Application_Links *app, Buffer_Summary *buffer, int32_t start_
static bool32
find_next_scope(Application_Links *app, Buffer_Summary *buffer, int32_t start_pos, uint32_t flags, int32_t *end_pos_out){
Cpp_Get_Token_Result get_result = {0};
Cpp_Get_Token_Result get_result = {};
bool32 success = 0;
int32_t position = 0;
@ -171,7 +171,7 @@ find_next_scope(Application_Links *app, Buffer_Summary *buffer, int32_t start_po
if (token_index >= 0){
static const int32_t chunk_cap = 512;
Cpp_Token chunk[chunk_cap];
Stream_Tokens stream = {0};
Stream_Tokens stream = {};
if (init_stream_tokens(&stream, app, buffer, token_index, chunk, chunk_cap)){
if (flags & FindScope_NextSibling){
@ -239,7 +239,7 @@ find_next_scope(Application_Links *app, Buffer_Summary *buffer, int32_t start_po
static bool32
find_prev_scope(Application_Links *app, Buffer_Summary *buffer, int32_t start_pos, uint32_t flags, int32_t *end_pos_out){
Cpp_Get_Token_Result get_result = {0};
Cpp_Get_Token_Result get_result = {};
bool32 success = 0;
int32_t position = 0;
@ -250,7 +250,7 @@ find_prev_scope(Application_Links *app, Buffer_Summary *buffer, int32_t start_po
if (token_index >= 0){
static const int32_t chunk_cap = 512;
Cpp_Token chunk[chunk_cap];
Stream_Tokens stream = {0};
Stream_Tokens stream = {};
if (init_stream_tokens(&stream, app, buffer, token_index, chunk, chunk_cap)){
if (flags & FindScope_NextSibling){
@ -318,7 +318,7 @@ find_prev_scope(Application_Links *app, Buffer_Summary *buffer, int32_t start_po
static bool32
find_scope_range(Application_Links *app, Buffer_Summary *buffer, int32_t start_pos, Range *range_out,
uint32_t flags){
Range range = {0};
Range range = {};
if (find_scope_top(app, buffer, start_pos,
FindScope_Parent|flags,
&range.start)){
@ -340,8 +340,8 @@ view_set_to_region(Application_Links *app, View_Summary *view, int32_t major_pos
bottom_major = true;
}
Full_Cursor top = {0};
Full_Cursor bottom = {0};
Full_Cursor top = {};
Full_Cursor bottom = {};
if (view_compute_cursor(app, view, seek_pos(range.min), &top)){
if (view_compute_cursor(app, view, seek_pos(range.max), &bottom)){
float top_y = top.wrapped_y;
@ -389,7 +389,7 @@ CUSTOM_DOC("Finds the scope enclosed by '{' '}' surrounding the cursor and puts
View_Summary view = get_active_view(app, access);
Buffer_Summary buffer = get_buffer(app, view.buffer_id, access);
Range range = {0};
Range range = {};
if (find_scope_range(app, &buffer, view.cursor.pos, &range, FindScope_Brace)){
view_set_cursor(app, &view, seek_pos(range.first), true);
view_set_mark(app, &view, seek_pos(range.end));
@ -442,7 +442,7 @@ place_begin_and_end_on_own_lines(Application_Links *app, Partition *scratch, cha
View_Summary view = get_active_view(app, AccessOpen);
Buffer_Summary buffer = get_buffer(app, view.buffer_id, AccessOpen);
Range lines = {0};
Range lines = {};
Range range = get_view_range(&view);
lines.min = buffer_get_line_number(app, &buffer, range.min);
lines.max = buffer_get_line_number(app, &buffer, range.max);
@ -742,10 +742,10 @@ find_whole_statement_down(Application_Links *app, Buffer_Summary *buffer, int32_
int32_t start = pos;
int32_t end = start;
Cpp_Get_Token_Result get_result = {0};
Cpp_Get_Token_Result get_result = {};
if (buffer_get_token_index(app, buffer, pos, &get_result)){
Statement_Parser parser = {0};
Statement_Parser parser = {};
parser.token_index = get_result.token_index;
if (parser.token_index < 0){
@ -761,7 +761,7 @@ find_whole_statement_down(Application_Links *app, Buffer_Summary *buffer, int32_
if (init_stream_tokens(&parser.stream, app, buffer, parser.token_index, chunk, chunk_cap)){
parser.buffer = buffer;
Cpp_Token end_token = {0};
Cpp_Token end_token = {};
if (parse_statement_down(app, &parser, &end_token)){
end = end_token.start + end_token.size;
result = true;
@ -794,7 +794,7 @@ CUSTOM_DOC("If a scope is currently selected, and a statement or block statement
Temp_Memory temp = begin_temp_memory(part);
if (buffer_get_char(app, &buffer, top) == '{' && buffer_get_char(app, &buffer, bottom-1) == '}'){
Range range = {0};
Range range = {};
if (find_whole_statement_down(app, &buffer, bottom, &range.start, &range.end)){
char *string_space = push_array(part, char, range.end - range.start);
buffer_read_range(app, &buffer, range.start, range.end, string_space);

View File

@ -137,7 +137,7 @@ search_hit_add(Heap *heap, Table *hits, String_Space *space, char *str, int32_t
Assert(ostring.size != 0);
if (table_at_capacity(hits)){
Table new_hits = {0};
Table new_hits = {};
search_hits_table_alloc(heap, &new_hits, hits->max*2);
table_clear(&new_hits);
table_rehash(hits, &new_hits, space->space, tbl_offset_string_hash, tbl_offset_string_compare);
@ -200,7 +200,7 @@ seek_potential_match(Application_Links *app, Search_Range *range, Search_Key key
static int32_t
buffer_seek_alpha_numeric_end(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
char space[1024];
Stream_Chunk chunk = {0};
Stream_Chunk chunk = {};
if (init_stream_chunk(&chunk, app, buffer, pos, space, sizeof(space))){
int32_t still_looping = true;
do{
@ -378,7 +378,7 @@ search_iter_next_range(Search_Iter *it){
static Search_Match
search_next_match(Application_Links *app, Search_Set *set, Search_Iter *it_ptr){
Search_Match result = {0};
Search_Match result = {};
Search_Iter iter = *it_ptr;
int32_t count = set->count;
@ -416,8 +416,8 @@ search_next_match(Application_Links *app, Search_Set *set, Search_Iter *it_ptr){
case SearchRange_Wave:
{
Search_Match forward_match = {0};
Search_Match backward_match = {0};
Search_Match forward_match = {};
Search_Match backward_match = {};
int32_t forward_result = FindResult_PastEnd;
int32_t backward_result = FindResult_PastEnd;
@ -488,7 +488,7 @@ initialize_generic_search_all_buffers(Application_Links *app, Heap *heap, String
memset(set, 0, sizeof(*set));
memset(iter, 0, sizeof(*iter));
Search_Key key = {0};
Search_Key key = {};
int32_t sizes[ArrayCount(key.words)];
memset(sizes, 0, sizeof(sizes));
@ -598,7 +598,7 @@ buffered_print_match_jump_line(Application_Links *app, Partition *part, Temp_Mem
int32_t column_num_len = int_to_str_size(word_pos.character);
Temp_Memory line_temp = begin_temp_memory(line_part);
String line_str = {0};
String line_str = {};
if (read_line(app, line_part, match_buffer, word_pos.line, &line_str)){
line_str = skip_chop_whitespace(line_str);
@ -633,8 +633,8 @@ list__parameters(Application_Links *app, Heap *heap, Partition *scratch,
Buffer_Summary search_buffer = get_buffer(app, search_buffer_id, AccessAll);
// Initialize a generic search all buffers
Search_Set set = {0};
Search_Iter iter = {0};
Search_Set set = {};
Search_Iter iter = {};
initialize_generic_search_all_buffers(app, heap, strings, count, match_flags, &search_buffer.buffer_id, 1, &set, &iter);
// List all locations into search buffer
@ -646,7 +646,7 @@ list__parameters(Application_Links *app, Heap *heap, Partition *scratch,
for (Search_Match match = search_next_match(app, &set, &iter);
match.found_match;
match = search_next_match(app, &set, &iter)){
Partial_Cursor word_pos = {0};
Partial_Cursor word_pos = {};
if (buffer_compute_cursor(app, &match.buffer, seek_pos(match.start), &word_pos)){
if (prev_match_id != match.buffer.buffer_id){
if (prev_match_id != 0){
@ -851,7 +851,7 @@ CUSTOM_DOC("Reads a token or word under the cursor and lists all locations of st
// Word Complete Command
//
static Word_Complete_State complete_state = {0};
static Word_Complete_State complete_state = {};
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.")
@ -889,7 +889,7 @@ CUSTOM_DOC("Iteratively tries completing the word to the left of the cursor with
cursor_pos = word_end - 1;
char space[1024];
Stream_Chunk chunk = {0};
Stream_Chunk chunk = {};
if (init_stream_chunk(&chunk, app, &buffer, cursor_pos, space, sizeof(space))){
int32_t still_looping = true;
do{
@ -916,7 +916,7 @@ CUSTOM_DOC("Iteratively tries completing the word to the left of the cursor with
// NOTE(allen): Initialize the search iterator with the partial word.
complete_state.initialized = true;
Search_Key key = {0};
Search_Key key = {};
search_key_alloc(&global_heap, &key, &size, 1);
buffer_read_range(app, &buffer, word_start, word_end, key.words[0].str);
key.words[0].size = size;

View File

@ -8,7 +8,7 @@ static int32_t
seek_line_end(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
char chunk[1024];
int32_t chunk_size = sizeof(chunk);
Stream_Chunk stream = {0};
Stream_Chunk stream = {};
int32_t still_looping;
char at_pos;
@ -38,7 +38,7 @@ static int32_t
seek_line_beginning(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
char chunk[1024];
int32_t chunk_size = sizeof(chunk);
Stream_Chunk stream = {0};
Stream_Chunk stream = {};
int32_t still_looping;
char at_pos;
@ -74,7 +74,7 @@ move_past_lead_whitespace(Application_Links *app, View_Summary *view, Buffer_Sum
int32_t new_pos = seek_line_beginning(app, buffer, view->cursor.pos);
char space[1024];
Stream_Chunk chunk = {0};
Stream_Chunk chunk = {};
int32_t still_looping = false;
int32_t i = new_pos;
@ -100,7 +100,7 @@ static int32_t
buffer_seek_whitespace_up(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
char chunk[1024];
int32_t chunk_size = sizeof(chunk);
Stream_Chunk stream = {0};
Stream_Chunk stream = {};
char at_pos;
@ -157,7 +157,7 @@ static int32_t
buffer_seek_whitespace_down(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
char chunk[1024];
int32_t chunk_size = sizeof(chunk);
Stream_Chunk stream = {0};
Stream_Chunk stream = {};
if (init_stream_chunk(&stream, app, buffer, pos, chunk, chunk_size)){
// step 1: find the first non-whitespace character
@ -215,7 +215,7 @@ buffer_seek_whitespace_down(Application_Links *app, Buffer_Summary *buffer, int3
static int32_t
buffer_seek_whitespace_right(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
char data_chunk[1024];
Stream_Chunk stream = {0};
Stream_Chunk stream = {};
if (init_stream_chunk(&stream, app, buffer, pos, data_chunk, sizeof(data_chunk))){
@ -248,7 +248,7 @@ buffer_seek_whitespace_right(Application_Links *app, Buffer_Summary *buffer, int
static int32_t
buffer_seek_whitespace_left(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
char data_chunk[1024];
Stream_Chunk stream = {0};
Stream_Chunk stream = {};
--pos;
if (pos > 0){
@ -289,7 +289,7 @@ buffer_seek_whitespace_left(Application_Links *app, Buffer_Summary *buffer, int3
static int32_t
buffer_seek_alphanumeric_right(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
char data_chunk[1024];
Stream_Chunk stream = {0};
Stream_Chunk stream = {};
if (init_stream_chunk(&stream, app, buffer, pos, data_chunk, sizeof(data_chunk))){
@ -322,7 +322,7 @@ buffer_seek_alphanumeric_right(Application_Links *app, Buffer_Summary *buffer, i
static int32_t
buffer_seek_alphanumeric_left(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
char data_chunk[1024];
Stream_Chunk stream = {0};
Stream_Chunk stream = {};
--pos;
if (pos > 0){
@ -361,7 +361,7 @@ buffer_seek_alphanumeric_left(Application_Links *app, Buffer_Summary *buffer, in
static int32_t
buffer_seek_alphanumeric_or_underscore_right(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
char data_chunk[1024];
Stream_Chunk stream = {0};
Stream_Chunk stream = {};
if (init_stream_chunk(&stream, app, buffer, pos, data_chunk, sizeof(data_chunk))){
bool32 still_looping = true;
@ -393,7 +393,7 @@ buffer_seek_alphanumeric_or_underscore_right(Application_Links *app, Buffer_Summ
static int32_t
buffer_seek_alphanumeric_or_underscore_left(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
char data_chunk[1024];
Stream_Chunk stream = {0};
Stream_Chunk stream = {};
--pos;
if (pos > 0){
@ -433,7 +433,7 @@ buffer_seek_alphanumeric_or_underscore_left(Application_Links *app, Buffer_Summa
static int32_t
buffer_seek_range_camel_right(Application_Links *app, Buffer_Summary *buffer, int32_t pos, int32_t an_pos){
char data_chunk[1024];
Stream_Chunk stream = {0};
Stream_Chunk stream = {};
++pos;
if (pos < an_pos){
@ -467,7 +467,7 @@ buffer_seek_range_camel_right(Application_Links *app, Buffer_Summary *buffer, in
static int32_t
buffer_seek_range_camel_left(Application_Links *app, Buffer_Summary *buffer, int32_t pos, int32_t an_pos){
char data_chunk[1024];
Stream_Chunk stream = {0};
Stream_Chunk stream = {};
--pos;
if (pos > 0){
@ -542,7 +542,7 @@ seek_token_right(Cpp_Token_Array *tokens, int32_t pos){
static Cpp_Token_Array
buffer_get_all_tokens(Application_Links *app, Partition *part, Buffer_Summary *buffer){
Cpp_Token_Array array = {0};
Cpp_Token_Array array = {};
if (buffer->exists && buffer->is_lexed){
array.count = buffer_token_count(app, buffer);
@ -674,7 +674,7 @@ buffer_seek_delimiter_forward(Application_Links *app, Buffer_Summary *buffer, in
if (buffer->exists){
char chunk[1024];
int32_t size = sizeof(chunk);
Stream_Chunk stream = {0};
Stream_Chunk stream = {};
if (init_stream_chunk(&stream, app, buffer, pos, chunk, size)){
int32_t still_looping = 1;
@ -701,7 +701,7 @@ buffer_seek_delimiter_backward(Application_Links *app, Buffer_Summary *buffer, i
if (buffer->exists){
char chunk[1024];
int32_t size = sizeof(chunk);
Stream_Chunk stream = {0};
Stream_Chunk stream = {};
if (init_stream_chunk(&stream, app, buffer, pos, chunk, size)){
int32_t still_looping = 1;
@ -746,7 +746,7 @@ buffer_seek_string_forward(Application_Links *app, Buffer_Summary *buffer, int32
read_str.size = size;
char chunk[1024];
Stream_Chunk stream = {0};
Stream_Chunk stream = {};
stream.max_end = end;
if (init_stream_chunk(&stream, app, buffer, pos, chunk, sizeof(chunk))){
@ -795,7 +795,7 @@ buffer_seek_string_backward(Application_Links *app, Buffer_Summary *buffer, int3
read_str.size = size;
char chunk[1024];
Stream_Chunk stream = {0};
Stream_Chunk stream = {};
stream.min_start = min;
if (init_stream_chunk(&stream, app, buffer, pos, chunk, sizeof(chunk))){
@ -828,7 +828,7 @@ buffer_seek_string_insensitive_forward(Application_Links *app, Buffer_Summary *b
char read_buffer[512];
char chunk[1024];
int32_t chunk_size = sizeof(chunk);
Stream_Chunk stream = {0};
Stream_Chunk stream = {};
stream.max_end = end;
if (buffer->size > end){
@ -876,7 +876,7 @@ buffer_seek_string_insensitive_backward(Application_Links *app, Buffer_Summary *
char read_buffer[512];
char chunk[1024];
int32_t chunk_size = sizeof(chunk);
Stream_Chunk stream = {0};
Stream_Chunk stream = {};
stream.min_start = min;
*result = min-1;
@ -941,8 +941,8 @@ buffer_seek_string(Application_Links *app, Buffer_Summary *buffer, int32_t pos,
static bool32
buffer_line_is_blank(Application_Links *app, Buffer_Summary *buffer, int32_t line){
Partial_Cursor start = {0};
Partial_Cursor end = {0};
Partial_Cursor start = {};
Partial_Cursor end = {};
bool32 result = false;
if (line <= buffer->line_count){
buffer_compute_cursor(app, buffer, seek_line_char(line, 1), &start);
@ -950,7 +950,7 @@ buffer_line_is_blank(Application_Links *app, Buffer_Summary *buffer, int32_t lin
static const int32_t chunk_size = 1024;
char chunk[chunk_size];
Stream_Chunk stream = {0};
Stream_Chunk stream = {};
int32_t i = start.pos;
stream.max_end = end.pos;
@ -975,7 +975,7 @@ buffer_line_is_blank(Application_Links *app, Buffer_Summary *buffer, int32_t lin
static String
read_identifier_at_pos(Application_Links *app, Buffer_Summary *buffer, int32_t pos, char *space, int32_t max, Range *range_out){
String query = {0};
String query = {};
int32_t start = buffer_seek_alphanumeric_or_underscore_left(app, buffer, pos);
int32_t end = buffer_seek_alphanumeric_or_underscore_right(app, buffer, start);

View File

@ -22,8 +22,8 @@ CUSTOM_DOC("If the command execute_any_cli has already been used, this will exec
CUSTOM_COMMAND_SIG(execute_any_cli)
CUSTOM_DOC("Queries for an output buffer name and system command, runs the system command as a CLI and prints the output to the specified buffer."){
Query_Bar bar_out = {0};
Query_Bar bar_cmd = {0};
Query_Bar bar_out = {};
Query_Bar bar_cmd = {};
bar_out.prompt = make_lit_string("Output Buffer: ");
bar_out.string = make_fixed_width_string(out_buffer_space);

View File

@ -36,9 +36,9 @@ ui__rect_union(i32_Rect a, i32_Rect b){
static UI_Control
ui_list_to_ui_control(Partition *arena, UI_List *list){
UI_Control control = {0};
UI_Control control = {};
control.items = push_array(arena, UI_Item, list->count);
i32_Rect neg_inf_rect = {0};
i32_Rect neg_inf_rect = {};
neg_inf_rect.x0 = INT32_MAX;
neg_inf_rect.y0 = INT32_MAX;
neg_inf_rect.x1 = INT32_MIN;
@ -100,7 +100,7 @@ ui_control_get_mouse_hit(UI_Control *control,
static void
view_zero_scroll(Application_Links *app, View_Summary *view){
GUI_Scroll_Vars zero_scroll = {0};
GUI_Scroll_Vars zero_scroll = {};
view_set_scroll(app, view, zero_scroll);
}
@ -232,7 +232,7 @@ lister_get_clicked_item(Application_Links *app, View_Summary *view, Partition *s
int32_t myu = 0;
get_view_relative_mouse_positions(mouse, *view, &mxs, &mys, &mxu, &myu);
UI_Item *clicked = ui_control_get_mouse_hit(&control, mxs, mys, mxu, myu);
UI_Item result = {0};
UI_Item result = {};
if (clicked != 0){
result = *clicked;
}
@ -268,15 +268,15 @@ lister_update_ui(Application_Links *app, Partition *scratch, View_Summary *view,
state->raw_item_index = -1;
int32_t node_count = state->lister.options.count;
Lister_Node_Ptr_Array exact_matches = {0};
Lister_Node_Ptr_Array exact_matches = {};
exact_matches.node_ptrs = push_array(scratch, Lister_Node*, 1);
Lister_Node_Ptr_Array before_extension_matches = {0};
Lister_Node_Ptr_Array before_extension_matches = {};
before_extension_matches.node_ptrs = push_array(scratch, Lister_Node*, node_count);
Lister_Node_Ptr_Array substring_matches = {0};
Lister_Node_Ptr_Array substring_matches = {};
substring_matches.node_ptrs = push_array(scratch, Lister_Node*, node_count);
String key = state->lister.key_string;
Absolutes absolutes = {0};
Absolutes absolutes = {};
get_absolutes(key, &absolutes, true, true);
bool32 has_wildcard = (absolutes.count > 3);
@ -306,7 +306,7 @@ lister_update_ui(Application_Links *app, Partition *scratch, View_Summary *view,
substring_matches,
};
UI_List list = {0};
UI_List list = {};
UI_Item *highlighted_item = 0;
UI_Item *hot_item = 0;
UI_Item *hovered_item = 0;
@ -316,14 +316,14 @@ lister_update_ui(Application_Links *app, Partition *scratch, View_Summary *view,
for (int32_t node_index = 0; node_index < node_ptr_array.count; node_index += 1){
Lister_Node *node = node_ptr_array.node_ptrs[node_index];
i32_Rect item_rect = {0};
i32_Rect item_rect = {};
item_rect.x0 = x0;
item_rect.y0 = y_pos;
item_rect.x1 = x1;
item_rect.y1 = y_pos + block_height;
y_pos = item_rect.y1;
UI_Item item = {0};
UI_Item item = {};
if (!is_theme_list){
item.type = UIType_Option;
item.option.string = node->string;
@ -380,14 +380,14 @@ lister_update_ui(Application_Links *app, Partition *scratch, View_Summary *view,
}
{
i32_Rect item_rect = {0};
i32_Rect item_rect = {};
item_rect.x0 = x0;
item_rect.y0 = 0;
item_rect.x1 = x1;
item_rect.y1 = item_rect.y0 + line_height;
y_pos = item_rect.y1;
UI_Item item = {0};
UI_Item item = {};
item.type = UIType_TextField;
item.activation_level = UIActivation_Active;
item.coordinates = UICoordinates_ViewRelative;
@ -406,7 +406,7 @@ lister_update_ui(Application_Links *app, Partition *scratch, View_Summary *view,
static Lister_Prealloced_String
lister_prealloced(String string){
Lister_Prealloced_String result = {0};
Lister_Prealloced_String result = {};
result.string = string;
return(result);
}

181
4ed.cpp
View File

@ -9,25 +9,23 @@
// TOP
// App Structs
#define DEFAULT_DISPLAY_WIDTH 672
#define DEFAULT_MINIMUM_BASE_DISPLAY_WIDTH 550
inline App_Coroutine_State
internal App_Coroutine_State
get_state(Application_Links *app){
App_Coroutine_State state = {0};
App_Coroutine_State state = {};
state.co = app->current_coroutine;
state.type = app->type_coroutine;
return(state);
}
inline void
internal void
restore_state(Application_Links *app, App_Coroutine_State state){
app->current_coroutine = state.co;
app->type_coroutine = state.type;
}
inline Coroutine_Head*
internal Coroutine_Head*
app_launch_coroutine(System_Functions *system, Application_Links *app, Coroutine_Type type, Coroutine_Head *co, void *in, void *out){
Coroutine_Head *result = 0;
@ -41,7 +39,7 @@ app_launch_coroutine(System_Functions *system, Application_Links *app, Coroutine
return(result);
}
inline Coroutine_Head*
internal Coroutine_Head*
app_resume_coroutine(System_Functions *system, Application_Links *app, Coroutine_Type type, Coroutine_Head *co, void *in, void *out){
Coroutine_Head *result = 0;
@ -55,7 +53,7 @@ app_resume_coroutine(System_Functions *system, Application_Links *app, Coroutine
return(result);
}
inline void
internal void
output_file_append(System_Functions *system, Models *models, Editing_File *file, String value){
if (!file->is_dummy){
i32 end = buffer_size(&file->state.buffer);
@ -79,7 +77,7 @@ file_cursor_to_end(System_Functions *system, Models *models, Editing_File *file)
}
}
inline void
internal void
do_feedback_message(System_Functions *system, Models *models, String value){
Editing_File *file = models->message_buffer;
if (file != 0){
@ -306,9 +304,9 @@ interpret_binding_buffer(Models *models, void *buffer, i32 size){
Partition *part = &models->mem.part;
Temp_Memory temp = begin_temp_memory(part);
Partition local_part = {0};
Partition local_part = {};
Mapping new_mapping = {0};
Mapping new_mapping = {};
models->scroll_rule = fallback_scroll_rule;
models->hook_open_file = 0;
@ -649,7 +647,7 @@ setup_command_table(void){
internal void
app_hardcode_default_style(Models *models){
Interactive_Style file_info_style = {0};
Interactive_Style file_info_style = {};
Style *styles = models->styles.styles;
Style *style = styles + 1;
@ -873,7 +871,7 @@ init_command_line_settings(App_Settings *settings, Plat_Settings *plat_settings,
internal App_Vars*
app_setup_memory(System_Functions *system, Application_Memory *memory){
Partition _partition = make_part(memory->vars_memory, memory->vars_memory_size);
App_Vars *vars = push_struct(&_partition, App_Vars);
App_Vars *vars = push_array(&_partition, App_Vars, 1);
Assert(vars != 0);
memset(vars, 0, sizeof(*vars));
vars->models.mem.part = _partition;
@ -889,29 +887,23 @@ get_event_flags(Key_Code keycode){
event_flags |= EventOnEsc;
event_flags |= EventOnAnyKey;
}
else if (keycode == key_mouse_left){
// TODO(allen):
else if (keycode == key_mouse_left || keycode == key_mouse_left_release){
event_flags |= EventOnMouseLeftButton;
}
else if (keycode == key_mouse_right){
// TODO(allen):
}
else if (keycode == key_mouse_left_release){
// TODO(allen):
}
else if (keycode == key_mouse_right_release){
// TODO(allen):
else if (keycode == key_mouse_right || keycode == key_mouse_right_release){
event_flags |= EventOnMouseRightButton;
}
else if (keycode == key_mouse_wheel){
// TODO(allen):
event_flags |= EventOnMouseWheel;
}
else if (keycode == key_mouse_move){
// TODO(allen):
event_flags |= EventOnMouseMove;
}
else if (keycode == key_animate){
// TODO(allen):
event_flags |= EventOnAnimate;
}
else if (keycode == key_view_activate){
// TODO(allen):
else if (keycode == key_click_activate_view || keycode == key_click_deactivate_view){
event_flags |= EventOnViewActivation;
}
else{
event_flags |= EventOnAnyKey;
@ -919,6 +911,50 @@ get_event_flags(Key_Code keycode){
return(event_flags);
}
internal void
force_abort_coroutine(System_Functions *system, Models *models, View *view){
User_Input user_in = {};
user_in.abort = true;
for (u32 j = 0; j < 10 && models->command_coroutine != 0; ++j){
models->command_coroutine = app_resume_coroutine(system, &models->app_links, Co_Command, models->command_coroutine, &user_in, models->command_coroutine_flags);
}
if (models->command_coroutine != 0){
// TODO(allen): post grave warning
models->command_coroutine = 0;
}
init_query_set(&view->transient.query_set);
}
internal void
launch_command_via_event(System_Functions *system, Application_Step_Result *app_result, Models *models, View *view, Key_Event_Data event){
models->key = event;
i32 map = view_get_map(view);
Command_Binding cmd_bind = map_extract_recursive(&models->mapping, map, event);
if (cmd_bind.function != 0){
Assert(models->command_coroutine == 0);
Coroutine_Head *command_coroutine = system->create_coroutine(command_caller);
models->command_coroutine = command_coroutine;
Command_In cmd_in;
cmd_in.models = models;
cmd_in.bind = cmd_bind;
models->command_coroutine = app_launch_coroutine(system, &models->app_links, Co_Command, models->command_coroutine, &cmd_in, models->command_coroutine_flags);
models->prev_command = cmd_bind;
app_result->animating = true;
}
}
internal void
launch_command_via_keycode(System_Functions *system, Application_Step_Result *app_result, Models *models, View *view, Key_Code keycode){
Key_Event_Data event = {};
event.keycode = keycode;
launch_command_via_event(system, app_result, models, view, event);
}
App_Read_Command_Line_Sig(app_read_command_line){
i32 out_size = 0;
App_Vars *vars = app_setup_memory(system, memory);
@ -1027,7 +1063,7 @@ App_Init_Sig(app_init){
models->working_set.clipboard_current = 0;
models->working_set.clipboard_rolling = 0;
// TODO(allen): more robust allocation solution for the clipboard
// TODO(allen): do(better clipboard allocation)
if (clipboard.str != 0){
String *dest = working_set_next_clipboard_string(&models->mem.heap, &models->working_set, clipboard.size);
copy(dest, make_string((char*)clipboard.str, clipboard.size));
@ -1096,7 +1132,7 @@ App_Step_Sig(app_step){
App_Vars *vars = (App_Vars*)memory->vars_memory;
Models *models = &vars->models;
Application_Step_Result app_result = {0};
Application_Step_Result app_result = {};
app_result.mouse_cursor_type = APP_MOUSE_CURSOR_DEFAULT;
app_result.lctrl_lalt_is_altgr = models->settings.lctrl_lalt_is_altgr;
@ -1124,7 +1160,7 @@ App_Step_Sig(app_step){
for (;system->get_file_change(buffer, buffer_size, &mem_too_small, &size);){
Assert(!mem_too_small);
Editing_File_Name canon = {0};
Editing_File_Name canon = {};
if (get_canon_name(system, make_string(buffer, size),
&canon)){
Editing_File *file = working_set_contains_canon(working_set, canon.name);
@ -1262,7 +1298,7 @@ App_Step_Sig(app_step){
models->input_filter(&input->mouse);
}
Key_Event_Data mouse_event = {0};
Key_Event_Data mouse_event = {};
if (input->mouse.press_l){
mouse_event.keycode = key_mouse_left;
input->keys.keys[input->keys.count++] = mouse_event;
@ -1376,9 +1412,7 @@ App_Step_Sig(app_step){
Panel *active_panel = &models->layout.panels[models->layout.active_panel];
View *view = active_panel->view;
Assert(view != 0);
models->key = *key_ptr;
// NOTE(allen): execute a command or resize panels
switch (vars->state){
case APP_STATE_EDIT:
{
@ -1456,68 +1490,45 @@ App_Step_Sig(app_step){
case EventConsume_ClickChangeView:
{
// NOTE(allen): kill coroutine if we have one
if (models->command_coroutine != 0){
User_Input user_in = {0};
user_in.abort = true;
for (u32 j = 0; j < 10 && models->command_coroutine != 0; ++j){
models->command_coroutine = app_resume_coroutine(system, &models->app_links, Co_Command, models->command_coroutine, &user_in, models->command_coroutine_flags);
}
if (models->command_coroutine != 0){
// TODO(allen): post grave warning
models->command_coroutine = 0;
}
init_query_set(&view->transient.query_set);
force_abort_coroutine(system, models, view);
}
// NOTE(allen): run deactivate command
launch_command_via_keycode(system, &app_result, models, view, key_click_deactivate_view);
// NOTE(allen): kill coroutine if we have one (again because we just launched a command)
if (models->command_coroutine != 0){
force_abort_coroutine(system, models, view);
}
models->layout.active_panel = (i32)(mouse_panel - models->layout.panels);
app_result.animating = true;
active_panel = mouse_panel;
view = active_panel->view;
{
Key_Event_Data key = {};
key.keycode = key_view_activate;
models->key = key;
i32 map = view_get_map(view);
Command_Binding cmd_bind = map_extract_recursive(&models->mapping, map, key);
if (cmd_bind.function != 0){
Assert(models->command_coroutine == 0);
Coroutine_Head *command_coroutine = system->create_coroutine(command_caller);
models->command_coroutine = command_coroutine;
Command_In cmd_in;
cmd_in.models = models;
cmd_in.bind = cmd_bind;
models->command_coroutine = app_launch_coroutine(system, &models->app_links, Co_Command, models->command_coroutine, &cmd_in, models->command_coroutine_flags);
models->prev_command = cmd_bind;
app_result.animating = true;
}
}
// NOTE(allen): run activate command
launch_command_via_keycode(system, &app_result, models, view, key_click_activate_view);
}break;
case EventConsume_Command:
{
// NOTE(allen): update command coroutine
if (models->command_coroutine != 0){
models->key = *key_ptr;
Coroutine_Head *command_coroutine = models->command_coroutine;
u32 abort_flags = models->command_coroutine_flags[1];
u32 get_flags = models->command_coroutine_flags[0] | abort_flags;
Partition *part = &models->mem.part;
Temp_Memory temp = begin_temp_memory(part);
u32 event_flags = get_event_flags(key_ptr->keycode);
if ((get_flags & event_flags) != 0){
i32 map = view_get_map(view);
Command_Binding cmd_bind = map_extract_recursive(&models->mapping, map, *key_ptr);
User_Input user_in = {};
user_in.type = UserInputKey;
user_in.key = *key_ptr;
user_in.command.command = cmd_bind.custom;
user_in.abort = ((abort_flags & event_flags) != 0);
@ -1530,27 +1541,9 @@ App_Step_Sig(app_step){
}
}
// NOTE(allen): launch command
else{
i32 map = view_get_map(view);
Command_Binding cmd_bind = map_extract_recursive(&models->mapping, map, *key_ptr);
if (cmd_bind.function != 0){
Assert(models->command_coroutine == 0);
Coroutine_Head *command_coroutine = system->create_coroutine(command_caller);
models->command_coroutine = command_coroutine;
Command_In cmd_in;
cmd_in.models = models;
cmd_in.bind = cmd_bind;
models->command_coroutine = app_launch_coroutine(system, &models->app_links, Co_Command, models->command_coroutine, &cmd_in, models->command_coroutine_flags);
models->prev_command = cmd_bind;
if (keycode != key_animate){
app_result.animating = true;
}
}
launch_command_via_event(system, &app_result, models, view, *key_ptr);
}
}break;
}

View File

@ -99,7 +99,7 @@ view_quit_ui(System_Functions *system, Models *models, View *view){
Assert(view != 0);
view->transient.ui_mode = false;
if (view->transient.ui_quit != 0){
View_Summary view_summary = {0};
View_Summary view_summary = {};
fill_view_summary(system, &view_summary, view, models);
view->transient.ui_quit(&models->app_links, view_summary);
}
@ -345,7 +345,7 @@ DOC_SEE(Command_Line_Interface_Flag)
}
// NOTE(allen): Figure out the root path for the command.
String path_string = {0};
String path_string = {};
if (path == 0){
terminate_with_null(&models->hot_directory.string);
path_string = models->hot_directory.string;
@ -355,7 +355,7 @@ DOC_SEE(Command_Line_Interface_Flag)
}
// NOTE(allen): Figure out the command string.
String command_string = {0};
String command_string = {};
if (command == 0){
command_string = make_lit_string(" echo no script specified");
}
@ -604,7 +604,7 @@ DOC_SEE(Access_Flag)
Working_Set *working_set = &models->working_set;
Buffer_Summary buffer = {};
String fname = make_string(name, len);
Editing_File_Name canon = {0};
Editing_File_Name canon = {};
if (get_canon_name(system, fname, &canon)){
Editing_File *file = working_set_contains_canon(working_set, canon.name);
if (file != 0){
@ -1151,7 +1151,7 @@ DOC_SEE(Buffer_Create_Flag)
Heap *heap = &models->mem.heap;
Partition *part = &models->mem.part;
Buffer_Summary result = {0};
Buffer_Summary result = {};
b32 buffer_is_for_new_file = false;
if (filename_len > 0){
@ -1160,7 +1160,7 @@ DOC_SEE(Buffer_Create_Flag)
String fname = make_string(filename, filename_len);
Editing_File *file = 0;
b32 do_empty_buffer = false;
Editing_File_Name canon = {0};
Editing_File_Name canon = {};
b32 has_canon_name = false;
// NOTE(allen): Try to get the file by canon name.
@ -1183,7 +1183,7 @@ DOC_SEE(Buffer_Create_Flag)
// NOTE(allen): If there is still no file, create a new buffer.
if (file == 0){
Plat_Handle handle = {0};
Plat_Handle handle = {};
// NOTE(allen): Figure out whether this is a new file, or an existing file.
if (!do_empty_buffer){
@ -1493,7 +1493,7 @@ DOC_SEE(Access_Flag)
System_Functions *system = models->system;
Panel *panel = models->layout.panels + models->layout.active_panel;
Assert(panel->view != 0);
View_Summary view = {0};
View_Summary view = {};
fill_view_summary(system, &view, panel->view, &models->live_set, &models->working_set);
if (!access_test(view.lock_flags, access)){
memset(&view, 0, sizeof(view));
@ -1515,7 +1515,7 @@ DOC_SEE(View_Split_Position)
System_Functions *system = models->system;
View *vptr = imp_get_view(models, view_location);
Panel *panel = vptr->transient.panel;
View_Summary result = {0};
View_Summary result = {};
if (models->layout.panel_count < models->layout.panel_max_count){
b32 vsplit = ((position == ViewSplit_Left) || (position == ViewSplit_Right));
@ -2197,7 +2197,7 @@ DOC_SEE(view_set_ui)
{
Models *models = (Models*)app->cmd_context;
View *vptr = imp_get_view(models, view);
UI_Control result = {0};
UI_Control result = {};
if (vptr != 0 && part != 0){
UI_Control *control = &vptr->transient.ui_control;
result.items = push_array(part, UI_Item, control->count);
@ -2576,7 +2576,7 @@ DOC_SEE(Marker)
internal Managed_Object_Ptr_And_Workspace
get_dynamic_object_ptrs(Models *models, Managed_Object object){
Managed_Object_Ptr_And_Workspace result = {0};
Managed_Object_Ptr_And_Workspace result = {};
u32 hi_id = (object >> 32)&max_u32;
Dynamic_Workspace *workspace = get_dynamic_workspace(models, hi_id);
if (workspace != 0){
@ -2602,7 +2602,7 @@ DOC_SEE(destroy_marker_visuals)
{
Models *models = (Models*)app->cmd_context;
Managed_Object_Ptr_And_Workspace object_ptrs = get_dynamic_object_ptrs(models, object);
Marker_Visual visual = {0};
Marker_Visual visual = {};
if (object_ptrs.header != 0 && object_ptrs.header->type == ManagedObjectType_Markers){
Heap *heap = &models->mem.heap;
Dynamic_Workspace *workspace = object_ptrs.workspace;
@ -2982,7 +2982,7 @@ DOC_SEE(User_Input)
Models *models = (Models*)app->cmd_context;
System_Functions *system = models->system;
Coroutine_Head *coroutine = (Coroutine_Head*)app->current_coroutine;
User_Input result = {0};
User_Input result = {};
if (app->type_coroutine == Co_Command){
Assert(coroutine != 0);
@ -3003,10 +3003,7 @@ DOC_SEE(User_Input)
*/{
Models *models = (Models*)app->cmd_context;
User_Input result = {};
result.type = UserInputKey;
result.abort = 0;
result.key = models->key;
result.command.cmdid = 0;
return(result);
}
@ -3101,7 +3098,7 @@ DOC_RETURN(On success this call returns a string allocated on arena that is the
{
Models *models = (Models*)app->cmd_context;
Style_Library *library = &models->styles;
String str = {0};
String str = {};
if (0 <= index && index < library->count){
Style *style = &library->styles[index];
char *mem = push_array(arena, char, style->name.size + 1);
@ -3274,7 +3271,7 @@ face_description_to_settings(System_Functions *system, Face_Description descript
if (description.font.in_local_font_folder){
i32 count = system->font.get_loadable_count();
for (i32 i = 0; i < count; ++i){
Font_Loadable_Description loadable = {0};
Font_Loadable_Description loadable = {};
system->font.get_loadable(i, &loadable);
if (loadable.valid){
@ -3325,7 +3322,7 @@ DOC_SEE(Face_Description)
{
Models *models = (Models*)app->cmd_context;
System_Functions *system = models->system;
Face_Description description = {0};
Face_Description description = {};
if (id != 0){
Font_Pointers font = system->font.get_pointers_by_id(id);
if (font.valid){

View File

@ -508,7 +508,7 @@ buffer_edit_provide_memory(Gap_Buffer *buffer, void *new_data, i32 new_max){
inline void
buffer_stringify(Gap_Buffer *buffer, i32 start, i32 end, char *out){
Gap_Buffer_Stream stream = {0};
Gap_Buffer_Stream stream = {};
i32 i = start;
if (buffer_stringify_loop(&stream, buffer, i, end)){
@ -525,7 +525,7 @@ buffer_stringify(Gap_Buffer *buffer, i32 start, i32 end, char *out){
internal i32
buffer_convert_out(Gap_Buffer *buffer, char *dest, i32 max){
Gap_Buffer_Stream stream = {0};
Gap_Buffer_Stream stream = {};
i32 i = 0;
i32 size = buffer_size(buffer);
Assert(size + buffer->line_count <= max);
@ -549,7 +549,7 @@ buffer_convert_out(Gap_Buffer *buffer, char *dest, i32 max){
internal i32
buffer_count_newlines(Gap_Buffer *buffer, i32 start, i32 end){
Gap_Buffer_Stream stream = {0};
Gap_Buffer_Stream stream = {};
i32 i = start;
i32 count = 0;
@ -575,7 +575,7 @@ buffer_count_newlines(Gap_Buffer *buffer, i32 start, i32 end){
// and stores the size in the extra spot.
internal i32
buffer_measure_starts(Buffer_Measure_Starts *state, Gap_Buffer *buffer){
Gap_Buffer_Stream stream = {0};
Gap_Buffer_Stream stream = {};
i32 size = buffer_size(buffer);
i32 start = state->start, i = state->i;
i32 *start_ptr = buffer->line_starts + state->count;
@ -624,7 +624,7 @@ internal void
buffer_measure_character_starts(System_Functions *system, Font_Pointers font, Gap_Buffer *buffer, i32 *character_starts, i32 mode, i32 virtual_white){
Assert(mode == 0);
Gap_Buffer_Stream stream = {0};
Gap_Buffer_Stream stream = {};
i32 i = 0;
i32 size = buffer_size(buffer);
@ -639,8 +639,8 @@ buffer_measure_character_starts(System_Functions *system, Font_Pointers font, Ga
skipping_whitespace = 1;
}
Translation_State tran = {0};
Translation_Emits emits = {0};
Translation_State tran = {};
Translation_Emits emits = {};
stream.use_termination_character = 1;
stream.terminator = '\n';
@ -846,7 +846,7 @@ buffer_remeasure_starts(Gap_Buffer *buffer, i32 line_start, i32 line_end, i32 li
}
// Iteration data (yikes! Need better loop system)
Gap_Buffer_Stream stream = {0};
Gap_Buffer_Stream stream = {};
i32 size = buffer_size(buffer);
i32 char_i = starts[line_start];
i32 line_i = line_start;
@ -909,7 +909,7 @@ buffer_remeasure_character_starts(System_Functions *system, Font_Pointers font,
}
// Iteration data
Gap_Buffer_Stream stream = {0};
Gap_Buffer_Stream stream = {};
i32 size = buffer_size(buffer);
i32 char_i = buffer->line_starts[line_start];
i32 line_i = line_start;
@ -925,8 +925,8 @@ buffer_remeasure_character_starts(System_Functions *system, Font_Pointers font,
}
// Translation
Translation_State tran = {0};
Translation_Emits emits = {0};
Translation_State tran = {};
Translation_Emits emits = {};
stream.use_termination_character = 1;
stream.terminator = '\n';
@ -1006,7 +1006,7 @@ buffer_remeasure_wrap_y(Gap_Buffer *buffer, i32 line_start, i32 line_end, i32 li
}
// Iteration data (yikes! Need better loop system)
Gap_Buffer_Stream stream = {0};
Gap_Buffer_Stream stream = {};
i32 size = buffer_size(buffer);
i32 char_i = buffer->line_starts[line_start];
i32 line_i = line_start;
@ -1130,7 +1130,7 @@ buffer_get_line_index_from_wrapped_y(i32 *wrap_line_index, f32 y, i32 line_heigh
internal Partial_Cursor
buffer_partial_from_pos(Gap_Buffer *buffer, i32 pos){
Partial_Cursor result = {0};
Partial_Cursor result = {};
int32_t size = buffer_size(buffer);
if (pos > size){
@ -1150,7 +1150,7 @@ buffer_partial_from_pos(Gap_Buffer *buffer, i32 pos){
internal Partial_Cursor
buffer_partial_from_line_character(Gap_Buffer *buffer, i32 line, i32 character){
Partial_Cursor result = {0};
Partial_Cursor result = {};
i32 line_index = line - 1;
if (line_index >= buffer->line_count){

View File

@ -45,7 +45,7 @@ struct Gap_Buffer_Stream{
b32 use_termination_character;
char terminator;
};
global Gap_Buffer_Stream null_buffer_stream = {0};
global Gap_Buffer_Stream null_buffer_stream = {};
struct Buffer_Batch_State{
i32 i;

View File

@ -11,7 +11,7 @@
inline CLI_List
make_cli_list(Partition *part, u32 max){
CLI_List list = {0};
CLI_List list = {};
partition_align(part, 8);
list.procs = push_array(part, CLI_Process, max);
list.max = max;

View File

@ -42,12 +42,12 @@ wrap_state_set_top(Code_Wrap_State *state, f32 line_shift){
internal Code_Wrap_Step
wrap_state_consume_token(System_Functions *system, Font_Pointers font, Code_Wrap_State *state, i32 fixed_end_point){
Code_Wrap_Step result = {0};
Code_Wrap_Step result = {};
i32 i = state->i;
result.position_start = i;
Cpp_Token token = {0};
Cpp_Token token = {};
token.start = state->size;
if (state->token_ptr < state->end_token){
@ -374,11 +374,11 @@ stickieness_guess(Cpp_Token_Type type, Cpp_Token_Type other_type, u16 flags, u16
internal Wrap_Current_Shift
get_current_shift(Code_Wrap_State *wrap_state, i32 next_line_start){
Wrap_Current_Shift result = {0};
Wrap_Current_Shift result = {};
result.shift = wrap_state->wrap_x.paren_nesting[wrap_state->wrap_x.paren_safe_top];
Cpp_Token next_token = {0};
Cpp_Token next_token = {};
if (wrap_state->token_ptr < wrap_state->end_token){
next_token = *wrap_state->token_ptr;
}
@ -456,8 +456,8 @@ file_measure_wraps(System_Functions *system, Mem_Options *mem, Editing_File *fil
i32 size = buffer_size(params.buffer);
Buffer_Measure_Wrap_State state = {0};
Buffer_Layout_Stop stop = {0};
Buffer_Measure_Wrap_State state = {};
Buffer_Layout_Stop stop = {};
f32 edge_tolerance = 50.f;
edge_tolerance = clamp_top(edge_tolerance, 50.f);
@ -469,7 +469,7 @@ file_measure_wraps(System_Functions *system, Mem_Options *mem, Editing_File *fil
i32 wrap_position_index = 0;
file->state.wrap_positions[wrap_position_index++] = 0;
Code_Wrap_State wrap_state = {0};
Code_Wrap_State wrap_state = {};
b32 use_tokens = false;
@ -511,9 +511,9 @@ file_measure_wraps(System_Functions *system, Mem_Options *mem, Editing_File *fil
}
}
else{
Translation_State tran = {0};
Translation_Emits emits = {0};
Gap_Buffer_Stream stream = {0};
Translation_State tran = {};
Translation_Emits emits = {};
Gap_Buffer_Stream stream = {};
i32 word_stage = 0;
i32 i = stop.pos;
@ -614,7 +614,7 @@ file_measure_wraps(System_Functions *system, Mem_Options *mem, Editing_File *fil
wrap_state.wrap_x.base_x = wrap_state.wrap_x.paren_nesting[0];
for (; wrap_state.token_ptr < wrap_state.end_token; ){
Code_Wrap_Step step = {0};
Code_Wrap_Step step = {};
b32 emit_comment_position = false;
b32 first_word = true;
@ -636,11 +636,11 @@ file_measure_wraps(System_Functions *system, Mem_Options *mem, Editing_File *fil
step.start_x = x;
step.this_token = wrap_state.token_ptr;
Gap_Buffer_Stream stream = {0};
Translation_State tran = {0};
Translation_Emits emits = {0};
Gap_Buffer_Stream stream = {};
Translation_State tran = {};
Translation_Emits emits = {};
Potential_Wrap_Indent_Pair potential_wrap = {0};
Potential_Wrap_Indent_Pair potential_wrap = {};
potential_wrap.wrap_position = i;
potential_wrap.line_shift = x;
potential_wrap.wrappable_score = 5;

View File

@ -18,7 +18,7 @@ struct Code_Wrap_X{
i32 paren_safe_top;
i32 paren_top;
};
global Code_Wrap_X null_wrap_x = {0};
global Code_Wrap_X null_wrap_x = {};
struct Code_Wrap_State{
Cpp_Token_Array token_array;

View File

@ -105,7 +105,7 @@ map_add(Command_Map *map, Key_Code event_code, u8 modifiers, Command_Function *f
entry = map->commands[index];
}
Command_Binding bind = {0};
Command_Binding bind = {};
bind.function = function;
bind.custom = custom;
bind.hash = hash;
@ -205,7 +205,7 @@ map_get_vanilla_keyboard_default(Command_Map *map, u8 command, Command_Binding *
internal Command_Binding
map_extract(Command_Map *map, Key_Event_Data key){
Command_Binding bind = {0};
Command_Binding bind = {};
b32 ctrl = key.modifiers[MDFR_CONTROL_INDEX];
b32 alt = key.modifiers[MDFR_ALT_INDEX];
@ -243,10 +243,10 @@ map_extract_recursive(Mapping *mapping, i32 map_id, Key_Event_Data key){
map = &mapping->map_top;
}
Command_Map *visited_maps[16] = {0};
Command_Map *visited_maps[16] = {};
i32 visited_top = 0;
Command_Binding cmd_bind = {0};
Command_Binding cmd_bind = {};
for (; map != 0; ){
cmd_bind = map_extract(map, key);
if (cmd_bind.function == 0){

View File

@ -442,7 +442,7 @@ lifetime__key_table_erase(Lifetime_Key_Table *table, Lifetime_Key *erase_key){
internal Lifetime_Key_Table
lifetime__key_table_copy(Heap *heap, Lifetime_Key_Table table, u32 new_max){
Lifetime_Key_Table new_table = {0};
Lifetime_Key_Table new_table = {};
new_table.max = clamp_bottom(table.max, new_max);
new_table.max = clamp_bottom(307, new_table.max);
i32 item_size = sizeof(*new_table.hashes) + sizeof(*new_table.keys);

View File

@ -272,7 +272,7 @@ edit_single__inner(System_Functions *system, Models *models, Editing_File *file,
file_measure_wraps(system, &models->mem, file, font);
// NOTE(allen): cursor fixing
Cursor_Fix_Descriptor desc = {0};
Cursor_Fix_Descriptor desc = {};
desc.start = start;
desc.end = end;
desc.shift_amount = shift_amount;
@ -425,7 +425,7 @@ edit_batch(System_Functions *system, Models *models, Editing_File *file,
file_measure_wraps(system, &models->mem, file, font);
// NOTE(allen): cursor fixing
Cursor_Fix_Descriptor desc = {0};
Cursor_Fix_Descriptor desc = {};
desc.is_batch = 1;
desc.batch = batch;
desc.batch_size = batch_size;
@ -456,7 +456,7 @@ edit_clear(System_Functions *system, Models *models, Editing_File *file){
panel = panel->next){
View *view = panel->view;
if (view->transient.file_data.file == file){
Full_Cursor cursor = {0};
Full_Cursor cursor = {};
cursor.line = 1;
cursor.character = 1;
cursor.wrap_line = 1;

View File

@ -308,7 +308,7 @@ file_compute_cursor(System_Functions *system, Editing_File *file, Buffer_Seek se
Font_Pointers font = system->font.get_pointers_by_id(file->settings.font_id);
Assert(font.valid);
Full_Cursor result = {0};
Full_Cursor result = {};
Buffer_Cursor_Seek_Params params;
params.buffer = &file->state.buffer;
@ -321,8 +321,8 @@ file_compute_cursor(System_Functions *system, Editing_File *file, Buffer_Seek se
params.return_hint = return_hint;
params.cursor_out = &result;
Buffer_Cursor_Seek_State state = {0};
Buffer_Layout_Stop stop = {0};
Buffer_Cursor_Seek_State state = {};
Buffer_Layout_Stop stop = {};
i32 size = buffer_size(params.buffer);
@ -409,7 +409,7 @@ file_measure_starts(Heap *heap, Gap_Buffer *buffer){
Assert(buffer->line_starts != 0);
}
Buffer_Measure_Starts state = {0};
Buffer_Measure_Starts state = {};
for (;buffer_measure_starts(&state, buffer);){
i32 count = state.count;
i32 max = ((buffer->line_max + 1) << 1);

View File

@ -36,7 +36,7 @@ Job_Callback_Sig(job_full_lex){
data_ptr += parse_context.memory_size;
data_size -= parse_context.memory_size;
Cpp_Token_Array tokens = {0};
Cpp_Token_Array tokens = {};
tokens.tokens = (Cpp_Token*)(data_ptr);
tokens.max_count = (u32)(data_size / sizeof(Cpp_Token));
tokens.count = 0;
@ -191,7 +191,7 @@ file_first_lex_serial(Models *models, Editing_File *file){
Parse_Context parse_context = parse_context_get(&models->parse_context_memory, file->settings.parse_context_id, partition_current(part), partition_remaining(part));
Assert(parse_context.valid);
push_block(part, (i32)parse_context.memory_size);
push_array(part, char, (i32)parse_context.memory_size);
Gap_Buffer *buffer = &file->state.buffer;
i32 text_size = buffer_size(buffer);
@ -312,7 +312,7 @@ file_relex_parallel(System_Functions *system, Models *models, Editing_File *file
Temp_Memory temp = begin_temp_memory(part);
Parse_Context parse_context = parse_context_get(&models->parse_context_memory, file->settings.parse_context_id, partition_current(part), partition_remaining(part));
Assert(parse_context.valid);
push_block(part, (i32)parse_context.memory_size);
push_array(part, char, (i32)parse_context.memory_size);
Cpp_Token_Array relex_array;
relex_array.count = 0;
@ -443,7 +443,7 @@ file_relex_serial(Models *models, Editing_File *file, i32 start_i, i32 end_i, i3
Temp_Memory temp = begin_temp_memory(part);
Parse_Context parse_context = parse_context_get(&models->parse_context_memory, file->settings.parse_context_id, partition_current(part), partition_remaining(part));
Assert(parse_context.valid);
push_block(part, (i32)parse_context.memory_size);
push_array(part, char, (i32)parse_context.memory_size);
Cpp_Token_Array relex_array;
relex_array.count = 0;

View File

@ -22,7 +22,7 @@ struct File_Track_Entry{
File_Index hash;
u32 opaque[4];
};
global_const File_Track_Entry null_file_track_entry = {0};
global_const File_Track_Entry null_file_track_entry = {};
struct File_Track_Tables{
i32 size;
@ -38,7 +38,7 @@ struct DLL_Node {
internal File_Index
zero_file_index(){
File_Index a = {0};
File_Index a = {};
return(a);
}

View File

@ -170,7 +170,7 @@ struct Font_Cached_Lookup_Result{
internal Font_Cached_Lookup_Result
font_cached_lookup(Font_Page_Storage *pages, u32 page_number){
Font_Cached_Lookup_Result result = {0};
Font_Cached_Lookup_Result result = {};
result.index = page_number % ArrayCount(pages->cache);
if (pages->cache[result.index].page_number == page_number){

View File

@ -68,7 +68,7 @@ struct Glyph_Bounds{
f32 xoff, yoff;
f32 xoff2, yoff2;
};
global_const Glyph_Bounds null_glyph_bounds = {0};
global_const Glyph_Bounds null_glyph_bounds = {};
struct Glyph_Page{
u32 page_number;

View File

@ -603,7 +603,7 @@ Sys_Font_Get_Count_Sig(system_font_get_count){
internal Font_Slot_Page_And_Index
system_font_get_active_location(Face_ID font_id){
Font_Slot_Page_And_Index result = {0};
Font_Slot_Page_And_Index result = {};
for (Font_Slot_Page *page = fontvars.slot_pages_sentinel.next;
page != &fontvars.slot_pages_sentinel;
@ -640,8 +640,8 @@ Sys_Font_Face_Change_Settings_Sig(system_font_face_change_settings, font_id, new
b32 made_change = false;
Font_Metrics temp_metrics = {0};
Font_Page_Storage temp_pages = {0};
Font_Metrics temp_metrics = {};
Font_Page_Storage temp_pages = {};
if (font_load(&sysfunc, new_settings, &temp_metrics, &temp_pages)){
Font_Metrics *metrics_ptr = &page_and_index.page->metrics[page_and_index.index];
@ -699,7 +699,7 @@ Sys_Font_Get_Name_By_ID_Sig(system_font_get_name_by_id, font_id, str_out, capaci
internal
Sys_Font_Get_Pointers_By_ID_Sig(system_font_get_pointers_by_id, font_id){
Font_Pointers font = {0};
Font_Pointers font = {};
if (font_id == 0){
return(font);
}
@ -725,7 +725,7 @@ Sys_Font_Load_Page_Sig(system_font_load_page, settings, metrics, page, page_numb
internal Font_Setup_List
system_font_get_local_stubs(Partition *part){
Font_Setup_List list = {0};
Font_Setup_List list = {};
u32 dir_max = KB(32);
u8 *directory = push_array(part, u8, dir_max);
@ -740,7 +740,7 @@ system_font_get_local_stubs(Partition *part){
partition_reduce(part, dir_max - dir_len - 1);
partition_align(part, 8);
File_List file_list = {0};
File_List file_list = {};
system_set_file_list(&file_list, (char*)directory, 0, 0, 0);
for (u32 i = 0; i < file_list.count; ++i){
@ -751,7 +751,7 @@ system_font_get_local_stubs(Partition *part){
for (;filename[len];++len);
if (dir_len + len + 1 <= sizeof(list.first->stub.name)){
Font_Setup *setup = push_struct(part, Font_Setup);
Font_Setup *setup = push_array(part, Font_Setup, 1);
memset(setup, 0, sizeof(*setup));
partition_align(part, 8);
@ -846,7 +846,7 @@ system_font_init(Font_Functions *font_links, u32 pt_size, b32 use_hinting, Font_
// Force load one font.
Font_Setup *first_setup = list.first;
Font_Settings first_settings = {0};
Font_Settings first_settings = {};
memcpy(&first_settings.stub, &first_setup->stub, sizeof(first_setup->stub));
first_settings.parameters.pt_size = pt_size;
first_settings.parameters.use_hinting = use_hinting;

View File

@ -59,7 +59,7 @@ struct Font_Vars{
b32 use_hinting;
};
global Font_Vars fontvars = {0};
global Font_Vars fontvars = {};
struct Font_Setup{
Font_Setup *next;
@ -100,14 +100,14 @@ internal Sys_Font_Path(name, parameters);
#define Sys_Font_Path_Not_Used \
internal Sys_Font_Path(n,p){ \
Font_Path path = {0}; LOG("there is no font path retrieval procedure available\n"); return(path);}
Font_Path path = {}; LOG("there is no font path retrieval procedure available\n"); return(path);}
#define Sys_Font_Data(name, parameters) Font_Raw_Data system_font_data(char *name, Font_Parameters *parameters)
internal Sys_Font_Data(name, parameters);
#define Sys_Font_Data_Not_Used \
internal Sys_Font_Data(n,p){ \
Font_Raw_Data data = {0}; LOG("there is no font data retrieval procedure available\n"); return(data);}
Font_Raw_Data data = {}; LOG("there is no font data retrieval procedure available\n"); return(data);}
#endif

View File

@ -24,7 +24,7 @@ panel_init(Panel *panel){
inline Panel_Divider
panel_divider_zero(){
Panel_Divider divider={0};
Panel_Divider divider={};
return(divider);
}

View File

@ -565,7 +565,7 @@ rgba_to_hsla(Vec4 rgba){
internal Vec4
hsla_to_rgba(Vec4 hsla){
if (hsla.h >= 1.f) hsla.h = 0.f;
Vec4 rgba = {0};
Vec4 rgba = {};
f32 C = (1.f - ABS(2*hsla.z - 1.f))*hsla.y;
f32 X = C*(1.f-ABS(MOD(hsla.x*6.f, 2)-1.f));
f32 m = hsla.z - C*.5f;
@ -591,7 +591,7 @@ hsla_to_rgba(Vec4 hsla){
internal i32_Rect
i32R(int32_t l, int32_t t, int32_t r, int32_t b){
i32_Rect rect = {0};
i32_Rect rect = {};
rect.x0 = l;
rect.y0 = t;
rect.x1 = r;

View File

@ -111,7 +111,7 @@ parse_context_add_default(Parse_Context_Memory *parse_mem, Heap *heap){
internal Parse_Context
parse_context_get(Parse_Context_Memory *parse_mem, Parse_Context_ID id, void *mem, umem memsize){
Parse_Context result = {0};
Parse_Context result = {};
Stored_Parse_Context_Slot *slot = 0;
if (id == 0){

View File

@ -11,7 +11,7 @@
internal Ptr_Table
make_Ptr_table(void *mem, umem size){
Ptr_Table table = {0};
Ptr_Table table = {};
i32 max = (i32)(size/8);
if (max > 0){
table.mem = mem;
@ -173,7 +173,7 @@ insert_Ptr_table(Heap *heap, Ptr_Table *table, void* key){
internal u32_Ptr_Table
make_u32_Ptr_table(void *mem, umem size){
u32_Ptr_Table table = {0};
u32_Ptr_Table table = {};
i32 max = (i32)(size/16);
if (max > 0){
table.mem = mem;
@ -234,7 +234,7 @@ insert_u32_Ptr_table(u32_Ptr_Table *table, u32*key, void**val){
internal u32_Ptr_Lookup_Result
lookup_u32_Ptr_table(u32_Ptr_Table *table, u32*key){
u32_Ptr_Lookup_Result result = {0};
u32_Ptr_Lookup_Result result = {};
i32 max = table->max;
if (max > 0){
u64 hash = 0;

View File

@ -46,7 +46,7 @@ end_render_section(Render_Target *target, System_Functions *system){
internal void
draw_rectangle(Render_Target *target, f32_Rect rect, u32 color){
Render_Command_Rectangle cmd = {0};
Render_Command_Rectangle cmd = {};
CmdHeader(RenCom_Rectangle);
cmd.rect = rect;
cmd.color = color;
@ -61,7 +61,7 @@ draw_rectangle(Render_Target *target, i32_Rect rect, u32 color){
internal void
draw_rectangle_outline(Render_Target *target, f32_Rect rect, u32 color){
Render_Command_Rectangle cmd = {0};
Render_Command_Rectangle cmd = {};
CmdHeader(RenCom_Outline);
cmd.rect = rect;
cmd.color = color;
@ -130,8 +130,8 @@ draw_string_base(System_Functions *system, Render_Target *target, Face_ID font_i
u8 *str = (u8*)str_.str;
u8 *str_end = str + str_.size;
Translation_State tran = {0};
Translation_Emits emits = {0};
Translation_State tran = {};
Translation_Emits emits = {};
for (u32 i = 0; str < str_end; ++str, ++i){
translating_fully_process_byte(system, font, &tran, *str, i, str_.size, &emits);

View File

@ -45,7 +45,7 @@ render_internal_push_clip(Render_Target *t, i32_Rect clip_box){
// TODO(allen): If the previous command was also a push clip should
// undo that one and just do this one. (OPTIMIZATION).
Render_Command_Change_Clip cmd = {0};
Render_Command_Change_Clip cmd = {};
cmd.header.size = sizeof(cmd);
cmd.header.type = RenCom_ChangeClip;
cmd.box = clip_box;

View File

@ -17,7 +17,7 @@ struct Plat_Handle{
u32 d[4];
};
static Plat_Handle null_plat_handle = {0};
static Plat_Handle null_plat_handle = {};
inline b32
handle_equal(Plat_Handle a, Plat_Handle b){
@ -137,7 +137,7 @@ struct Thread_Memory{
u32 size;
u32 id;
};
global Thread_Memory null_thread_memory = {0};
global Thread_Memory null_thread_memory = {};
struct Thread_Exchange;
struct System_Functions;

View File

@ -179,9 +179,9 @@ translating_generate_emits(Translation_State *tran, Translation_Emit_Rule emit_r
internal void
translating_fully_process_byte(System_Functions *system, Font_Pointers font, Translation_State *tran, u8 ch, u32 i, u32 size, Translation_Emits *emits_out){
Translation_Byte_Description description = {0};
Translation_Byte_Description description = {};
translating_consume_byte(tran, ch, i, size, &description);
Translation_Emit_Rule emit_rule = {0};
Translation_Emit_Rule emit_rule = {};
translating_select_emit_rule_with_font(system, font, tran, description, &emit_rule);
translating_generate_emits(tran, emit_rule, ch, i, emits_out);
}

View File

@ -18,7 +18,7 @@ struct Translation_State{
u8 fill_i;
u8 fill_expected;
};
global_const Translation_State null_buffer_translating_state = {0};
global_const Translation_State null_buffer_translating_state = {};
enum{
TranLBH_None,

View File

@ -101,7 +101,7 @@ view_get_cursor_xy(View *view){
inline Cursor_Limits
view_cursor_limits(View *view){
Cursor_Limits limits = {0};
Cursor_Limits limits = {};
f32 line_height = (f32)view->transient.line_height;
f32 visible_height = view_height(view);
@ -287,7 +287,7 @@ view_set_cursor_and_scroll(View *view, Full_Cursor cursor, b32 set_preferred_x,
internal Relative_Scrolling
view_get_relative_scrolling(View *view){
Relative_Scrolling result = {0};
Relative_Scrolling result = {};
if (view->transient.edit_pos != 0){
Vec2 cursor = view_get_cursor_xy(view);
result.scroll_y = cursor.y - view->transient.edit_pos->scroll.scroll_y;
@ -563,7 +563,7 @@ get_visual_markers(Partition *arena, Dynamic_Workspace *workspace,
case VisualType_CharacterHighlightRanges:
case VisualType_LineHighlightRanges:
{
i32 pos_pair[2] = {0};
i32 pos_pair[2] = {};
i32 pair_index = 0;
for (;marker < marker_one_past_last; marker += stride_size_from_last){
@ -574,7 +574,7 @@ get_visual_markers(Partition *arena, Dynamic_Workspace *workspace,
if (pair_index == 2){
pair_index = 0;
Range range_b = {0};
Range range_b = {};
range_b.first = pos_pair[0];
range_b.one_past_last = pos_pair[1];
@ -774,7 +774,7 @@ render_loaded_file_in_view__inner(Models *models, Render_Target *target, View *v
Face_ID font_id = file->settings.font_id;
// NOTE(allen): Get visual markers
Render_Marker_Array markers = {0};
Render_Marker_Array markers = {};
markers.markers = push_array(part, Render_Marker, 0);
{
Lifetime_Object *lifetime_object = file->lifetime_object;
@ -806,19 +806,19 @@ render_loaded_file_in_view__inner(Models *models, Render_Target *target, View *v
visual_markers_quick_sort(markers.markers, marker_segments[i].first, marker_segments[i].one_past_last);
}
Render_Marker_Array character_markers = {0};
Render_Marker_Array character_markers = {};
character_markers.markers = markers.markers + marker_segments[0].first;
character_markers.count = marker_segments[0].one_past_last - marker_segments[0].first;
Render_Marker_Array line_markers = {0};
Render_Marker_Array line_markers = {};
line_markers.markers = markers.markers + marker_segments[1].first;
line_markers.count = marker_segments[1].one_past_last - marker_segments[1].first;
Render_Marker_Array range_markers = {0};
Render_Marker_Array range_markers = {};
range_markers.markers = markers.markers + marker_segments[2].first;
range_markers.count = marker_segments[2].one_past_last - marker_segments[2].first;
Render_Marker_Array line_range_markers = {0};
Render_Marker_Array line_range_markers = {};
line_range_markers.markers = markers.markers + marker_segments[3].first;
line_range_markers.count = marker_segments[3].one_past_last - marker_segments[3].first;
@ -982,7 +982,7 @@ render_loaded_file_in_view__inner(Models *models, Render_Target *target, View *v
line_range_markers.markers[visual_line_range_markers_scan_index].pos <= ind;
visual_line_range_markers_scan_index += 1){
Render_Marker *marker = &line_range_markers.markers[visual_line_range_markers_scan_index];
Render_Range_Record range_record = {0};
Render_Range_Record range_record = {};
range_record.color = marker->color;
range_record.text_color = marker->text_color;
range_record.one_past_last = marker->one_past_last;
@ -1059,7 +1059,7 @@ render_loaded_file_in_view__inner(Models *models, Render_Target *target, View *v
range_markers.markers[visual_range_markers_scan_index].pos <= ind;
visual_range_markers_scan_index += 1){
Render_Marker *marker = &range_markers.markers[visual_range_markers_scan_index];
Render_Range_Record range_record = {0};
Render_Range_Record range_record = {};
range_record.color = marker->color;
range_record.text_color = marker->text_color;
range_record.one_past_last = marker->one_past_last;
@ -1194,7 +1194,7 @@ render_loaded_file_in_view(System_Functions *system, View *view, Models *models,
// to the gui system.
scroll_y += view->transient.widget_height;
Full_Cursor render_cursor = {0};
Full_Cursor render_cursor = {};
if (!file->settings.unwrapped_lines){
render_cursor = file_compute_cursor(system, file, seek_wrapped_xy(0, scroll_y, 0), true);
}
@ -1226,8 +1226,8 @@ render_loaded_file_in_view(System_Functions *system, View *view, Models *models,
params.virtual_white = file->settings.virtual_white;
params.wrap_slashes = file->settings.wrap_indicator;
Buffer_Render_State state = {0};
Buffer_Layout_Stop stop = {0};
Buffer_Render_State state = {};
Buffer_Layout_Stop stop = {};
f32 line_shift = 0.f;
b32 do_wrap = false;
@ -1274,7 +1274,7 @@ render_loaded_file_in_view(System_Functions *system, View *view, Models *models,
}
push_array(part, Buffer_Render_Item, item_count);
Range on_screen_range = {0};
Range on_screen_range = {};
on_screen_range.first = render_cursor.pos;
on_screen_range.one_past_last = end_pos;

View File

@ -27,7 +27,7 @@ struct File_Viewing_Data{
b32 show_whitespace;
b32 file_locked;
};
global File_Viewing_Data null_file_viewing_data = {0};
global File_Viewing_Data null_file_viewing_data = {};
struct View_Transient{
struct View *next;

View File

@ -50,13 +50,13 @@ internal Input_Process_Result
do_step_file_view(System_Functions *system, View *view, Models *models, i32_Rect rect, b32 is_active, f32 dt, GUI_Scroll_Vars scroll, i32 max_y){
scroll.target_y = clamp(0, scroll.target_y, max_y);
Input_Process_Result result = {0};
Input_Process_Result result = {};
result.scroll = scroll;
i32 line_height = view->transient.line_height;
if (!view->transient.hide_file_bar){
i32_Rect top_bar_rect = {0};
i32_Rect top_bar_rect = {};
top_bar_rect.x0 = rect.x0;
top_bar_rect.y0 = rect.y0;
top_bar_rect.x1 = rect.x1;
@ -240,7 +240,7 @@ do_render_file_view(System_Functions *system, View *view, Models *models, GUI_Sc
Font_Pointers font = system->font.get_pointers_by_id(font_id);
if (!view->transient.hide_file_bar){
i32_Rect top_bar_rect = {0};
i32_Rect top_bar_rect = {};
top_bar_rect.x0 = rect.x0;
top_bar_rect.y0 = rect.y0;
top_bar_rect.x1 = rect.x1;
@ -253,7 +253,7 @@ do_render_file_view(System_Functions *system, View *view, Models *models, GUI_Sc
for (Query_Slot *slot = view->transient.query_set.used_slot;
slot != 0;
slot = slot->next, ++bar_count){
i32_Rect query_bar_rect = {0};
i32_Rect query_bar_rect = {};
query_bar_rect.x0 = rect.x0;
query_bar_rect.y0 = rect.y0;
query_bar_rect.x1 = rect.x1;

View File

@ -53,7 +53,7 @@ working_set_extend_memory(Working_Set *working_set, Editing_File *new_space, i16
working_set->file_max += number_of_files;
Buffer_Slot_ID id = {0};
Buffer_Slot_ID id = {};
id.part[1] = high_part;
Editing_File *file_ptr = new_space;
@ -191,7 +191,7 @@ working_set_init(Working_Set *working_set, Partition *partition, Heap *heap){
inline void
working_set__grow_if_needed(Table *table, Heap *heap, void *arg, Hash_Function *hash_func, Compare_Function *comp_func){
if (table_at_capacity(table)){
Table btable = {0};
Table btable = {};
i32 new_max = table->max * 2;
i32 mem_size = table_required_mem_size(new_max, table->item_size);
void *mem = heap_allocate(heap, mem_size);
@ -456,7 +456,7 @@ buffer_bind_name_low_level(Heap *heap, Working_Set *working_set, Editing_File *f
Assert(file->base_name.name.size == 0);
Assert(file->unique_name.name.size == 0);
Editing_File_Name new_name = {0};
Editing_File_Name new_name = {};
new_name.name = make_fixed_width_string(new_name.name_);
buffer_resolve_name_low_level(working_set, &new_name, name);
@ -560,7 +560,7 @@ buffer_bind_name(Models *models, Heap *heap, Partition *scratch,
internal Editing_File*
open_file(System_Functions *system, Models *models, String filename){
Editing_File *file = 0;
Editing_File_Name canon_name = {0};
Editing_File_Name canon_name = {};
if (terminate_with_null(&filename) &&
get_canon_name(system, filename, &canon_name)){

View File

@ -321,7 +321,7 @@ fm_init_system(){
internal Temp_Dir
fm_pushdir(char *dir){
Temp_Dir temp = {0};
Temp_Dir temp = {};
GetCurrentDirectoryA(sizeof(temp.dir), temp.dir);
SetCurrentDirectoryA(dir);
return(temp);

View File

@ -828,11 +828,11 @@ do_table_reduction(FSM_Tables *table, uint16_t state_count){
static FSM_Tables
generate_whitespace_skip_table(){
uint8_t state_count = LSPP_count;
FSM_Tables table = {0};
FSM_Tables table = {};
allocate_full_tables(&table, state_count);
int32_t i = 0;
Whitespace_FSM wfsm = {0};
Whitespace_FSM wfsm = {};
Whitespace_FSM new_wfsm;
for (uint16_t c = 0; c < 256; ++c){
for (uint8_t state = 0; state < state_count; ++state){
@ -850,12 +850,12 @@ generate_whitespace_skip_table(){
static FSM_Tables
generate_table(u8_4tech state_count, FSM_Function *fsm_call){
FSM_Tables table = {0};
FSM_Tables table = {};
allocate_full_tables(&table, state_count);
i32_4tech i = 0;
Cpp_Lex_FSM fsm = {0};
Cpp_Lex_FSM new_fsm = {0};
Cpp_Lex_FSM fsm = {};
Cpp_Lex_FSM new_fsm = {};
for (uint16_t c = 0; c < 256; ++c){
for (u8_4tech state = 0; state < state_count; ++state){
fsm.state = state;
@ -887,12 +887,12 @@ generate_table(u8_4tech state_count, FSM_Function *fsm_call){
static FSM_Tables
generate_fsm_table(uint8_t pp_state, bool32 ignore_string_delims){
uint8_t state_count = LS_count;
FSM_Tables table = {0};
FSM_Tables table = {};
allocate_full_tables(&table, state_count);
int32_t i = 0;
Cpp_Lex_FSM fsm = {0};
Cpp_Lex_FSM new_fsm = {0};
Cpp_Lex_FSM fsm = {};
Cpp_Lex_FSM new_fsm = {};
for (uint16_t c = 0; c < 256; ++c){
for (uint8_t state = 0; state < state_count; ++state){
fsm.state = state;

View File

@ -101,7 +101,7 @@ struct Used_Links{
i32 count, max;
};
internal Item_Node null_item_node = {0};
internal Item_Node null_item_node = {};
internal String
str_start_end(char *data, i32 start, i32 end){
@ -192,7 +192,7 @@ str_alloc(i32 cap){
internal Item_Set
allocate_item_set(i32 count){
Item_Set item_set = {0};
Item_Set item_set = {};
if (count > 0){
item_set.items = fm_push_array(Item_Node, count);
item_set.count = count;
@ -203,7 +203,7 @@ allocate_item_set(i32 count){
internal String
file_dump(char *filename){
String result = {0};
String result = {};
FILE *file = fopen(filename, "rb");
if (file){
@ -225,7 +225,7 @@ file_dump(char *filename){
internal Parse
meta_lex(char *filename){
Parse result = {0};
Parse result = {};
result.code = file_dump(filename);
if (result.code.str != 0){
result.tokens = cpp_make_token_array(1024);
@ -236,7 +236,7 @@ meta_lex(char *filename){
internal String
get_first_line(String source){
String line = {0};
String line = {};
i32 pos = find_s_char(source, 0, '\n');
line = substr(source, 0, pos);
return(line);
@ -244,7 +244,7 @@ get_first_line(String source){
internal String
get_next_line(String source, String line){
String next = {0};
String next = {};
i32 pos = (i32)(line.str - source.str) + line.size;
i32 start = 0;
@ -335,7 +335,7 @@ get_doc_string_from_prev(Parse_Context *context, String *doc_string){
internal String
doc_parse_note(String source, i32 *pos){
String result = {0};
String result = {};
i32 p = *pos;
i32 start = p;
@ -355,7 +355,7 @@ doc_parse_note(String source, i32 *pos){
internal String
doc_parse_note_string(String source, i32 *pos){
String result = {0};
String result = {};
Assert(source.str[*pos] == '(');
@ -389,7 +389,7 @@ doc_parse_note_string(String source, i32 *pos){
internal String
doc_parse_parameter(String source, i32 *pos){
String result = {0};
String result = {};
i32 p = *pos;
i32 start = p;
@ -411,7 +411,7 @@ doc_parse_parameter(String source, i32 *pos){
internal String
doc_parse_last_parameter(String source, i32 *pos){
String result = {0};
String result = {};
i32 p = *pos;
i32 start = p;
@ -528,7 +528,7 @@ struct_parse_member(Parse_Context *context, Item_Node *member){
Cpp_Token *token = get_token(context);
String doc_string = {0};
String doc_string = {};
get_doc_string_from_prev(context, &doc_string);
Cpp_Token *start_token = token;
@ -540,7 +540,7 @@ struct_parse_member(Parse_Context *context, Item_Node *member){
}
if (token){
String name = {0};
String name = {};
Cpp_Token *token_j = 0;
i32 nest_level = 0;
@ -639,7 +639,7 @@ struct_parse(i32 is_struct, Parse_Context *context, Item_Node *top_member){
Cpp_Token *start_token = get_token(context);
Cpp_Token *token = 0;
String doc_string = {0};
String doc_string = {};
get_doc_string_from_prev(context, &doc_string);
for (; (token = get_token(context)) != 0; get_next_token(context)){
@ -657,12 +657,12 @@ struct_parse(i32 is_struct, Parse_Context *context, Item_Node *top_member){
}
}
String name = {0};
String name = {};
if (token_j != start_token){
name = skip_chop_whitespace(get_lexeme(*token_j, context->data));
}
String type = {0};
String type = {};
if (is_struct){
type = make_lit_string("struct");
}
@ -718,7 +718,7 @@ typedef_parse(Parse_Context *context, Item_Node *item){
i32 result = false;
Cpp_Token *token = get_token(context);
String doc_string = {0};
String doc_string = {};
get_doc_string_from_prev(context, &doc_string);
Cpp_Token *start_token = token;
@ -758,7 +758,7 @@ internal i32
enum_parse(Parse_Context *context, Item_Node *item){
i32 result = false;
String parent_doc_string = {0};
String parent_doc_string = {};
get_doc_string_from_prev(context, &parent_doc_string);
Cpp_Token *parent_start_token = get_token(context);
@ -771,7 +771,7 @@ enum_parse(Parse_Context *context, Item_Node *item){
}
if (token){
String parent_name = {0};
String parent_name = {};
Cpp_Token *token_j = 0;
for (; (token_j = get_token(context)) != 0; get_prev_token(context)){
@ -798,9 +798,9 @@ enum_parse(Parse_Context *context, Item_Node *item){
break;
}
else if (token->type == CPP_TOKEN_IDENTIFIER){
String doc_string = {0};
String name = {0};
String value = {0};
String doc_string = {};
String name = {};
String value = {};
get_doc_string_from_prev(context, &doc_string);
name = get_lexeme(*token, context->data);
@ -866,7 +866,7 @@ enum_parse(Parse_Context *context, Item_Node *item){
internal Argument_Breakdown
allocate_argument_breakdown(i32 count){
Argument_Breakdown breakdown = {0};
Argument_Breakdown breakdown = {};
if (count > 0){
breakdown.count = count;
breakdown.args = fm_push_array(Argument, count);
@ -970,7 +970,7 @@ function_get_doc(Parse_Context *context, char *data, String *doc_string){
i32 result = false;
Cpp_Token *token = get_token(context);
String lexeme = {0};
String lexeme = {};
if (function_parse_goto_name(context)){
if (token->type == CPP_TOKEN_IDENTIFIER){
@ -1068,7 +1068,7 @@ internal i32
function_parse(Parse_Context *context, Item_Node *item, String cpp_name){
i32 result = false;
String doc_string = {0};
String doc_string = {};
Cpp_Token *token = get_token(context);
item->marker = get_lexeme(*token, context->data);
@ -1125,7 +1125,7 @@ macro_parse(Parse_Context *context, Item_Node *item){
Cpp_Token *doc_token = 0;
Cpp_Token *args_start_token = 0;
String doc_string = {0};
String doc_string = {};
if (macro_parse_check(context)){
token = get_token(context);
@ -1189,7 +1189,7 @@ macro_parse(Parse_Context *context, Item_Node *item){
internal Meta_Unit
compile_meta_unit(char *code_directory, char **files, Meta_Keywords *meta_keywords, i32 key_count){
Meta_Unit unit = {0};
Meta_Unit unit = {};
i32 file_count = 0;
for (char **file_ptr = files; *file_ptr; ++file_ptr, ++file_count);
@ -1255,7 +1255,7 @@ compile_meta_unit(char *code_directory, char **files, Meta_Keywords *meta_keywor
Parse_Context context_ = setup_parse_context(unit.parse[J]);
Parse_Context *context = &context_;
String cpp_name = {0};
String cpp_name = {};
i32 has_cpp_name = 0;
for (; (token = get_token(context)) != 0; get_next_token(context)){

View File

@ -54,7 +54,8 @@ M(mouse_right_release) \
M(mouse_wheel) \
M(mouse_move) \
M(animate) \
M(view_activate) \
M(click_activate_view) \
M(click_deactivate_view) \
M(f1) \
M(f2) \
M(f3) \
@ -326,7 +327,7 @@ struct App_API{
internal App_API
allocate_app_api(i32 count){
App_API app_api = {0};
App_API app_api = {};
app_api.names = fm_push_array(App_API_Name, count);
memset(app_api.names, 0, sizeof(App_API_Name)*count);
return(app_api);
@ -678,7 +679,7 @@ generate_remapping_code_and_data(){
Temp temp = fm_begin_temp();
// Generate mapping array data structure
Mapping_Array mappings_ = {0};
Mapping_Array mappings_ = {};
Mapping_Array *mappings = &mappings_;
begin_mapping(mappings, default, "The default 4coder bindings - typically good for Windows and Linux");
@ -691,7 +692,7 @@ generate_remapping_code_and_data(){
bind(mappings, 'n', MDFR_CTRL, interactive_new);
bind(mappings, 'o', MDFR_CTRL, interactive_open_or_new);
bind(mappings, 'o', MDFR_ALT, open_in_other);
bind(mappings, 'o', MDFR_ALT , open_in_other);
bind(mappings, 'k', MDFR_CTRL, interactive_kill_buffer);
bind(mappings, 'i', MDFR_CTRL, interactive_switch_buffer);
bind(mappings, 'h', MDFR_CTRL, project_go_to_root_directory);
@ -744,7 +745,7 @@ generate_remapping_code_and_data(){
bind_vanilla_keys(mappings, MDFR_NONE, write_character);
bind(mappings, key_mouse_left, MDFR_NONE, click_set_cursor_and_mark);
bind(mappings, key_view_activate, MDFR_NONE, click_set_cursor_and_mark);
bind(mappings, key_click_activate_view, MDFR_NONE, click_set_cursor_and_mark);
bind(mappings, key_mouse_left_release, MDFR_NONE, click_set_cursor);
bind(mappings, key_mouse_move, MDFR_NONE, click_set_cursor_if_lbutton);
@ -894,7 +895,6 @@ generate_remapping_code_and_data(){
bind(mappings, key_page_down, MDFR_NONE, lister__move_down);
bind(mappings, key_mouse_wheel , MDFR_NONE, lister__wheel_scroll);
bind(mappings, key_mouse_left , MDFR_NONE, lister__mouse_press);
bind(mappings, key_view_activate , MDFR_NONE, lister__mouse_press);
bind(mappings, key_mouse_left_release, MDFR_NONE, lister__mouse_release);
bind(mappings, key_mouse_move, MDFR_NONE, lister__repaint);
bind(mappings, key_animate , MDFR_NONE, lister__repaint);
@ -967,7 +967,7 @@ generate_remapping_code_and_data(){
bind_vanilla_keys(mappings, MDFR_ALT, write_character);
bind(mappings, key_mouse_left, MDFR_NONE, click_set_cursor_and_mark);
bind(mappings, key_view_activate, MDFR_NONE, click_set_cursor_and_mark);
bind(mappings, key_click_activate_view, MDFR_NONE, click_set_cursor_and_mark);
bind(mappings, key_mouse_left_release, MDFR_NONE, click_set_cursor);
bind(mappings, key_mouse_move, MDFR_NONE, click_set_cursor_if_lbutton);
@ -1115,7 +1115,6 @@ generate_remapping_code_and_data(){
bind(mappings, key_page_down, MDFR_NONE, lister__move_down);
bind(mappings, key_mouse_wheel , MDFR_NONE, lister__wheel_scroll);
bind(mappings, key_mouse_left , MDFR_NONE, lister__mouse_press);
bind(mappings, key_view_activate , MDFR_NONE, click_set_cursor_and_mark);
bind(mappings, key_mouse_left_release, MDFR_NONE, lister__mouse_release);
bind(mappings, key_mouse_move, MDFR_NONE, lister__repaint);
bind(mappings, key_animate , MDFR_NONE, lister__repaint);

View File

@ -191,7 +191,7 @@ interpret_render_buffer(Render_Target *t, Partition *growable_scratch){
f32 x = glyph->pos.x;
f32 y = glyph->pos.y;
f32_Rect xy = {0};
f32_Rect xy = {};
xy.x0 = x + bounds.xoff;
xy.y0 = y + bounds.yoff;
xy.x1 = x + bounds.xoff2;
@ -201,7 +201,7 @@ interpret_render_buffer(Render_Target *t, Partition *growable_scratch){
f32 unit_u = 1.f/tex_width;
f32 unit_v = 1.f/tex_height;
f32_Rect uv = {0};
f32_Rect uv = {};
uv.x0 = bounds.x0*unit_u;
uv.y0 = bounds.y0*unit_v;
uv.x1 = bounds.x1*unit_u;

View File

@ -79,7 +79,7 @@ load_custom_code(){
LoadLibrary_BinaryDirectory,
};
char *custom_files[3] = {0};
char *custom_files[3] = {};
if (plat_settings.custom_dll != 0){
custom_files[0] = plat_settings.custom_dll;
if (!plat_settings.custom_dll_is_strict){

View File

@ -128,9 +128,9 @@ Sys_Get_File_Change_Sig(system_get_file_change){
internal File_Data
sysshared_load_file(char *filename){
File_Data result = {0};
File_Data result = {};
Plat_Handle handle = {0};
Plat_Handle handle = {};
if (system_load_handle(filename, &handle)){
u32 size = system_load_size(handle);
@ -193,10 +193,10 @@ sysshared_partition_grow(Partition *part, i32 new_size){
internal void*
sysshared_push_block(Partition *part, i32 size){
void *result = push_block(part, size);
void *result = push_array(part, i8, size);
if (result == 0){
sysshared_partition_grow(part, size + part->max);
result = push_block(part, size);
result = push_array(part, i8, size);
}
return(result);
}

View File

@ -22,7 +22,7 @@ struct File_Data{
u32 size;
b32 got_file;
};
global File_Data null_file_data = {0};
global File_Data null_file_data = {};
#define Sys_File_Can_Be_Made_Sig(name) b32 name(u8 *filename)
internal Sys_File_Can_Be_Made_Sig(system_file_can_be_made);

View File

@ -258,7 +258,7 @@ Sys_Post_Job_Sig(system_post_job){
queue->max = new_max;
}
Full_Job_Data full_job = {0};
Full_Job_Data full_job = {};
full_job.job = job;
full_job.running_thread = THREAD_NOT_ASSIGNED;
full_job.id = result;

View File

@ -466,7 +466,7 @@ Sys_Font_Path(name, parameters){
fc_config = FcInitLoadConfigAndFonts();
}
Font_Path path = {0};
Font_Path path = {};
FcPattern *pattern_regular = FcPatternBuild(
0,
@ -833,7 +833,7 @@ struct glx_config_result{
internal glx_config_result
ChooseGLXConfig(Display *XDisplay, int XScreenIndex)
{
glx_config_result Result = {0};
glx_config_result Result = {};
int DesiredAttributes[] = {
GLX_X_RENDERABLE , True,
@ -881,7 +881,7 @@ struct Init_Input_Result{
XIMStyle best_style;
XIC xic;
};
static Init_Input_Result null_init_input_result = {0};
static Init_Input_Result null_init_input_result = {};
internal Init_Input_Result
LinuxInputInit(Display *dpy, Window XWindow){
@ -1385,7 +1385,7 @@ LinuxHandleX11Events(void)
u32 key_no_caps = key;
if (mods[MDFR_CAPS_INDEX] && status == XLookupBoth && event.xkey.keycode){
u8 buff_no_caps[32] = {0};
u8 buff_no_caps[32] = {};
event.xkey.state &= ~(LockMask);
Xutf8LookupString(linuxvars.input_context, &event.xkey, (char*)buff_no_caps, sizeof(buff_no_caps) - 1, NULL, &status);
@ -2087,7 +2087,7 @@ main(int argc, char **argv){
// NOTE(allen): Application Core Update
target.buffer.pos = 0;
Application_Step_Result result = {0};
Application_Step_Result result = {};
if (app.step != 0){
result = app.step(&sysfunc, &target, &memory_vars, &frame_input);
}

View File

@ -358,7 +358,7 @@ Sys_Font_Path(name, parameters){
OSX_Font_Match match = osx_get_font_match(name, pt_size, italic, bold);
Font_Path path = {0};
Font_Path path = {};
Partition *part = &shared_vars.font_scratch;
path.temp = begin_temp_memory(part);
@ -513,7 +513,7 @@ osx_character_input(u32 code, OSX_Keyboard_Modifiers modifier_flags){
case 0xF713: c = key_f16; break;
}
b8 mods[MDFR_INDEX_COUNT] = {0};
b8 mods[MDFR_INDEX_COUNT] = {};
if (modifier_flags.shift) mods[MDFR_SHIFT_INDEX] = true;
if (modifier_flags.control) mods[MDFR_CONTROL_INDEX] = true;
@ -761,7 +761,7 @@ osx_init(){
String clipboard_string = {0};
String clipboard_string = {};
if (osx_objc.has_clipboard_item){
clipboard_string = make_string(osx_objc.clipboard_data, osx_objc.clipboard_size);
}

View File

@ -96,7 +96,7 @@ static DISPLINK_SIG(osx_display_link);
is_dead_key = true;
}
OSX_Keyboard_Modifiers mods = {0};
OSX_Keyboard_Modifiers mods = {};
NSEventModifierFlags flags = [NSEvent modifierFlags];
mods.shift = ((flags & NSEventModifierFlagShift) != 0);
mods.command = ((flags & NSEventModifierFlagCommand) != 0);
@ -334,7 +334,7 @@ typedef struct{
volatile i64 lock;
} File_Change_Queue;
static File_Change_Queue file_queue = {0};
static File_Change_Queue file_queue = {};
File_Change_Node*
file_change_node(char *name){
@ -376,7 +376,7 @@ typedef struct{
File_Watching_Handle
schedule_file_watching(char *f){
File_Watching_Handle handle = {0};
File_Watching_Handle handle = {};
CFStringRef arg = CFStringCreateWithCString(0, f, kCFStringEncodingUTF8);
@ -416,7 +416,7 @@ typedef struct File_Change_Table{
i32 size;
} File_Change_Table;
static File_Change_Table file_change_table = {0};
static File_Change_Table file_change_table = {};
void*
osx_file_name_prefixed_length(char *name){
@ -774,7 +774,7 @@ osx_get_font_match(char *name, i32 pt_size, b32 italic, b32 bold){
used_base_file = true;
}
OSX_Font_Match match = {0};
OSX_Font_Match match = {};
if (font != nil){
NSString *path = get_font_path(font);
char *path_c = 0;
@ -798,7 +798,7 @@ osx_list_loadable_fonts(void){
NSArray<NSString*> *fonts = [font_manager availableFontFamilies];
OSX_Loadable_Fonts result = {0};
OSX_Loadable_Fonts result = {};
NSUInteger count_u = [fonts count];
int count = (int)count_u;

View File

@ -329,7 +329,7 @@ Sys_Load_Size_Sig(system_load_size){
u32 result = 0;
i32 fd = *(i32*)&handle;
struct stat st = {0};
struct stat st = {};
if (fstat(fd, &st) == -1){
LOGF("unable to stat a file\n");

View File

@ -84,7 +84,7 @@ struct Control_Keys{
b8 l_alt;
b8 r_alt;
};
global Control_Keys null_control_keys = {0};
global Control_Keys null_control_keys = {};
struct Win32_Input_Chunk_Transient{
Key_Input_Data key_data;
@ -94,7 +94,7 @@ struct Win32_Input_Chunk_Transient{
i8 mouse_wheel;
b8 trying_to_kill;
};
global Win32_Input_Chunk_Transient null_input_chunk_transient = {0};
global Win32_Input_Chunk_Transient null_input_chunk_transient = {};
struct Win32_Input_Chunk_Persistent{
i32 mouse_x, mouse_y;
@ -207,7 +207,7 @@ handle_type(Plat_Handle h){
internal Plat_Handle
handle_type(HANDLE h){
Plat_Handle result = {0};
Plat_Handle result = {};
memcpy(&result, &h, sizeof(h));
return(result);
}
@ -563,7 +563,7 @@ Sys_Font_Path_Not_Used;
internal
Sys_Font_Data(name, parameters){
Font_Raw_Data data = {0};
Font_Raw_Data data = {};
int weight = FW_REGULAR;
if (parameters->bold){
@ -678,11 +678,11 @@ internal void
win32_get_loadable_fonts(Partition *part, Font_Setup_List *list){
HDC hdc= GetDC(0);
LOGFONT log_font = {0};
LOGFONT log_font = {};
log_font.lfCharSet = ANSI_CHARSET;
log_font.lfFaceName[0] = 0;
Win32_Font_Enum p = {0};
Win32_Font_Enum p = {};
p.part = part;
p.list = list;
@ -762,7 +762,7 @@ win32_init_gl(HDC hdc){
#define GLInitFail(s) system_error_box(FNLN "\nOpenGL init fail - " s )
// Init First Context
WNDCLASSA wglclass = {0};
WNDCLASSA wglclass = {};
wglclass.lpfnWndProc = DefWindowProcA;
wglclass.hInstance = GetModuleHandle(0);
wglclass.lpszClassName = "4ed-wgl-loader";
@ -777,7 +777,7 @@ win32_init_gl(HDC hdc){
HDC hwgldc = GetDC(hwglwnd);
PIXELFORMATDESCRIPTOR format = {0};
PIXELFORMATDESCRIPTOR format = {};
format.nSize = sizeof(format);
format.nVersion = 1;
//format.dwFlags = PFD_SUPPORT_OPENGL | PFD_DRAW_TO_WINDOW | PFD_DOUBLEBUFFER;
@ -1242,7 +1242,7 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdS
// Window and GL Initialization
//
WNDCLASS window_class = {0};
WNDCLASS window_class = {};
window_class.style = CS_HREDRAW|CS_VREDRAW;
window_class.lpfnWndProc = (WNDPROC)(win32_proc);
window_class.hInstance = hInstance;
@ -1253,7 +1253,7 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdS
exit(1);
}
RECT window_rect = {0};
RECT window_rect = {};
if (plat_settings.set_window_size){
window_rect.right = plat_settings.window_w;
window_rect.bottom = plat_settings.window_h;
@ -1530,7 +1530,7 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdS
input_chunk.pers.control_keys[MDFR_CAPS_INDEX] = GetKeyState(VK_CAPITAL) & 0x1;
Application_Step_Input input = {0};
Application_Step_Input input = {};
input.first_step = win32vars.first;
input.dt = frame_useconds/1000000.f;
@ -1588,7 +1588,7 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdS
// NOTE(allen): Application Core Update
target.buffer.pos = 0;
Application_Step_Result result = {0};
Application_Step_Result result = {};
if (app.step != 0){
result = app.step(&sysfunc, &target, &memory_vars, &input);
}

View File

@ -20,7 +20,7 @@ struct Win32_Directory_Listener{
HANDLE dir;
i32 user_count;
};
global_const OVERLAPPED null_overlapped = {0};
global_const OVERLAPPED null_overlapped = {};
struct Win32_Directory_Listener_Node{
DLL_Node node;
@ -135,7 +135,7 @@ add_listener(File_Track_System *system, Partition *scratch, u8 *filename){
HANDLE dir = CreateFile_utf8(dir_name, FILE_LIST_DIRECTORY, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED, 0);
if (dir != INVALID_HANDLE_VALUE){
BY_HANDLE_FILE_INFORMATION dir_info = {0};
BY_HANDLE_FILE_INFORMATION dir_info = {};
DWORD getinfo_result = GetFileInformationByHandle(dir, &dir_info);
if (getinfo_result){
@ -217,7 +217,7 @@ remove_listener(File_Track_System *system, Partition *scratch, u8 *filename){
HANDLE dir = CreateFile_utf8(dir_name, FILE_LIST_DIRECTORY, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED, 0);
if (dir != INVALID_HANDLE_VALUE){
BY_HANDLE_FILE_INFORMATION dir_info = {0};
BY_HANDLE_FILE_INFORMATION dir_info = {};
DWORD getinfo_result = GetFileInformationByHandle(dir, &dir_info);
if (getinfo_result){
@ -297,7 +297,7 @@ get_change_event(File_Track_System *system, Partition *scratch, u8 *buffer, i32
local_persist i32 has_buffered_event = 0;
local_persist DWORD offset = 0;
local_persist Win32_Directory_Listener listener = {0};
local_persist Win32_Directory_Listener listener = {};
EnterCriticalSection(&vars->table_lock);

View File

@ -14,7 +14,7 @@
internal Win32_UTF16
input_8_to_16(Partition *scratch, u8 *in){
Win32_UTF16 r = {0};
Win32_UTF16 r = {};
u32 utf8_len = 0;
for (;in[utf8_len];++utf8_len);

View File

@ -35,7 +35,7 @@ struct Enriched_Text{
internal Enriched_Text
load_enriched_text(char *directory, char *filename){
Enriched_Text result = {0};
Enriched_Text result = {};
char *fname = fm_str(directory, "/", filename);
result.fname = str_alloc(str_size(fname) + 1);
fm_align();
@ -68,7 +68,7 @@ get_mangle_rule(String mangle){
internal String
apply_mangle_rule(String name, u32 mangle_rule){
String result = {0};
String result = {};
switch (mangle_rule){
case MangleRule_MacroSig:
{
@ -154,7 +154,7 @@ struct Document_Item{
} include;
};
};
global Document_Item null_document_item = {0};
global Document_Item null_document_item = {};
////////////////////////////////
@ -235,7 +235,7 @@ struct Abstract_Item{
// Meta parse members
Meta_Unit *unit;
};
global Abstract_Item null_abstract_item = {0};
global Abstract_Item null_abstract_item = {};
internal Abstract_Item*
get_item_by_name(Basic_List list, String name){
@ -271,7 +271,7 @@ struct Abstract_Item_Array{
internal Abstract_Item_Array
get_abstract_item_array(Basic_List *list){
Abstract_Item_Array result = {0};
Abstract_Item_Array result = {};
result.items = (Abstract_Item**)fm_push_array(Abstract_Item*, list->count);
result.count = list->count;
@ -303,7 +303,7 @@ struct Document_System{
internal Document_System
create_document_system(char *code_dir, char *asset_dir, char *src_dir){
Document_System system = {0};
Document_System system = {};
system.code_dir = code_dir;
system.asset_dir = asset_dir;
system.src_dir = src_dir;
@ -434,7 +434,7 @@ struct Document_Builder{
internal Document_Builder
begin_document_description(Document_System *system, char *title, char *name, b32 show_title){
Document_Builder builder = {0};
Document_Builder builder = {};
Abstract_Item *doc = create_abstract_item(&system->doc_list, name);
if (doc != 0){
builder.doc = doc;
@ -753,9 +753,9 @@ make_document_from_text(Document_System *doc_system, char *title, char *name, En
case Cmd_Section:
{
String body_text = {0};
String body_text = {};
if (extract_command_body(l, &i, &body_text)){
String extra_text = {0};
String extra_text = {};
extract_command_body(l, &i, &extra_text);
char *title = get_null_terminated_version(body_text);
@ -770,7 +770,7 @@ make_document_from_text(Document_System *doc_system, char *title, char *name, En
case Cmd_Style:
{
String body_text = {0};
String body_text = {};
if (extract_command_body(l, &i, &body_text)){
begin_style(&builder, body_text);
}
@ -795,7 +795,7 @@ make_document_from_text(Document_System *doc_system, char *title, char *name, En
case Cmd_Link:
{
String body_text = {0};
String body_text = {};
if (extract_command_body(l, &i, &body_text)){
begin_link(&builder, body_text);
}
@ -807,7 +807,7 @@ make_document_from_text(Document_System *doc_system, char *title, char *name, En
// TODO(allen): upgrade this bs
case Cmd_DocumentLink:
{
String body_text = {0};
String body_text = {};
if (extract_command_body(l, &i, &body_text)){
add_document_link(&builder, body_text);
}
@ -818,9 +818,9 @@ make_document_from_text(Document_System *doc_system, char *title, char *name, En
case Cmd_Image:
{
String body_text = {0};
String body_text = {};
if (extract_command_body(l, &i, &body_text)){
String size_parameter = {0};
String size_parameter = {};
extract_command_body(l, &i, &size_parameter);
add_image(&builder, body_text, size_parameter);
}
@ -831,7 +831,7 @@ make_document_from_text(Document_System *doc_system, char *title, char *name, En
case Cmd_Video:
{
String body_text = {0};
String body_text = {};
if (extract_command_body(l, &i, &body_text)){
add_video(&builder, body_text);
}
@ -857,7 +857,7 @@ make_document_from_text(Document_System *doc_system, char *title, char *name, En
case Cmd_Include:
{
String body_text = {0};
String body_text = {};
if (extract_command_body(l, &i, &body_text)){
add_include(doc_system, &builder, body_text);
}
@ -868,8 +868,8 @@ make_document_from_text(Document_System *doc_system, char *title, char *name, En
case Cmd_MetaParse:
{
String name = {0};
String file = {0};
String name = {};
String file = {};
if (extract_command_body(l, &i, &name)){
if (extract_command_body(l, &i, &file)){
u32 result = create_meta_unit(doc_system, name, file);
@ -893,9 +893,9 @@ make_document_from_text(Document_System *doc_system, char *title, char *name, En
case Cmd_DocList:
case Cmd_DocFull:
{
String name = {0};
String name = {};
if (extract_command_body(l, &i, &name)){
String mangle = {0};
String mangle = {};
extract_command_body(l, &i, &mangle);
u32 mangle_rule = MangleRule_None;
@ -953,7 +953,7 @@ struct Unresolved_Include_Array{
internal Unresolved_Include_Array
get_unresolved_includes(Document_System *doc_system){
Unresolved_Include_Array result = {0};
Unresolved_Include_Array result = {};
Basic_List *list = &doc_system->unresolved_includes;
result.items = (Document_Item**)fm_push_array(Document_Item*, list->count);
@ -1460,8 +1460,8 @@ global String doc_chunk_headers[] = {
internal String
get_next_doc_chunk(String source, String prev_chunk, Doc_Chunk_Type *type){
String chunk = {0};
String word = {0};
String chunk = {};
String word = {};
i32 pos = source.size;
i32 word_index = 0;
Doc_Chunk_Type t = DocChunk_PlainText;
@ -1604,7 +1604,7 @@ print_struct_docs(String *out, Item_Node *member){
print_struct_docs(out, member_iter);
}
else{
Documentation doc = {0};
Documentation doc = {};
perform_doc_parse(member_iter->doc_string, &doc);
append(out, "<div>");
@ -1648,7 +1648,7 @@ print_function_docs(String *out, String name, String doc_string){
Temp temp = fm_begin_temp();
Documentation doc = {0};
Documentation doc = {};
perform_doc_parse(doc_string, &doc);
@ -1767,7 +1767,7 @@ print_item_html(String *out, Used_Links *used, Item_Node *item, char *id_postfix
// NOTE(allen): Descriptive section
String doc_string = item->doc_string;
Documentation doc = {0};
Documentation doc = {};
perform_doc_parse(doc_string, &doc);
String main_doc = doc.main_doc;
@ -1798,7 +1798,7 @@ print_item_html(String *out, Used_Links *used, Item_Node *item, char *id_postfix
// NOTE(allen): Descriptive section
String doc_string = item->doc_string;
Documentation doc = {0};
Documentation doc = {};
perform_doc_parse(doc_string, &doc);
String main_doc = doc.main_doc;
@ -1819,7 +1819,7 @@ print_item_html(String *out, Used_Links *used, Item_Node *item, char *id_postfix
for (Item_Node *member = item->first_child;
member;
member = member->next_sibling){
Documentation doc = {0};
Documentation doc = {};
perform_doc_parse(member->doc_string, &doc);
append(out, "<div>");
@ -1876,7 +1876,7 @@ print_item_html(String *out, Used_Links *used, Item_Node *item, char *id_postfix
// NOTE(allen): Descriptive section
{
Documentation doc = {0};
Documentation doc = {};
perform_doc_parse(doc_string, &doc);
String main_doc = doc.main_doc;
@ -1973,7 +1973,7 @@ struct Document_Output_System{
internal Document_Output_System
make_output_system(String *out, Document_System *doc_system, Used_Links *used_links, Section_Counter *section_counter, Include_Stack *inc_stack){
Document_Output_System sys = {0};
Document_Output_System sys = {};
sys.out = out;
sys.doc_system = doc_system;
sys.used_links = used_links;
@ -2239,7 +2239,7 @@ generate_item_html(Document_Output_System sys, Document_Item *item){
if (duplicate){
String error = make_lit_string("recursive inclusion, halted here");
Document_Item temp_item = {0};
Document_Item temp_item = {};
temp_item.type = Doc_Error;
set_item_string(&temp_item.string.string, error);
generate_item_html(sys, &temp_item);
@ -2265,13 +2265,13 @@ internal void
generate_document_html(String *out, Document_System *doc_system, Abstract_Item *doc){
Assert(doc->root_item != 0);
Used_Links used_links = {0};
Used_Links used_links = {};
init_used_links(&used_links, 4000);
Section_Counter section_counter = {0};
Section_Counter section_counter = {};
section_counter.counter[section_counter.nest_level] = 1;
Include_Stack inc_stack = {0};
Include_Stack inc_stack = {};
Document_Output_System sys = make_output_system(out, doc_system, &used_links, &section_counter, &inc_stack);

View File

@ -166,7 +166,7 @@ The following commands only apply in files where the lexer (syntax highlighting)
\ITEM \STYLE{code} <alt i> \END Surround the range between the cursor and mark with an '#if 0' and an '#endif'
\ITEM \STYLE{code} <alt 1> \END Reads a filename from surrounding '"' characters and attempts to open the corresponding file.
\ITEM \STYLE{code} <alt 2> \END If the current file is a *.cpp or *.h, attempts to open the corresponding *.h or *.cpp file in the other view.
\ITEM \STYLE{code} <ctrl 0> \END At the cursor, insert a ' = {0};'.
\ITEM \STYLE{code} <ctrl 0> \END At the cursor, insert a ' = {};'.
\END
\END
\SECTION{default-lister-ui-map}
@ -347,7 +347,7 @@ The following commands only apply in files where the lexer (syntax highlighting)
\ITEM \STYLE{code} <ctrl i> \END Surround the range between the cursor and mark with an '#if 0' and an '#endif'
\ITEM \STYLE{code} <ctrl 1> \END Reads a filename from surrounding '"' characters and attempts to open the corresponding file.
\ITEM \STYLE{code} <ctrl 2> \END If the current file is a *.cpp or *.h, attempts to open the corresponding *.h or *.cpp file in the other view.
\ITEM \STYLE{code} <cmnd 0> \END At the cursor, insert a ' = {0};'.
\ITEM \STYLE{code} <cmnd 0> \END At the cursor, insert a ' = {};'.
\END
\END
\SECTION{default-lister-ui-map}

View File

@ -96,7 +96,7 @@ save_build_number(char *file_name, i32 major, i32 minor, i32 build){
internal void
print_function_body_code(String *out, Parse_Context *context, i32 start){
String pstr = {0}, lexeme = {0};
String pstr = {}, lexeme = {};
Cpp_Token *token = 0;
i32 do_print = 0;
@ -223,7 +223,7 @@ int main(){
append(&out, "*/\n");
String pstr = {0};
String pstr = {};
i32 do_whitespace_print = true;
for(;(token = get_next_token(&pcontext)) != 0;){

View File

@ -42,7 +42,7 @@ typedef struct String{
i32_4tech memory_size;
} String;
static String null_string = {0};
static String null_string = {};
#endif
FSTRING_DECLS
@ -277,7 +277,7 @@ skip_whitespace(String str)
/* DOC(This call creates a substring that starts with the first non-whitespace character of str.
Like other substr calls, the new string uses the underlying memory and so should usually be
considered immutable.) DOC_SEE(substr) */{
String result = {0};
String result = {};
i32_4tech i = 0;
for (; i < str.size && char_is_whitespace(str.str[i]); ++i);
result = substr(str, i, str.size - i);
@ -290,7 +290,7 @@ skip_whitespace_measure(String str, i32_4tech *skip_length)
/* DOC(This call creates a substring that starts with the first non-whitespace character of str.
Like other substr calls, the new string uses the underlying memory and so should usually be
considered immutable.) DOC_SEE(substr) */{
String result = {0};
String result = {};
i32_4tech i = 0;
for (; i < str.size && char_is_whitespace(str.str[i]); ++i);
result = substr(str, i, str.size - i);
@ -303,7 +303,7 @@ chop_whitespace(String str)
/* DOC(This call creates a substring that ends with the last non-whitespace character of str.
Like other substr calls, the new string uses the underlying memory and so should usually be
considered immutable.) DOC_SEE(substr) */{
String result = {0};
String result = {};
i32_4tech i = str.size;
for (; i > 0 && char_is_whitespace(str.str[i-1]); --i);
result = substr(str, 0, i);
@ -1674,7 +1674,7 @@ typedef struct Float_To_Str_Variables{
static Float_To_Str_Variables
get_float_vars(float x){
Float_To_Str_Variables vars = {0};
Float_To_Str_Variables vars = {};
if (x < 0){
vars.negative = 1;
@ -2042,7 +2042,7 @@ DOC_RETURN(The returned value is the first 'double line' in the source string.)
DOC(A 'double line' is a string of characters delimited by two new line characters. This call begins an iteration over all the double lines in the given source string.)
DOC_SEE(get_next_double_line)
*/{
String line = {0};
String line = {};
i32_4tech pos0 = find_substr_s(source, 0, make_lit_string("\n\n"));
i32_4tech pos1 = find_substr_s(source, 0, make_lit_string("\r\n\r\n"));
if (pos1 < pos0){
@ -2059,7 +2059,7 @@ DOC_PARAM(line, the value returned from the previous call of get_first_double_li
DOC_RETURN(The returned value is the first 'double line' in the source string.)
DOC_SEE(get_first_double_line)
*/{
String next = {0};
String next = {};
i32_4tech pos = (i32_4tech)(line.str - source.str) + line.size;
i32_4tech start = 0, pos0 = 0, pos1 = 0;
@ -2088,7 +2088,7 @@ DOC_RETURN(The returned value is the first 'word' in the source string.)
DOC_SEE(get_first_word)
*/{
String word = {0};
String word = {};
i32_4tech pos0 = (i32_4tech)(prev_word.str - source.str) + prev_word.size;
i32_4tech pos1 = 0;
char c = 0;