Cleaned up input, replaced all {0} with {}
parent
c82d38d4a7
commit
1d5621f5b6
|
@ -82,16 +82,6 @@ ENUM(uint32_t, Memory_Protect_Flags){
|
||||||
MemProtect_Execute = 0x4,
|
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.) */
|
/* 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){
|
ENUM(int32_t, Wrap_Indicator_Mode){
|
||||||
/* DOC(WrapIndicator_Hide tells the buffer rendering system not to put any indicator on wrapped lines.) */
|
/* 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.) */
|
/* DOC(A Input_Type_Flag field specifies a set of input event types.) */
|
||||||
ENUM(uint32_t, Input_Type_Flag){
|
ENUM(uint32_t, Input_Type_Flag){
|
||||||
/* DOC(If EventOnAnyKey is set, all keyboard events are included in the set.) */
|
/* 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.) */
|
/* DOC(If EventOnEsc is set, any press of the escape key is included in the set.) */
|
||||||
EventOnEsc = 0x2,
|
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,
|
|
||||||
|
|
||||||
/* DOC(If EventOnButton is set, all mouse button events are included in the set.) */
|
/* DOC(If EventOnLeftButton is set, left clicks and releases are included in the set.) */
|
||||||
EventOnButton = (EventOnLeftButton | EventOnRightButton | EventOnWheel),
|
EventOnMouseLeftButton = 0x4,
|
||||||
/* DOC(This is not totally implemented yet.) */
|
/* DOC(If EventOnRightButton is set, right clicks and releases are included in the set.) */
|
||||||
EventOnMouse = (EventOnButton | EventOnMouseMove),
|
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.) */
|
/* 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.) */
|
/* 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
|
// 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.) */
|
/* 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{
|
STRUCT Mouse_State{
|
||||||
|
@ -386,7 +377,7 @@ STRUCT Mouse_State{
|
||||||
int32_t y;
|
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.
|
/* 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;
|
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.)
|
DOC(A four corner axis aligned rectangle, with floating point coordinates.)
|
||||||
|
@ -652,7 +643,7 @@ STRUCT f32_Rect{
|
||||||
float y1;
|
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(View_Summary acts as a handle to a view and describes the state of the view.)
|
||||||
DOC_SEE(Access_Flag)
|
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(User_Input describes an event, such as key presses, mouse button presses, mouse moves,
|
||||||
DOC_SEE(User_Input_Type_ID)
|
and also non-input related events like animation frames, and view activation changes.)
|
||||||
DOC_SEE(Generic_Command)
|
DOC_SEE(Generic_Command)
|
||||||
DOC_SEE(Key_Event_Data)
|
DOC_SEE(Key_Event_Data)
|
||||||
DOC_SEE(Mouse_State)
|
|
||||||
*/
|
*/
|
||||||
STRUCT User_Input{
|
STRUCT User_Input{
|
||||||
/* DOC(This field specifies whether the event was a key press or mouse event.) */
|
/* DOC(The description of the event.) */
|
||||||
User_Input_Type_ID type;
|
Key_Event_Data key;
|
||||||
/* 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(If this event would trigger a command, this field specifies what the command would be.) */
|
/* DOC(If this event would trigger a command, this field specifies what the command would be.) */
|
||||||
Generic_Command command;
|
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;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -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){
|
buffer_find_hard_start(Application_Links *app, Buffer_Summary *buffer, int32_t line_start, int32_t tab_width){
|
||||||
tab_width -= 1;
|
tab_width -= 1;
|
||||||
|
|
||||||
Hard_Start_Result result = {0};
|
Hard_Start_Result result = {};
|
||||||
result.all_space = 1;
|
result.all_space = 1;
|
||||||
result.indent_pos = 0;
|
result.indent_pos = 0;
|
||||||
result.char_pos = line_start;
|
result.char_pos = line_start;
|
||||||
|
|
||||||
char data_chunk[1024];
|
char data_chunk[1024];
|
||||||
Stream_Chunk stream = {0};
|
Stream_Chunk stream = {};
|
||||||
stream.add_null = true;
|
stream.add_null = true;
|
||||||
if (init_stream_chunk(&stream, app, buffer, line_start, data_chunk, sizeof(data_chunk))){
|
if (init_stream_chunk(&stream, app, buffer, line_start, data_chunk, sizeof(data_chunk))){
|
||||||
int32_t still_looping = 1;
|
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);
|
Assert(edit_count <= edit_max);
|
||||||
}
|
}
|
||||||
|
|
||||||
Buffer_Batch_Edit result = {0};
|
Buffer_Batch_Edit result = {};
|
||||||
result.str = str_base;
|
result.str = str_base;
|
||||||
result.str_len = (int32_t)(push_array(arena, char, 0) - str_base);
|
result.str_len = (int32_t)(push_array(arena, char, 0) - str_base);
|
||||||
result.edits = edits;
|
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){
|
int32_t line_start, int32_t tab_width){
|
||||||
#if 1
|
#if 1
|
||||||
// NOTE(allen): New implementation of find_anchor_token (4.0.26) revert if it is a problem.
|
// 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){
|
if (tokens.count > 0){
|
||||||
Cpp_Token *first_invalid_token = get_first_token_at_line(app, buffer, tokens, line_start);
|
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
|
#else
|
||||||
// NOTE(allen): Old (4.0.25) implementation of find_anchor_token.
|
// NOTE(allen): Old (4.0.25) implementation of find_anchor_token.
|
||||||
Indent_Anchor_Position anchor = {0};
|
Indent_Anchor_Position anchor = {};
|
||||||
|
|
||||||
if (tokens.count != 0){
|
if (tokens.count != 0){
|
||||||
anchor.token = get_first_token_at_line(app, buffer, tokens, line_start);
|
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.
|
// Decide where to start indentation parsing.
|
||||||
Indent_Anchor_Position anchor = find_anchor_token(app, buffer, tokens, first_line, tab_width);
|
Indent_Anchor_Position anchor = find_anchor_token(app, buffer, tokens, first_line, tab_width);
|
||||||
Cpp_Token *token_ptr = anchor.token;
|
Cpp_Token *token_ptr = anchor.token;
|
||||||
Indent_Parse_State indent = {0};
|
Indent_Parse_State indent = {};
|
||||||
indent.current_indent = anchor.indentation;
|
indent.current_indent = anchor.indentation;
|
||||||
|
|
||||||
if (token_ptr == 0){
|
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);
|
int32_t next_line_start_pos = buffer_get_line_start(app, buffer, line_number);
|
||||||
indent.previous_line_indent = indent.current_indent;
|
indent.previous_line_indent = indent.current_indent;
|
||||||
Cpp_Token prev_token = {0};
|
Cpp_Token prev_token = {};
|
||||||
Cpp_Token token = {0};
|
Cpp_Token token = {};
|
||||||
if (token_ptr < tokens.tokens + tokens.count){
|
if (token_ptr < tokens.tokens + tokens.count){
|
||||||
token = *token_ptr;
|
token = *token_ptr;
|
||||||
}
|
}
|
||||||
|
@ -462,7 +462,7 @@ get_indentation_marks(Application_Links *app, Partition *arena, Buffer_Summary *
|
||||||
bool32 statement_complete = false;
|
bool32 statement_complete = false;
|
||||||
|
|
||||||
Cpp_Token *prev_usable_token_ptr = token_ptr - 1;
|
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){
|
if (prev_usable_token_ptr >= tokens.tokens){
|
||||||
prev_usable_token = *prev_usable_token_ptr;
|
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);
|
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
|
// Stage 4: Set the Line Indents
|
||||||
Indent_Options opts = {0};
|
Indent_Options opts = {};
|
||||||
opts.empty_blank_lines = (flags & AutoIndent_ClearLine);
|
opts.empty_blank_lines = (flags & AutoIndent_ClearLine);
|
||||||
opts.use_tabs = (flags & AutoIndent_UseTab);
|
opts.use_tabs = (flags & AutoIndent_UseTab);
|
||||||
opts.tab_width = tab_width;
|
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;
|
uint32_t flags = DEFAULT_INDENT_FLAGS;
|
||||||
User_Input in = get_command_input(app);
|
User_Input in = get_command_input(app);
|
||||||
if (in.type == UserInputKey && in.key.character == '\n'){
|
if (in.key.character == '\n'){
|
||||||
flags |= AutoIndent_ExactAlignBlock;
|
flags |= AutoIndent_ExactAlignBlock;
|
||||||
}
|
}
|
||||||
buffer_auto_indent(app, &global_part, &buffer, view.cursor.pos, view.cursor.pos, DEF_TAB_WIDTH, DEFAULT_INDENT_FLAGS);
|
buffer_auto_indent(app, &global_part, &buffer, view.cursor.pos, view.cursor.pos, DEF_TAB_WIDTH, DEFAULT_INDENT_FLAGS);
|
||||||
|
|
|
@ -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);
|
Buffer_Summary buffer = get_buffer(app, view.buffer_id, access);
|
||||||
int32_t pos = view.cursor.pos;
|
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.pos = character_pos_to_pos(app, &view, &buffer, view.cursor.character_pos);
|
||||||
next_cursor_marker.lean_right = true;
|
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);
|
Buffer_Summary buffer = get_buffer(app, view.buffer_id, access);
|
||||||
int32_t start = view.cursor.pos;
|
int32_t start = view.cursor.pos;
|
||||||
if (0 <= start && start < buffer.size){
|
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);
|
view_compute_cursor(app, &view, seek_character_pos(view.cursor.character_pos + 1), &cursor);
|
||||||
int32_t end = cursor.pos;
|
int32_t end = cursor.pos;
|
||||||
buffer_replace_range(app, &buffer, start, end, 0, 0);
|
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);
|
Buffer_Summary buffer = get_buffer(app, view.buffer_id, access);
|
||||||
int32_t end = view.cursor.pos;
|
int32_t end = view.cursor.pos;
|
||||||
if (0 < end && end <= buffer.size){
|
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);
|
view_compute_cursor(app, &view, seek_character_pos(view.cursor.character_pos - 1), &cursor);
|
||||||
int32_t start = cursor.pos;
|
int32_t start = cursor.pos;
|
||||||
buffer_replace_range(app, &buffer, start, end, 0, 0);
|
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;
|
Buffer_Edit *edits = (Buffer_Edit*)app->memory;
|
||||||
|
|
||||||
char data[1024];
|
char data[1024];
|
||||||
Stream_Chunk chunk = {0};
|
Stream_Chunk chunk = {};
|
||||||
|
|
||||||
int32_t i = 0;
|
int32_t i = 0;
|
||||||
if (init_stream_chunk(&chunk, app, &buffer, i, data, sizeof(data))){
|
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;
|
uint32_t access = AccessProtected;
|
||||||
|
|
||||||
Query_Bar bar = {0};
|
Query_Bar bar = {};
|
||||||
char string_space[256];
|
char string_space[256];
|
||||||
|
|
||||||
bar.prompt = make_lit_string("Goto Line: ");
|
bar.prompt = make_lit_string("Goto Line: ");
|
||||||
|
@ -650,7 +650,7 @@ CUSTOM_COMMAND_SIG(reverse_search);
|
||||||
static void
|
static void
|
||||||
isearch__update_highlight(Application_Links *app, View_Summary *view, Managed_Object highlight,
|
isearch__update_highlight(Application_Links *app, View_Summary *view, Managed_Object highlight,
|
||||||
int32_t start, int32_t end){
|
int32_t start, int32_t end){
|
||||||
Marker markers[4] = {0};
|
Marker markers[4] = {};
|
||||||
markers[0].pos = start;
|
markers[0].pos = start;
|
||||||
markers[1].pos = end;
|
markers[1].pos = end;
|
||||||
managed_object_store_data(app, highlight, 0, 2, markers);
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Query_Bar bar = {0};
|
Query_Bar bar = {};
|
||||||
if (start_query_bar(app, &bar, 0) == 0){
|
if (start_query_bar(app, &bar, 0) == 0){
|
||||||
return;
|
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);
|
isearch__update_highlight(app, &view, highlight, match.start, match.end);
|
||||||
cursor_is_hidden = true;
|
cursor_is_hidden = true;
|
||||||
|
|
||||||
User_Input in = {0};
|
User_Input in = {};
|
||||||
for (;;){
|
for (;;){
|
||||||
// NOTE(allen): Change the bar's prompt to match the current direction.
|
// NOTE(allen): Change the bar's prompt to match the current direction.
|
||||||
if (reverse){
|
if (reverse){
|
||||||
|
@ -721,9 +721,6 @@ isearch(Application_Links *app, bool32 start_reversed, String query_init, bool32
|
||||||
in = get_user_input(app, EventOnAnyKey, EventOnEsc);
|
in = get_user_input(app, EventOnAnyKey, EventOnEsc);
|
||||||
if (in.abort) break;
|
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];
|
uint8_t character[4];
|
||||||
uint32_t length = to_writable_character(in, character);
|
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_COMMAND_SIG(search)
|
||||||
CUSTOM_DOC("Begins an incremental search down through the current buffer for a user specified string.")
|
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);
|
isearch(app, false, query, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
CUSTOM_COMMAND_SIG(reverse_search)
|
CUSTOM_COMMAND_SIG(reverse_search)
|
||||||
CUSTOM_DOC("Begins an incremental search up through the current buffer for a user specified string.")
|
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);
|
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);
|
marker_visual_set_view_key(app, visual, view->view_id);
|
||||||
cursor_is_hidden = true;
|
cursor_is_hidden = true;
|
||||||
|
|
||||||
User_Input in = {0};
|
User_Input in = {};
|
||||||
for (;new_pos < buffer->size;){
|
for (;new_pos < buffer->size;){
|
||||||
Range match = make_range(new_pos, new_pos + r.size);
|
Range match = make_range(new_pos, new_pos + r.size);
|
||||||
isearch__update_highlight(app, view, highlight, match.min, match.max);
|
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.abort || in.key.keycode == key_esc || !key_is_unmodified(&in.key)) break;
|
||||||
|
|
||||||
if (in.key.character == 'y' || in.key.character == 'Y' ||
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Query_Bar replace = {0};
|
Query_Bar replace = {};
|
||||||
char replace_space[1024];
|
char replace_space[1024];
|
||||||
replace.prompt = make_lit_string("Replace: ");
|
replace.prompt = make_lit_string("Replace: ");
|
||||||
replace.string = make_fixed_width_string(replace_space);
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Range range = {0};
|
Range range = {};
|
||||||
char space[256];
|
char space[256];
|
||||||
String replace = read_identifier_at_pos(app, &buffer, view.cursor.pos, space, sizeof(space), &range);
|
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_COMMAND_SIG(save_all_dirty_buffers)
|
||||||
CUSTOM_DOC("Saves all buffers marked dirty (showing the '*' indicator).")
|
CUSTOM_DOC("Saves all buffers marked dirty (showing the '*' indicator).")
|
||||||
{
|
{
|
||||||
String empty = {0};
|
String empty = {};
|
||||||
save_all_dirty_buffers_with_postfix(app, 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);
|
Buffer_Summary buffer = get_buffer(app, view.buffer_id, AccessAll);
|
||||||
|
|
||||||
if (buffer.file_name != 0){
|
if (buffer.file_name != 0){
|
||||||
String file_name = {0};
|
String file_name = {};
|
||||||
file_name = make_string(buffer.file_name, buffer.file_name_len);
|
file_name = make_string(buffer.file_name, buffer.file_name_len);
|
||||||
|
|
||||||
char space[4096];
|
char space[4096];
|
||||||
|
@ -1273,9 +1270,9 @@ CUSTOM_DOC("Swaps the line under the cursor with the line above it, and moves th
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Full_Cursor prev_line_cursor = {0};
|
Full_Cursor prev_line_cursor = {};
|
||||||
Full_Cursor this_line_cursor = {0};
|
Full_Cursor this_line_cursor = {};
|
||||||
Full_Cursor next_line_cursor = {0};
|
Full_Cursor next_line_cursor = {};
|
||||||
|
|
||||||
int32_t this_line = view.cursor.line;
|
int32_t this_line = view.cursor.line;
|
||||||
int32_t prev_line = this_line - 1;
|
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;
|
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 (view_compute_cursor(app, &view, seek_line_char(next_line, 1), &new_cursor)){
|
||||||
if (new_cursor.line == next_line){
|
if (new_cursor.line == next_line){
|
||||||
view_set_cursor(app, &view, seek_pos(new_cursor.pos), true);
|
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;
|
Partition *part = &global_part;
|
||||||
|
|
||||||
Temp_Memory temp = begin_temp_memory(part);
|
Temp_Memory temp = begin_temp_memory(part);
|
||||||
String line_string = {0};
|
String line_string = {};
|
||||||
char *before_line = push_array(part, char, 1);
|
char *before_line = push_array(part, char, 1);
|
||||||
if (read_line(app, part, &buffer, view.cursor.line, &line_string)){
|
if (read_line(app, part, &buffer, view.cursor.line, &line_string)){
|
||||||
*before_line = '\n';
|
*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));
|
append(&file_name, make_string(buffer.file_name, buffer.file_name_len));
|
||||||
|
|
||||||
String extension = file_extension(file_name);
|
String extension = file_extension(file_name);
|
||||||
String new_extensions[2] = {0};
|
String new_extensions[2] = {};
|
||||||
int32_t new_extensions_count = 0;
|
int32_t new_extensions_count = 0;
|
||||||
|
|
||||||
if (match(extension, "cpp") || match(extension, "cc")){
|
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);
|
View_Summary view = get_active_view(app, AccessAll);
|
||||||
Buffer_Summary buffer = get_buffer(app, view.buffer_id, 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)){
|
if (get_cpp_matching_file(app, buffer, &new_buffer)){
|
||||||
get_next_view_looped_primary_panels(app, &view, AccessAll);
|
get_next_view_looped_primary_panels(app, &view, AccessAll);
|
||||||
view_set_buffer(app, &view, new_buffer.buffer_id, 0);
|
view_set_buffer(app, &view, new_buffer.buffer_id, 0);
|
||||||
|
|
|
@ -167,7 +167,7 @@ CUSTOM_DOC("Looks for a build.bat, build.sh, or makefile in the current and pare
|
||||||
|
|
||||||
static View_Summary
|
static View_Summary
|
||||||
get_or_open_build_panel(Application_Links *app){
|
get_or_open_build_panel(Application_Links *app){
|
||||||
View_Summary view = {0};
|
View_Summary view = {};
|
||||||
Buffer_Summary buffer = GET_COMP_BUFFER(app);
|
Buffer_Summary buffer = GET_COMP_BUFFER(app);
|
||||||
if (buffer.exists){
|
if (buffer.exists){
|
||||||
view = get_first_view_with_buffer(app, buffer.buffer_id);
|
view = get_first_view_with_buffer(app, buffer.buffer_id);
|
||||||
|
|
|
@ -1140,7 +1140,7 @@ CUSTOM_COMMAND_SIG(casey_force_codelegal_characters)
|
||||||
Buffer_Edit *edits = (Buffer_Edit*)app->memory;
|
Buffer_Edit *edits = (Buffer_Edit*)app->memory;
|
||||||
|
|
||||||
char data[1024];
|
char data[1024];
|
||||||
Stream_Chunk chunk = {0};
|
Stream_Chunk chunk = {};
|
||||||
|
|
||||||
int32_t i = 0;
|
int32_t i = 0;
|
||||||
int32_t last_utf = 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;
|
static const int32_t token_chunk_size = 512;
|
||||||
Cpp_Token token_chunk[token_chunk_size];
|
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)){
|
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);
|
Stream_Tokens start_position_stream_temp = begin_temp_stream_token(&token_stream);
|
||||||
|
@ -1779,7 +1779,7 @@ struct Casey_Scroll_Velocity
|
||||||
float x, y, t;
|
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;
|
Casey_Scroll_Velocity *casey_scroll_velocity = casey_scroll_velocity_ - 1;
|
||||||
|
|
||||||
SCROLL_RULE_SIG(casey_smooth_scroll_rule){
|
SCROLL_RULE_SIG(casey_smooth_scroll_rule){
|
||||||
|
|
|
@ -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);
|
view_set_cursor(app, &view, seek_pos(pos + len), true);
|
||||||
|
|
||||||
// TODO(allen): Send this to all views.
|
// TODO(allen): Send this to all views.
|
||||||
Theme_Color paste = {0};
|
Theme_Color paste = {};
|
||||||
paste.tag = Stag_Paste;
|
paste.tag = Stag_Paste;
|
||||||
get_theme_colors(app, &paste, 1);
|
get_theme_colors(app, &paste, 1);
|
||||||
view_post_fade(app, &view, 0.667f, pos, pos + len, paste.color);
|
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);
|
view_set_cursor(app, &view, seek_pos(pos + len), true);
|
||||||
|
|
||||||
// TODO(allen): Send this to all views.
|
// TODO(allen): Send this to all views.
|
||||||
Theme_Color paste = {0};
|
Theme_Color paste = {};
|
||||||
paste.tag = Stag_Paste;
|
paste.tag = Stag_Paste;
|
||||||
get_theme_colors(app, &paste, 1);
|
get_theme_colors(app, &paste, 1);
|
||||||
view_post_fade(app, &view, 0.667f, pos, pos + len, paste.color);
|
view_post_fade(app, &view, 0.667f, pos, pos + len, paste.color);
|
||||||
|
|
|
@ -193,7 +193,7 @@ snippet_lister__parameterized(Application_Links *app, Snippet_Array snippet_arra
|
||||||
CUSTOM_COMMAND_SIG(snippet_lister)
|
CUSTOM_COMMAND_SIG(snippet_lister)
|
||||||
CUSTOM_DOC("Opens a snippet lister for inserting whole pre-written snippets of text.")
|
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.snippets = default_snippets;
|
||||||
snippet_array.count = ArrayCount(default_snippets);
|
snippet_array.count = ArrayCount(default_snippets);
|
||||||
snippet_lister__parameterized(app, snippet_array);
|
snippet_lister__parameterized(app, snippet_array);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
static CString_Array
|
static CString_Array
|
||||||
get_code_extensions(Extension_List *list){
|
get_code_extensions(Extension_List *list){
|
||||||
CString_Array array = {0};
|
CString_Array array = {};
|
||||||
array.strings = default_extensions;
|
array.strings = default_extensions;
|
||||||
array.count = ArrayCount(default_extensions);
|
array.count = ArrayCount(default_extensions);
|
||||||
if (list->count != 0){
|
if (list->count != 0){
|
||||||
|
@ -50,7 +50,7 @@ parse_extension_line_to_extension_list(String str, Extension_List *list){
|
||||||
|
|
||||||
static Error_Location
|
static Error_Location
|
||||||
get_error_location(char *base, char *pos){
|
get_error_location(char *base, char *pos){
|
||||||
Error_Location location = {0};
|
Error_Location location = {};
|
||||||
location.line_number = 1;
|
location.line_number = 1;
|
||||||
location.column_number = 1;
|
location.column_number = 1;
|
||||||
for (char *ptr = base;
|
for (char *ptr = base;
|
||||||
|
@ -69,7 +69,7 @@ get_error_location(char *base, char *pos){
|
||||||
|
|
||||||
static String
|
static String
|
||||||
config_stringize_errors(Partition *arena, Config *parsed){
|
config_stringize_errors(Partition *arena, Config *parsed){
|
||||||
String result = {0};
|
String result = {};
|
||||||
if (parsed->errors.first != 0){
|
if (parsed->errors.first != 0){
|
||||||
result.str = push_array(arena, char, 0);
|
result.str = push_array(arena, char, 0);
|
||||||
result.memory_size = partition_remaining(arena);
|
result.memory_size = partition_remaining(arena);
|
||||||
|
@ -104,7 +104,7 @@ config_parser__advance_to_next(Config_Parser *ctx){
|
||||||
|
|
||||||
static Config_Parser
|
static Config_Parser
|
||||||
make_config_parser(Partition *arena, String file_name, String data, Cpp_Token_Array array){
|
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.start = array.tokens;
|
||||||
ctx.token = ctx.start - 1;
|
ctx.token = ctx.start - 1;
|
||||||
ctx.end = ctx.start + array.count;
|
ctx.end = ctx.start + array.count;
|
||||||
|
@ -129,7 +129,7 @@ config_parser__recognize_token(Config_Parser *ctx, Cpp_Token_Type type){
|
||||||
|
|
||||||
static String
|
static String
|
||||||
config_parser__get_lexeme(Config_Parser *ctx){
|
config_parser__get_lexeme(Config_Parser *ctx){
|
||||||
String lexeme = {0};
|
String lexeme = {};
|
||||||
if (ctx->start <= ctx->token && ctx->token < ctx->end){
|
if (ctx->start <= ctx->token && ctx->token < ctx->end){
|
||||||
lexeme = make_string(ctx->data.str + ctx->token->start, ctx->token->size);
|
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
|
static Config_Integer
|
||||||
config_parser__get_int(Config_Parser *ctx){
|
config_parser__get_int(Config_Parser *ctx){
|
||||||
Config_Integer config_integer = {0};
|
Config_Integer config_integer = {};
|
||||||
String str = config_parser__get_lexeme(ctx);
|
String str = config_parser__get_lexeme(ctx);
|
||||||
if (match(substr(str, 0, 2), "0x")){
|
if (match(substr(str, 0, 2), "0x")){
|
||||||
config_integer.is_signed = false;
|
config_integer.is_signed = false;
|
||||||
|
@ -512,7 +512,7 @@ config_parser__compound(Config_Parser *ctx){
|
||||||
|
|
||||||
static Config_Compound_Element*
|
static Config_Compound_Element*
|
||||||
config_parser__element(Config_Parser *ctx){
|
config_parser__element(Config_Parser *ctx){
|
||||||
Config_Layout layout = {0};
|
Config_Layout layout = {};
|
||||||
layout.pos = config_parser__get_pos(ctx);
|
layout.pos = config_parser__get_pos(ctx);
|
||||||
if (config_parser__match_token(ctx, CPP_TOKEN_DOT)){
|
if (config_parser__match_token(ctx, CPP_TOKEN_DOT)){
|
||||||
if (config_parser__recognize_token(ctx, CPP_TOKEN_IDENTIFIER)){
|
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
|
static Config_Get_Result
|
||||||
config_evaluate_rvalue(Config *config, Config_Assignment *assignment, Config_RValue *r){
|
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 != 0 && !assignment->visited){
|
||||||
if (r->type == ConfigRValueType_LValue){
|
if (r->type == ConfigRValueType_LValue){
|
||||||
assignment->visited = true;
|
assignment->visited = true;
|
||||||
|
@ -613,7 +613,7 @@ config_evaluate_rvalue(Config *config, Config_Assignment *assignment, Config_RVa
|
||||||
|
|
||||||
static Config_Get_Result
|
static Config_Get_Result
|
||||||
config_var(Config *config, String var_name, int32_t subscript){
|
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);
|
Config_Assignment *assignment = config_lookup_assignment(config, var_name, subscript);
|
||||||
if (assignment != 0){
|
if (assignment != 0){
|
||||||
result = config_evaluate_rvalue(config, assignment, assignment->r);
|
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
|
static Config_Get_Result
|
||||||
config_compound_member(Config *config, Config_Compound *compound, String var_name, int32_t index){
|
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;
|
int32_t implicit_index = 0;
|
||||||
bool32 implicit_index_is_valid = true;
|
bool32 implicit_index_is_valid = true;
|
||||||
for (Config_Compound_Element *element = compound->first;
|
for (Config_Compound_Element *element = compound->first;
|
||||||
|
@ -655,7 +655,7 @@ config_compound_member(Config *config, Config_Compound *compound, String var_nam
|
||||||
}break;
|
}break;
|
||||||
}
|
}
|
||||||
if (element_matches_query){
|
if (element_matches_query){
|
||||||
Config_Assignment dummy_assignment = {0};
|
Config_Assignment dummy_assignment = {};
|
||||||
dummy_assignment.pos = element->l.pos;
|
dummy_assignment.pos = element->l.pos;
|
||||||
result = config_evaluate_rvalue(config, &dummy_assignment, element->r);
|
result = config_evaluate_rvalue(config, &dummy_assignment, element->r);
|
||||||
break;
|
break;
|
||||||
|
@ -1207,7 +1207,7 @@ typed_no_type_array_reference_list(Partition *arena, Config *config, Config_Comp
|
||||||
|
|
||||||
static Config_Iteration_Step_Result
|
static Config_Iteration_Step_Result
|
||||||
typed_array_iteration_step(Config *parsed, Config_Compound *compound, Config_RValue_Type type, int32_t index){
|
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;
|
result.step = Iteration_Quit;
|
||||||
Config_Get_Result get_result = config_compound_member(parsed, compound, make_lit_string("~"), index);
|
Config_Get_Result get_result = config_compound_member(parsed, compound, make_lit_string("~"), index);
|
||||||
if (get_result.success){
|
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
|
static Config_Get_Result_List
|
||||||
typed_array_reference_list(Partition *arena, Config *parsed, Config_Compound *compound, Config_RValue_Type type){
|
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){
|
for (int32_t i = 0;; ++i){
|
||||||
Config_Iteration_Step_Result result = typed_array_iteration_step(parsed, compound, type, i);
|
Config_Iteration_Step_Result result = typed_array_iteration_step(parsed, compound, type, i);
|
||||||
if (result.step == Iteration_Skip){
|
if (result.step == Iteration_Skip){
|
||||||
|
@ -1295,12 +1295,12 @@ text_data_to_token_array(Partition *arena, String data){
|
||||||
bool32 success = false;
|
bool32 success = false;
|
||||||
int32_t max_count = (1 << 20)/sizeof(Cpp_Token);
|
int32_t max_count = (1 << 20)/sizeof(Cpp_Token);
|
||||||
Temp_Memory restore_point = begin_temp_memory(arena);
|
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);
|
array.tokens = push_array(arena, Cpp_Token, max_count);
|
||||||
if (array.tokens != 0){
|
if (array.tokens != 0){
|
||||||
array.max_count = max_count;
|
array.max_count = max_count;
|
||||||
Cpp_Keyword_Table kw_table = {0};
|
Cpp_Keyword_Table kw_table = {};
|
||||||
Cpp_Keyword_Table pp_table = {0};
|
Cpp_Keyword_Table pp_table = {};
|
||||||
if (lexer_keywords_default_init(arena, &kw_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_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);
|
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);
|
change_theme(app, config->default_theme_name.str, config->default_theme_name.size);
|
||||||
highlight_line_at_cursor = config->highlight_line_at_cursor;
|
highlight_line_at_cursor = config->highlight_line_at_cursor;
|
||||||
|
|
||||||
Face_Description description = {0};
|
Face_Description description = {};
|
||||||
int32_t len = config->default_font_name.size;
|
int32_t len = config->default_font_name.size;
|
||||||
char *name_ptr = config->default_font_name.str;
|
char *name_ptr = config->default_font_name.str;
|
||||||
if (len > sizeof(description.font.name) - 1){
|
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
|
static void
|
||||||
load_theme_file_into_live_set(Application_Links *app, Partition *scratch, char *file_name){
|
load_theme_file_into_live_set(Application_Links *app, Partition *scratch, char *file_name){
|
||||||
Temp_Memory temp = begin_temp_memory(scratch);
|
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);
|
Config *config = theme_parse__file_name(app, scratch, file_name, &theme);
|
||||||
String error_text = config_stringize_errors(scratch, config);
|
String error_text = config_stringize_errors(scratch, config);
|
||||||
print_message(app, error_text.str, error_text.size);
|
print_message(app, error_text.str, error_text.size);
|
||||||
|
|
|
@ -27,7 +27,7 @@ lock_jump_buffer(Buffer_Summary buffer){
|
||||||
|
|
||||||
static View_Summary
|
static View_Summary
|
||||||
get_view_for_locked_jump_buffer(Application_Links *app){
|
get_view_for_locked_jump_buffer(Application_Links *app){
|
||||||
View_Summary view = {0};
|
View_Summary view = {};
|
||||||
if (locked_buffer.size > 0){
|
if (locked_buffer.size > 0){
|
||||||
Buffer_Summary buffer = get_buffer_by_name(app, locked_buffer.str, locked_buffer.size, AccessAll);
|
Buffer_Summary buffer = get_buffer_by_name(app, locked_buffer.str, locked_buffer.size, AccessAll);
|
||||||
if (buffer.exists){
|
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_COMMAND_SIG(remap_interactive)
|
||||||
CUSTOM_DOC("Switch to a named key binding map.")
|
CUSTOM_DOC("Switch to a named key binding map.")
|
||||||
{
|
{
|
||||||
Query_Bar bar = {0};
|
Query_Bar bar = {};
|
||||||
char space[1024];
|
char space[1024];
|
||||||
bar.prompt = make_lit_string("Map Name: ");
|
bar.prompt = make_lit_string("Map Name: ");
|
||||||
bar.string = make_fixed_width_string(space);
|
bar.string = make_fixed_width_string(space);
|
||||||
|
|
|
@ -59,12 +59,12 @@ enum{
|
||||||
};
|
};
|
||||||
static int32_t fcoder_mode = FCoderMode_Original;
|
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
|
// BOTTOM
|
||||||
|
|
||||||
|
|
|
@ -107,10 +107,10 @@ sort_highlight_record(Highlight_Record *records, int32_t first, int32_t one_past
|
||||||
static Range_Array
|
static Range_Array
|
||||||
get_enclosure_ranges(Application_Links *app, Partition *part,
|
get_enclosure_ranges(Application_Links *app, Partition *part,
|
||||||
Buffer_Summary *buffer, int32_t pos, uint32_t flags){
|
Buffer_Summary *buffer, int32_t pos, uint32_t flags){
|
||||||
Range_Array array = {0};
|
Range_Array array = {};
|
||||||
array.ranges = push_array(part, Range, 0);
|
array.ranges = push_array(part, Range, 0);
|
||||||
for (;;){
|
for (;;){
|
||||||
Range range = {0};
|
Range range = {};
|
||||||
if (find_scope_range(app, buffer, pos, &range, flags)){
|
if (find_scope_range(app, buffer, pos, &range, flags)){
|
||||||
Range *r = push_array(part, Range, 1);
|
Range *r = push_array(part, Range, 1);
|
||||||
*r = range;
|
*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 o = alloc_buffer_markers_on_buffer(app, buffer->buffer_id, marker_count, &render_scope);
|
||||||
managed_object_store_data(app, o, 0, marker_count, markers);
|
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.take_count_per_step = 2;
|
||||||
take_rule.step_stride_in_marker_count = 8;
|
take_rule.step_stride_in_marker_count = 8;
|
||||||
|
|
||||||
|
@ -263,7 +263,7 @@ RENDER_CALLER_SIG(default_render_caller){
|
||||||
|
|
||||||
// NOTE(allen): Cursor and mark
|
// NOTE(allen): Cursor and mark
|
||||||
Managed_Object cursor_and_mark = alloc_buffer_markers_on_buffer(app, buffer.buffer_id, 2, &render_scope);
|
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[0].pos = view.cursor.pos;
|
||||||
cm_markers[1].pos = view.mark.pos;
|
cm_markers[1].pos = view.mark.pos;
|
||||||
managed_object_store_data(app, cursor_and_mark, 0, 2, cm_markers);
|
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){
|
switch (fcoder_mode){
|
||||||
case FCoderMode_Original:
|
case FCoderMode_Original:
|
||||||
{
|
{
|
||||||
Theme_Color colors[2] = {0};
|
Theme_Color colors[2] = {};
|
||||||
colors[0].tag = Stag_Cursor;
|
colors[0].tag = Stag_Cursor;
|
||||||
colors[1].tag = Stag_Mark;
|
colors[1].tag = Stag_Mark;
|
||||||
get_theme_colors(app, colors, 2);
|
get_theme_colors(app, colors, 2);
|
||||||
uint32_t cursor_color = colors[0].color;
|
uint32_t cursor_color = colors[0].color;
|
||||||
uint32_t mark_color = colors[1].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.first_index = 0;
|
||||||
take_rule.take_count_per_step = 1;
|
take_rule.take_count_per_step = 1;
|
||||||
take_rule.step_stride_in_marker_count = 1;
|
take_rule.step_stride_in_marker_count = 1;
|
||||||
|
@ -302,14 +302,14 @@ RENDER_CALLER_SIG(default_render_caller){
|
||||||
|
|
||||||
case FCoderMode_NotepadLike:
|
case FCoderMode_NotepadLike:
|
||||||
{
|
{
|
||||||
Theme_Color colors[2] = {0};
|
Theme_Color colors[2] = {};
|
||||||
colors[0].tag = Stag_Cursor;
|
colors[0].tag = Stag_Cursor;
|
||||||
colors[1].tag = Stag_Highlight;
|
colors[1].tag = Stag_Highlight;
|
||||||
get_theme_colors(app, colors, 2);
|
get_theme_colors(app, colors, 2);
|
||||||
uint32_t cursor_color = colors[0].color;
|
uint32_t cursor_color = colors[0].color;
|
||||||
uint32_t highlight_color = colors[1].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.first_index = 0;
|
||||||
take_rule.take_count_per_step = 1;
|
take_rule.take_count_per_step = 1;
|
||||||
take_rule.step_stride_in_marker_count = 1;
|
take_rule.step_stride_in_marker_count = 1;
|
||||||
|
@ -333,14 +333,14 @@ RENDER_CALLER_SIG(default_render_caller){
|
||||||
|
|
||||||
// NOTE(allen): Line highlight setup
|
// NOTE(allen): Line highlight setup
|
||||||
if (highlight_line_at_cursor && is_active_view){
|
if (highlight_line_at_cursor && is_active_view){
|
||||||
Theme_Color color = {0};
|
Theme_Color color = {};
|
||||||
color.tag = Stag_Highlight_Cursor_Line;
|
color.tag = Stag_Highlight_Cursor_Line;
|
||||||
get_theme_colors(app, &color, 1);
|
get_theme_colors(app, &color, 1);
|
||||||
uint32_t line_color = color.color;
|
uint32_t line_color = color.color;
|
||||||
Marker_Visual visual = create_marker_visual(app, cursor_and_mark);
|
Marker_Visual visual = create_marker_visual(app, cursor_and_mark);
|
||||||
marker_visual_set_effect(app, visual, VisualType_LineHighlights,
|
marker_visual_set_effect(app, visual, VisualType_LineHighlights,
|
||||||
line_color, 0, 0);
|
line_color, 0, 0);
|
||||||
Marker_Visual_Take_Rule take_rule = {0};
|
Marker_Visual_Take_Rule take_rule = {};
|
||||||
take_rule.first_index = 0;
|
take_rule.first_index = 0;
|
||||||
take_rule.take_count_per_step = 1;
|
take_rule.take_count_per_step = 1;
|
||||||
take_rule.step_stride_in_marker_count = 1;
|
take_rule.step_stride_in_marker_count = 1;
|
||||||
|
@ -352,7 +352,7 @@ RENDER_CALLER_SIG(default_render_caller){
|
||||||
// NOTE(allen): Token highlight setup
|
// NOTE(allen): Token highlight setup
|
||||||
bool32 do_token_highlight = false;
|
bool32 do_token_highlight = false;
|
||||||
if (do_token_highlight){
|
if (do_token_highlight){
|
||||||
Theme_Color color = {0};
|
Theme_Color color = {};
|
||||||
color.tag = Stag_Cursor;
|
color.tag = Stag_Cursor;
|
||||||
get_theme_colors(app, &color, 1);
|
get_theme_colors(app, &color, 1);
|
||||||
uint32_t token_color = (0x50 << 24) | (color.color&0xFFFFFF);
|
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);
|
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);
|
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[0].pos = pos1;
|
||||||
range_markers[1].pos = pos2;
|
range_markers[1].pos = pos2;
|
||||||
managed_object_store_data(app, token_highlight, 0, 2, range_markers);
|
managed_object_store_data(app, token_highlight, 0, 2, range_markers);
|
||||||
|
@ -811,7 +811,7 @@ struct Scroll_Velocity{
|
||||||
float x, y;
|
float x, y;
|
||||||
};
|
};
|
||||||
|
|
||||||
Scroll_Velocity scroll_velocity_[16] = {0};
|
Scroll_Velocity scroll_velocity_[16] = {};
|
||||||
Scroll_Velocity *scroll_velocity = scroll_velocity_ - 1;
|
Scroll_Velocity *scroll_velocity = scroll_velocity_ - 1;
|
||||||
|
|
||||||
static int32_t
|
static int32_t
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
static float
|
static float
|
||||||
get_line_y(Application_Links *app, View_Summary *view, int32_t line){
|
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);
|
view_compute_cursor(app, view, seek_line_char(line, 1), &cursor);
|
||||||
float y = cursor.wrapped_y;
|
float y = cursor.wrapped_y;
|
||||||
if (view->unwrapped_lines){
|
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;
|
int32_t end = 0;
|
||||||
|
|
||||||
bool32 success = 1;
|
bool32 success = 1;
|
||||||
Full_Cursor cursor = {0};
|
Full_Cursor cursor = {};
|
||||||
|
|
||||||
float y = get_line_y(app, &view, line);
|
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
|
static void
|
||||||
pad_buffer_line(Application_Links *app, Partition *part, Buffer_Summary *buffer, int32_t line, char padchar, int32_t target){
|
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 start = {};
|
||||||
Partial_Cursor end = {0};
|
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, 1), &start)){
|
||||||
if (buffer_compute_cursor(app, buffer, seek_line_char(line, 65536), &end)){
|
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;
|
Buffer_Edit *edits = edit;
|
||||||
|
|
||||||
for (int32_t i = rect.line0; i <= rect.line1; ++i){
|
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)){
|
if (buffer_compute_cursor(app, &buffer, seek_line_char(i, pos+1), &cursor)){
|
||||||
edit->str_start = 0;
|
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;
|
Buffer_Edit *edits = edit;
|
||||||
|
|
||||||
for (int32_t i = rect.line0; i <= rect.line1; ++i){
|
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)){
|
if (buffer_compute_cursor(app, &buffer, seek_line_char(i, pos+1), &cursor)){
|
||||||
edit->str_start = 0;
|
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){
|
multi_paste_interactive_up_down(Application_Links *app, int32_t paste_count, int32_t clip_count){
|
||||||
View_Summary view = get_active_view(app, AccessOpen);
|
View_Summary view = get_active_view(app, AccessOpen);
|
||||||
|
|
||||||
Range range = {0};
|
Range range = {};
|
||||||
range.min = range.max = view.cursor.pos;
|
range.min = range.max = view.cursor.pos;
|
||||||
|
|
||||||
bool32 old_to_new = true;
|
bool32 old_to_new = true;
|
||||||
|
|
||||||
range = multi_paste_range(app, &view, range, paste_count, old_to_new);
|
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.");
|
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;
|
if (start_query_bar(app, &bar, 0) == 0) return;
|
||||||
|
|
||||||
User_Input in = {0};
|
User_Input in = {};
|
||||||
for (;;){
|
for (;;){
|
||||||
in = get_user_input(app, EventOnAnyKey, EventOnEsc);
|
in = get_user_input(app, EventOnAnyKey, EventOnEsc);
|
||||||
if (in.abort) break;
|
if (in.abort) break;
|
||||||
|
@ -360,7 +360,7 @@ CUSTOM_COMMAND_SIG(multi_paste_interactive_quick){
|
||||||
int32_t clip_count = clipboard_count(app, 0);
|
int32_t clip_count = clipboard_count(app, 0);
|
||||||
if (clip_count > 0){
|
if (clip_count > 0){
|
||||||
char string_space[256];
|
char string_space[256];
|
||||||
Query_Bar bar = {0};
|
Query_Bar bar = {};
|
||||||
bar.prompt = make_lit_string("How Many Slots To Paste: ");
|
bar.prompt = make_lit_string("How Many Slots To Paste: ");
|
||||||
bar.string = make_fixed_width_string(string_space);
|
bar.string = make_fixed_width_string(string_space);
|
||||||
query_user_number(app, &bar);
|
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){
|
if (!result.in_whitespace){
|
||||||
static const int32_t stream_space_size = 512;
|
static const int32_t stream_space_size = 512;
|
||||||
Cpp_Token stream_space[stream_space_size];
|
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)){
|
if (init_stream_tokens(&stream, app, &buffer, result.token_index, stream_space, stream_space_size)){
|
||||||
int32_t token_index = result.token_index;
|
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 (buffer_get_token_index(app, &buffer, view.cursor.pos, &result)){
|
||||||
if (!result.in_whitespace){
|
if (!result.in_whitespace){
|
||||||
Cpp_Token stream_space[32];
|
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)){
|
if (init_stream_tokens(&stream, app, &buffer, result.token_index, stream_space, 32)){
|
||||||
int32_t token_index = result.token_index;
|
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;
|
for (bool32 got_all_occurrences = false;
|
||||||
!got_all_occurrences;){
|
!got_all_occurrences;){
|
||||||
// Initialize a generic search all buffers
|
// Initialize a generic search all buffers
|
||||||
Search_Set set = {0};
|
Search_Set set = {};
|
||||||
Search_Iter iter = {0};
|
Search_Iter iter = {};
|
||||||
initialize_generic_search_all_buffers(app, heap, &target_string, 1, SearchFlag_MatchSubstring, 0, 0, &set, &iter);
|
initialize_generic_search_all_buffers(app, heap, &target_string, 1, SearchFlag_MatchSubstring, 0, 0, &set, &iter);
|
||||||
|
|
||||||
// Visit all locations and create replacement list
|
// Visit all locations and create replacement list
|
||||||
|
|
|
@ -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):
|
// TODO(allen): // TODO(allen): // TODO(allen): // TODO(allen): // TODO(allen):
|
||||||
// Get this working with the new search by pattern structure!!!
|
// 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);
|
HANDLE search = FindFirstFile(pattern, &find_data);
|
||||||
if (search == INVALID_HANDLE_VALUE){
|
if (search == INVALID_HANDLE_VALUE){
|
||||||
fprintf(stdout, "fatal error: could not begin a file search\n");
|
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);
|
}while(more_files);
|
||||||
FindClose(search);
|
FindClose(search);
|
||||||
|
|
||||||
Cross_Platform_File_List list = {0};
|
Cross_Platform_File_List list = {};
|
||||||
Temp_Memory part_reset = begin_temp_memory(part);
|
Temp_Memory part_reset = begin_temp_memory(part);
|
||||||
|
|
||||||
int32_t rounded_char_size = (character_count*sizeof(Filename_Character) + 7)&(~7);
|
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){
|
match_pattern(Filename_Character *name, Filename_Character *pattern){
|
||||||
bool32 match = false;
|
bool32 match = false;
|
||||||
if (sizeof(*name) == 1){
|
if (sizeof(*name) == 1){
|
||||||
Absolutes absolutes = {0};
|
Absolutes absolutes = {};
|
||||||
String pattern_str = make_string_slowly(pattern);
|
String pattern_str = make_string_slowly(pattern);
|
||||||
get_absolutes(pattern_str, &absolutes, false, false);
|
get_absolutes(pattern_str, &absolutes, false, false);
|
||||||
match = wildcard_match_c(&absolutes, name, 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);
|
Temp_Memory part_reset = begin_temp_memory(part);
|
||||||
|
|
||||||
int32_t rounded_char_size = (character_count*sizeof(Filename_Character) + 7)&(~7);
|
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
|
static String
|
||||||
file_dump(Partition *part, char *name){
|
file_dump(Partition *part, char *name){
|
||||||
String text = {0};
|
String text = {};
|
||||||
|
|
||||||
FILE *file = fopen(name, "rb");
|
FILE *file = fopen(name, "rb");
|
||||||
if (file != 0){
|
if (file != 0){
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
static Face_Description
|
static Face_Description
|
||||||
get_buffer_face_description(Application_Links *app, Buffer_Summary *buffer){
|
get_buffer_face_description(Application_Links *app, Buffer_Summary *buffer){
|
||||||
Face_ID current_id = get_face_id(app, buffer);
|
Face_ID current_id = get_face_id(app, buffer);
|
||||||
Face_Description description = {0};
|
Face_Description description = {};
|
||||||
if (current_id != 0){
|
if (current_id != 0){
|
||||||
description = get_face_description(app, current_id);
|
description = get_face_description(app, current_id);
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,11 +15,11 @@
|
||||||
|
|
||||||
static Get_Positions_Results
|
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_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;
|
static const int32_t token_chunk_size = 512;
|
||||||
Cpp_Token token_chunk[token_chunk_size];
|
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)){
|
if (init_stream_tokens(&token_stream, app, buffer, token_index, token_chunk, token_chunk_size)){
|
||||||
int32_t nest_level = 0;
|
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;
|
static const int32_t sig_chunk_size = 64;
|
||||||
Cpp_Token sig_chunk[sig_chunk_size];
|
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)){
|
if (init_stream_tokens(&sig_stream, app, buffer, local_index, sig_chunk, sig_chunk_size)){
|
||||||
bool32 still_looping = false;
|
bool32 still_looping = false;
|
||||||
do{
|
do{
|
||||||
|
|
|
@ -237,222 +237,222 @@ int32_t source_name_len;
|
||||||
int32_t line_number;
|
int32_t line_number;
|
||||||
};
|
};
|
||||||
static Command_Metadata fcoder_metacmd_table[216] = {
|
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(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, "c:\\4ed\\code\\4coder_auto_indent.cpp", 34, 722 },
|
{ 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, "c:\\4ed\\code\\4coder_auto_indent.cpp", 34, 733 },
|
{ 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, "c:\\4ed\\code\\4coder_auto_indent.cpp", 34, 712 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 69 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1258 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 476 },
|
{ 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, "c:\\4ed\\code\\4coder_build_commands.cpp", 37, 187 },
|
{ 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, "c:\\4ed\\code\\4coder_build_commands.cpp", 37, 155 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 118 },
|
{ 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, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 144 },
|
{ 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, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 154 },
|
{ 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, "c:\\4ed\\code\\4coder_build_commands.cpp", 37, 209 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 411 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 185 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 172 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 198 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 213 },
|
{ 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, "c:\\4ed\\code\\4coder_project_commands.cpp", 39, 1060 },
|
{ 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, "c:\\4ed\\code\\4coder_build_commands.cpp", 37, 203 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 484 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 938 },
|
{ 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, "c:\\4ed\\code\\4coder_clipboard.cpp", 32, 26 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 96 },
|
{ 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, "c:\\4ed\\code\\4coder_clipboard.cpp", 32, 35 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 574 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 551 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 51 },
|
{ 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, "c:\\4ed\\code\\4coder_scope_commands.cpp", 37, 526 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1121 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1371 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 106 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1264 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1349 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 604 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 612 },
|
{ 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, "c:\\4ed\\code\\4coder_system_command.cpp", 37, 23 },
|
{ 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, "c:\\4ed\\code\\4coder_system_command.cpp", 37, 7 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 620 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1177 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1185 },
|
{ 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, "c:\\4ed\\code\\4coder_jump_direct.cpp", 34, 84 },
|
{ 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, "c:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 550 },
|
{ 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, "c:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 532 },
|
{ 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, "c:\\4ed\\code\\4coder_jump_direct.cpp", 34, 8 },
|
{ 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, "c:\\4ed\\code\\4coder_jump_direct.cpp", 34, 29 },
|
{ 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, "c:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 376 },
|
{ 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, "c:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 348 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 628 },
|
{ 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, "c:\\4ed\\code\\4coder_jump_direct.cpp", 34, 48 },
|
{ 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, "c:\\4ed\\code\\4coder_jump_direct.cpp", 34, 66 },
|
{ 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, "c:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 501 },
|
{ 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, "c:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 471 },
|
{ 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, "c:\\4ed\\code\\4coder_jump_direct.cpp", 34, 57 },
|
{ 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, "c:\\4ed\\code\\4coder_jump_direct.cpp", 34, 75 },
|
{ 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, "c:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 517 },
|
{ 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, "c:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 487 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 514 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 500 },
|
{ 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, "c:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 81 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 562 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 540 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 751 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 856 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 884 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 822 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 732 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1541 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 133 },
|
{ 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, "c:\\4ed\\code\\4coder_function_list.cpp", 36, 358 },
|
{ 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, "c:\\4ed\\code\\4coder_function_list.cpp", 36, 364 },
|
{ 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, "c:\\4ed\\code\\4coder_function_list.cpp", 36, 335 },
|
{ 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, "c:\\4ed\\code\\4coder_function_list.cpp", 36, 345 },
|
{ 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, "c:\\4ed\\code\\4coder_search.cpp", 29, 769 },
|
{ 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, "c:\\4ed\\code\\4coder_search.cpp", 29, 783 },
|
{ 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, "c:\\4ed\\code\\4coder_search.cpp", 29, 797 },
|
{ 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, "c:\\4ed\\code\\4coder_search.cpp", 29, 804 },
|
{ 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, "c:\\4ed\\code\\4coder_search.cpp", 29, 811 },
|
{ 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, "c:\\4ed\\code\\4coder_search.cpp", 29, 818 },
|
{ 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, "c:\\4ed\\code\\4coder_search.cpp", 29, 825 },
|
{ 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, "c:\\4ed\\code\\4coder_search.cpp", 29, 836 },
|
{ 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, "c:\\4ed\\code\\4coder_search.cpp", 29, 776 },
|
{ 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, "c:\\4ed\\code\\4coder_search.cpp", 29, 790 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 15 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 41 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 146 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 218 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 86 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 98 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 61 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 177 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 51 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 161 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 8 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 115 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 71 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 31 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 126 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 193 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 253 },
|
{ 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, "c:\\4ed\\code\\4coder_project_commands.cpp", 39, 1083 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1229 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 226 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 290 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 302 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 308 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 339 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1326 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1262 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 349 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 284 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 296 },
|
{ 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, "c:\\4ed\\code\\4coder_jump_direct.cpp", 34, 101 },
|
{ 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, "c:\\4ed\\code\\4coder_jump_direct.cpp", 34, 116 },
|
{ 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, "c:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 588 },
|
{ 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, "c:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 573 },
|
{ 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, "c:\\4ed\\code\\4coder_project_commands.cpp", 39, 1067 },
|
{ 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, "c:\\4ed\\code\\4coder_project_commands.cpp", 39, 1074 },
|
{ 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, "c:\\4ed\\code\\4coder_lists.cpp", 28, 900 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1448 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1599 },
|
{ 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, "c:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 57 },
|
{ 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, "c:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 73 },
|
{ 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, "c:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 65 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1484 },
|
{ 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, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 173 },
|
{ 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, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 164 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 328 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 319 },
|
{ 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, "c:\\4ed\\code\\4coder_clipboard.cpp", 32, 46 },
|
{ 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, "c:\\4ed\\code\\4coder_clipboard.cpp", 32, 134 },
|
{ 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, "c:\\4ed\\code\\4coder_clipboard.cpp", 32, 85 },
|
{ 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, "c:\\4ed\\code\\4coder_clipboard.cpp", 32, 141 },
|
{ 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, "c:\\4ed\\code\\4coder_scope_commands.cpp", 37, 520 },
|
{ 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, "c:\\4ed\\code\\4coder_project_commands.cpp", 39, 1529 },
|
{ 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, "c:\\4ed\\code\\4coder_project_commands.cpp", 39, 1090 },
|
{ 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, "c:\\4ed\\code\\4coder_project_commands.cpp", 39, 1115 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1005 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1029 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1047 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1556 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1576 },
|
{ 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, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 290 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1187 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1562 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 886 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 857 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 875 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1568 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1091 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1147 },
|
{ 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, "c:\\4ed\\code\\4coder_scope_commands.cpp", 37, 777 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 850 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 864 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1238 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1250 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1244 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1232 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1131 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1111 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1143 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1121 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1214 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1208 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1226 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1220 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1101 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1166 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1202 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1196 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1091 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1155 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 359 },
|
{ 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, "c:\\4ed\\code\\4coder_scope_commands.cpp", 37, 401 },
|
{ 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, "c:\\4ed\\code\\4coder_scope_commands.cpp", 37, 421 },
|
{ 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, "c:\\4ed\\code\\4coder_scope_commands.cpp", 37, 385 },
|
{ 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, "c:\\4ed\\code\\4coder_remapping_commands.cpp", 41, 47 },
|
{ 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, "c:\\4ed\\code\\4coder_remapping_commands.cpp", 41, 61 },
|
{ 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, "c:\\4ed\\code\\4coder_remapping_commands.cpp", 41, 75 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 88 },
|
{ 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, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 258 },
|
{ 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, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 252 },
|
{ 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, "c:\\4ed\\code\\4coder_project_commands.cpp", 39, 1500 },
|
{ 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, "c:\\4ed\\code\\4coder_project_commands.cpp", 39, 1512 },
|
{ 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, "c:\\4ed\\code\\4coder_project_commands.cpp", 39, 1506 },
|
{ 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, "c:\\4ed\\code\\4coder_project_commands.cpp", 39, 1493 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 507 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 493 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1270 },
|
{ 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, "c:\\4ed\\code\\4coder_seek.cpp", 27, 1276 },
|
{ 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, "c:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 193 },
|
{ 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, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 234 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1508 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 391 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 371 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 521 },
|
{ 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, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 282 },
|
{ 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, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 270 },
|
{ 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, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 264 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 530 },
|
{ 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, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 246 },
|
{ 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, "c:\\4ed\\code\\4coder_default_framework.cpp", 40, 276 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 597 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 586 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1550 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 1498 },
|
{ 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, "c:\\4ed\\code\\4coder_jump_lister.cpp", 34, 108 },
|
{ 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, "c:\\4ed\\code\\4coder_search.cpp", 29, 856 },
|
{ 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, "c:\\4ed\\code\\4coder_auto_indent.cpp", 34, 745 },
|
{ 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, "c:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 105 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 35 },
|
{ 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, "c:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 93 },
|
{ 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, "c:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 99 },
|
{ 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, "c:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 87 },
|
{ 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, "c:\\4ed\\code\\4coder_base_commands.cpp", 36, 44 },
|
{ 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, "c:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 111 },
|
{ 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_allow_mouse = 0;
|
||||||
static int32_t fcoder_metacmd_ID_auto_tab_line_at_cursor = 1;
|
static int32_t fcoder_metacmd_ID_auto_tab_line_at_cursor = 1;
|
||||||
|
|
|
@ -18,23 +18,24 @@ key_mouse_right_release = 55311,
|
||||||
key_mouse_wheel = 55312,
|
key_mouse_wheel = 55312,
|
||||||
key_mouse_move = 55313,
|
key_mouse_move = 55313,
|
||||||
key_animate = 55314,
|
key_animate = 55314,
|
||||||
key_view_activate = 55315,
|
key_click_activate_view = 55315,
|
||||||
key_f1 = 55316,
|
key_click_deactivate_view = 55316,
|
||||||
key_f2 = 55317,
|
key_f1 = 55317,
|
||||||
key_f3 = 55318,
|
key_f2 = 55318,
|
||||||
key_f4 = 55319,
|
key_f3 = 55319,
|
||||||
key_f5 = 55320,
|
key_f4 = 55320,
|
||||||
key_f6 = 55321,
|
key_f5 = 55321,
|
||||||
key_f7 = 55322,
|
key_f6 = 55322,
|
||||||
key_f8 = 55323,
|
key_f7 = 55323,
|
||||||
key_f9 = 55324,
|
key_f8 = 55324,
|
||||||
key_f10 = 55325,
|
key_f9 = 55325,
|
||||||
key_f11 = 55326,
|
key_f10 = 55326,
|
||||||
key_f12 = 55327,
|
key_f11 = 55327,
|
||||||
key_f13 = 55328,
|
key_f12 = 55328,
|
||||||
key_f14 = 55329,
|
key_f13 = 55329,
|
||||||
key_f15 = 55330,
|
key_f14 = 55330,
|
||||||
key_f16 = 55331,
|
key_f15 = 55331,
|
||||||
|
key_f16 = 55332,
|
||||||
};
|
};
|
||||||
static char*
|
static char*
|
||||||
global_key_name(uint32_t key_code, int32_t *size){
|
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_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_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_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_f1: result = "key_f1"; *size = sizeof("key_f1")-1; break;
|
||||||
case key_f2: result = "key_f2"; *size = sizeof("key_f2")-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;
|
case key_f3: result = "key_f3"; *size = sizeof("key_f3")-1; break;
|
||||||
|
|
|
@ -44,7 +44,7 @@ end_map(context);
|
||||||
begin_map(context, mapid_file);
|
begin_map(context, mapid_file);
|
||||||
bind_vanilla_keys(context, write_character);
|
bind_vanilla_keys(context, write_character);
|
||||||
bind(context, key_mouse_left, MDFR_NONE, click_set_cursor_and_mark);
|
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_left_release, MDFR_NONE, click_set_cursor);
|
||||||
bind(context, key_mouse_move, MDFR_NONE, click_set_cursor_if_lbutton);
|
bind(context, key_mouse_move, MDFR_NONE, click_set_cursor_if_lbutton);
|
||||||
bind(context, key_del, MDFR_NONE, delete_char);
|
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_page_down, MDFR_NONE, lister__move_down);
|
||||||
bind(context, key_mouse_wheel, MDFR_NONE, lister__wheel_scroll);
|
bind(context, key_mouse_wheel, MDFR_NONE, lister__wheel_scroll);
|
||||||
bind(context, key_mouse_left, MDFR_NONE, lister__mouse_press);
|
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_left_release, MDFR_NONE, lister__mouse_release);
|
||||||
bind(context, key_mouse_move, MDFR_NONE, lister__repaint);
|
bind(context, key_mouse_move, MDFR_NONE, lister__repaint);
|
||||||
bind(context, key_animate, 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, write_character);
|
||||||
bind_vanilla_keys(context, MDFR_ALT, 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_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_left_release, MDFR_NONE, click_set_cursor);
|
||||||
bind(context, key_mouse_move, MDFR_NONE, click_set_cursor_if_lbutton);
|
bind(context, key_mouse_move, MDFR_NONE, click_set_cursor_if_lbutton);
|
||||||
bind(context, key_del, MDFR_NONE, delete_char);
|
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_page_down, MDFR_NONE, lister__move_down);
|
||||||
bind(context, key_mouse_wheel, MDFR_NONE, lister__wheel_scroll);
|
bind(context, key_mouse_wheel, MDFR_NONE, lister__wheel_scroll);
|
||||||
bind(context, key_mouse_left, MDFR_NONE, lister__mouse_press);
|
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_left_release, MDFR_NONE, lister__mouse_release);
|
||||||
bind(context, key_mouse_move, MDFR_NONE, lister__repaint);
|
bind(context, key_mouse_move, MDFR_NONE, lister__repaint);
|
||||||
bind(context, key_animate, 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, 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, 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, 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, 55317, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
|
||||||
{0, 55318, 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)},
|
{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, 55329, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
|
||||||
{0, 55330, 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, 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)},
|
{0, 55312, 0, "mouse_wheel_scroll", 18, LINK_PROCS(mouse_wheel_scroll)},
|
||||||
};
|
};
|
||||||
static Meta_Key_Bind fcoder_binds_for_default_mapid_file[78] = {
|
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, 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)},
|
{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)},
|
{1, 0, 0, "lister__write_character", 23, LINK_PROCS(lister__write_character)},
|
||||||
{0, 55307, 0, "lister__quit", 12, LINK_PROCS(lister__quit)},
|
{0, 55307, 0, "lister__quit", 12, LINK_PROCS(lister__quit)},
|
||||||
{0, 10, 0, "lister__activate", 16, LINK_PROCS(lister__activate)},
|
{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, 55306, 0, "lister__move_down", 17, LINK_PROCS(lister__move_down)},
|
||||||
{0, 55312, 0, "lister__wheel_scroll", 20, LINK_PROCS(lister__wheel_scroll)},
|
{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, 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, 55310, 0, "lister__mouse_release", 21, LINK_PROCS(lister__mouse_release)},
|
||||||
{0, 55313, 0, "lister__repaint", 15, LINK_PROCS(lister__repaint)},
|
{0, 55313, 0, "lister__repaint", 15, LINK_PROCS(lister__repaint)},
|
||||||
{0, 55314, 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_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},
|
{"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_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] = {
|
static Meta_Key_Bind fcoder_binds_for_mac_default_mapid_global[39] = {
|
||||||
{0, 44, 4, "change_active_panel", 19, LINK_PROCS(change_active_panel)},
|
{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, 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, 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, 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, 55317, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
|
||||||
{0, 55318, 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)},
|
{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, 55329, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
|
||||||
{0, 55330, 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, 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)},
|
{0, 55312, 0, "mouse_wheel_scroll", 18, LINK_PROCS(mouse_wheel_scroll)},
|
||||||
};
|
};
|
||||||
static Meta_Key_Bind fcoder_binds_for_mac_default_mapid_file[77] = {
|
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, 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)},
|
{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)},
|
{1, 0, 0, "lister__write_character", 23, LINK_PROCS(lister__write_character)},
|
||||||
{0, 55307, 0, "lister__quit", 12, LINK_PROCS(lister__quit)},
|
{0, 55307, 0, "lister__quit", 12, LINK_PROCS(lister__quit)},
|
||||||
{0, 10, 0, "lister__activate", 16, LINK_PROCS(lister__activate)},
|
{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, 55306, 0, "lister__move_down", 17, LINK_PROCS(lister__move_down)},
|
||||||
{0, 55312, 0, "lister__wheel_scroll", 20, LINK_PROCS(lister__wheel_scroll)},
|
{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, 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, 55310, 0, "lister__mouse_release", 21, LINK_PROCS(lister__mouse_release)},
|
||||||
{0, 55313, 0, "lister__repaint", 15, LINK_PROCS(lister__repaint)},
|
{0, 55313, 0, "lister__repaint", 15, LINK_PROCS(lister__repaint)},
|
||||||
{0, 55314, 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_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},
|
{"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_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] = {
|
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)},
|
{"default", 7, "The default 4coder bindings - typically good for Windows and Linux", 66, fcoder_submaps_for_default, 4, LINK_PROCS(fill_keys_default)},
|
||||||
|
|
|
@ -17,11 +17,11 @@ write_unit(Bind_Helper *helper, Binding_Unit unit){
|
||||||
|
|
||||||
inline Bind_Helper
|
inline Bind_Helper
|
||||||
begin_bind_helper(void *data, int32_t size){
|
begin_bind_helper(void *data, int32_t size){
|
||||||
Bind_Helper result = {0};
|
Bind_Helper result = {};
|
||||||
result.cursor = (Binding_Unit*)data;
|
result.cursor = (Binding_Unit*)data;
|
||||||
result.start = result.cursor;
|
result.start = result.cursor;
|
||||||
result.end = result.start + size / sizeof(*result.cursor);
|
result.end = result.start + size / sizeof(*result.cursor);
|
||||||
Binding_Unit unit = {0};
|
Binding_Unit unit = {};
|
||||||
unit.type = unit_header;
|
unit.type = unit_header;
|
||||||
unit.header.total_size = sizeof(*result.header);
|
unit.header.total_size = sizeof(*result.header);
|
||||||
result.header = write_unit(&result, unit);
|
result.header = write_unit(&result, unit);
|
||||||
|
@ -134,7 +134,7 @@ inline void
|
||||||
inherit_map(Bind_Helper *helper, int32_t mapid){
|
inherit_map(Bind_Helper *helper, int32_t mapid){
|
||||||
if (helper->group == 0 && helper->error == 0) helper->error = BH_ERR_MISSING_BEGIN;
|
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;
|
if (!helper->error && mapid < mapid_global) ++helper->header->header.user_map_count;
|
||||||
Binding_Unit unit = {0};
|
Binding_Unit unit = {};
|
||||||
unit.type = unit_inherit;
|
unit.type = unit_inherit;
|
||||||
unit.map_inherit.mapid = mapid;
|
unit.map_inherit.mapid = mapid;
|
||||||
write_unit(helper, unit);
|
write_unit(helper, unit);
|
||||||
|
@ -142,7 +142,7 @@ inherit_map(Bind_Helper *helper, int32_t mapid){
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
set_hook(Bind_Helper *helper, int32_t hook_id, Hook_Function *func){
|
set_hook(Bind_Helper *helper, int32_t hook_id, Hook_Function *func){
|
||||||
Binding_Unit unit = {0};
|
Binding_Unit unit = {};
|
||||||
unit.type = unit_hook;
|
unit.type = unit_hook;
|
||||||
unit.hook.hook_id = hook_id;
|
unit.hook.hook_id = hook_id;
|
||||||
unit.hook.func = (void*)func;
|
unit.hook.func = (void*)func;
|
||||||
|
@ -151,7 +151,7 @@ set_hook(Bind_Helper *helper, int32_t hook_id, Hook_Function *func){
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
set_scroll_rule(Bind_Helper *helper, Scroll_Rule_Function *func){
|
set_scroll_rule(Bind_Helper *helper, Scroll_Rule_Function *func){
|
||||||
Binding_Unit unit = {0};
|
Binding_Unit unit = {};
|
||||||
unit.type = unit_hook;
|
unit.type = unit_hook;
|
||||||
unit.hook.hook_id = special_hook_scroll_rule;
|
unit.hook.hook_id = special_hook_scroll_rule;
|
||||||
unit.hook.func = (void*)func;
|
unit.hook.func = (void*)func;
|
||||||
|
@ -160,7 +160,7 @@ set_scroll_rule(Bind_Helper *helper, Scroll_Rule_Function *func){
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
set_buffer_name_resolver(Bind_Helper *helper, Buffer_Name_Resolver_Function *func){
|
set_buffer_name_resolver(Bind_Helper *helper, Buffer_Name_Resolver_Function *func){
|
||||||
Binding_Unit unit = {0};
|
Binding_Unit unit = {};
|
||||||
unit.type = unit_hook;
|
unit.type = unit_hook;
|
||||||
unit.hook.hook_id = special_hook_buffer_name_resolver;
|
unit.hook.hook_id = special_hook_buffer_name_resolver;
|
||||||
unit.hook.func = (void*)func;
|
unit.hook.func = (void*)func;
|
||||||
|
@ -169,7 +169,7 @@ set_buffer_name_resolver(Bind_Helper *helper, Buffer_Name_Resolver_Function *fun
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
set_new_file_hook(Bind_Helper *helper, Open_File_Hook_Function *func){
|
set_new_file_hook(Bind_Helper *helper, Open_File_Hook_Function *func){
|
||||||
Binding_Unit unit = {0};
|
Binding_Unit unit = {};
|
||||||
unit.type = unit_hook;
|
unit.type = unit_hook;
|
||||||
unit.hook.hook_id = special_hook_new_file;
|
unit.hook.hook_id = special_hook_new_file;
|
||||||
unit.hook.func = (void*)func;
|
unit.hook.func = (void*)func;
|
||||||
|
@ -178,7 +178,7 @@ set_new_file_hook(Bind_Helper *helper, Open_File_Hook_Function *func){
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
set_start_hook(Bind_Helper *helper, Start_Hook_Function *func){
|
set_start_hook(Bind_Helper *helper, Start_Hook_Function *func){
|
||||||
Binding_Unit unit = {0};
|
Binding_Unit unit = {};
|
||||||
unit.type = unit_hook;
|
unit.type = unit_hook;
|
||||||
unit.hook.hook_id = special_hook_start;
|
unit.hook.hook_id = special_hook_start;
|
||||||
unit.hook.func = (void*)func;
|
unit.hook.func = (void*)func;
|
||||||
|
@ -187,7 +187,7 @@ set_start_hook(Bind_Helper *helper, Start_Hook_Function *func){
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
set_open_file_hook(Bind_Helper *helper, Open_File_Hook_Function *func){
|
set_open_file_hook(Bind_Helper *helper, Open_File_Hook_Function *func){
|
||||||
Binding_Unit unit = {0};
|
Binding_Unit unit = {};
|
||||||
unit.type = unit_hook;
|
unit.type = unit_hook;
|
||||||
unit.hook.hook_id = special_hook_open_file;
|
unit.hook.hook_id = special_hook_open_file;
|
||||||
unit.hook.func = (void*)func;
|
unit.hook.func = (void*)func;
|
||||||
|
@ -196,7 +196,7 @@ set_open_file_hook(Bind_Helper *helper, Open_File_Hook_Function *func){
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
set_save_file_hook(Bind_Helper *helper, Open_File_Hook_Function *func){
|
set_save_file_hook(Bind_Helper *helper, Open_File_Hook_Function *func){
|
||||||
Binding_Unit unit = {0};
|
Binding_Unit unit = {};
|
||||||
unit.type = unit_hook;
|
unit.type = unit_hook;
|
||||||
unit.hook.hook_id = special_hook_save_file;
|
unit.hook.hook_id = special_hook_save_file;
|
||||||
unit.hook.func = (void*)func;
|
unit.hook.func = (void*)func;
|
||||||
|
@ -205,7 +205,7 @@ set_save_file_hook(Bind_Helper *helper, Open_File_Hook_Function *func){
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
set_end_file_hook(Bind_Helper *helper, Open_File_Hook_Function *func){
|
set_end_file_hook(Bind_Helper *helper, Open_File_Hook_Function *func){
|
||||||
Binding_Unit unit = {0};
|
Binding_Unit unit = {};
|
||||||
unit.type = unit_hook;
|
unit.type = unit_hook;
|
||||||
unit.hook.hook_id = special_hook_end_file;
|
unit.hook.hook_id = special_hook_end_file;
|
||||||
unit.hook.func = (void*)func;
|
unit.hook.func = (void*)func;
|
||||||
|
@ -214,7 +214,7 @@ set_end_file_hook(Bind_Helper *helper, Open_File_Hook_Function *func){
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
set_command_caller(Bind_Helper *helper, Command_Caller_Hook_Function *func){
|
set_command_caller(Bind_Helper *helper, Command_Caller_Hook_Function *func){
|
||||||
Binding_Unit unit = {0};
|
Binding_Unit unit = {};
|
||||||
unit.type = unit_hook;
|
unit.type = unit_hook;
|
||||||
unit.hook.hook_id = special_hook_command_caller;
|
unit.hook.hook_id = special_hook_command_caller;
|
||||||
unit.hook.func = (void*)func;
|
unit.hook.func = (void*)func;
|
||||||
|
@ -223,7 +223,7 @@ set_command_caller(Bind_Helper *helper, Command_Caller_Hook_Function *func){
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
set_render_caller(Bind_Helper *helper, Render_Caller_Function *func){
|
set_render_caller(Bind_Helper *helper, Render_Caller_Function *func){
|
||||||
Binding_Unit unit = {0};
|
Binding_Unit unit = {};
|
||||||
unit.type = unit_hook;
|
unit.type = unit_hook;
|
||||||
unit.hook.hook_id = special_hook_render_caller;
|
unit.hook.hook_id = special_hook_render_caller;
|
||||||
unit.hook.func = (void*)func;
|
unit.hook.func = (void*)func;
|
||||||
|
@ -232,7 +232,7 @@ set_render_caller(Bind_Helper *helper, Render_Caller_Function *func){
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
set_input_filter(Bind_Helper *helper, Input_Filter_Function *func){
|
set_input_filter(Bind_Helper *helper, Input_Filter_Function *func){
|
||||||
Binding_Unit unit = {0};
|
Binding_Unit unit = {};
|
||||||
unit.type = unit_hook;
|
unit.type = unit_hook;
|
||||||
unit.hook.hook_id = special_hook_input_filter;
|
unit.hook.hook_id = special_hook_input_filter;
|
||||||
unit.hook.func = (void*)func;
|
unit.hook.func = (void*)func;
|
||||||
|
@ -252,7 +252,7 @@ end_bind_helper(Bind_Helper *helper){
|
||||||
inline Bind_Buffer
|
inline Bind_Buffer
|
||||||
end_bind_helper_get_buffer(Bind_Helper *helper){
|
end_bind_helper_get_buffer(Bind_Helper *helper){
|
||||||
int32_t size = end_bind_helper(helper);
|
int32_t size = end_bind_helper(helper);
|
||||||
Bind_Buffer result = {0};
|
Bind_Buffer result = {};
|
||||||
result.data = helper->start;
|
result.data = helper->start;
|
||||||
result.size = size;
|
result.size = size;
|
||||||
return(result);
|
return(result);
|
||||||
|
@ -310,10 +310,8 @@ key_is_unmodified(Key_Event_Data *key){
|
||||||
static uint32_t
|
static uint32_t
|
||||||
to_writable_character(User_Input in, uint8_t *character){
|
to_writable_character(User_Input in, uint8_t *character){
|
||||||
uint32_t result = 0;
|
uint32_t result = 0;
|
||||||
if (in.type == UserInputKey){
|
if (in.key.character != 0){
|
||||||
if (in.key.character != 0){
|
u32_to_utf8_unchecked(in.key.character, character, &result);
|
||||||
u32_to_utf8_unchecked(in.key.character, character, &result);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return(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
|
// 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
|
// 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.
|
// 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
|
// NOTE(allen|a3.4.4): The responsible thing to do on abort is to end the command
|
||||||
// without waiting on get_user_input again.
|
// 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
|
// 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
|
// 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.
|
// 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'){
|
||||||
if (in.key.keycode == '\n' || in.key.keycode == '\t'){
|
break;
|
||||||
break;
|
}
|
||||||
}
|
else if (in.key.keycode == key_back){
|
||||||
else if (in.key.keycode == key_back){
|
backspace_utf8(&bar->string);
|
||||||
backspace_utf8(&bar->string);
|
}
|
||||||
}
|
else if (good_character){
|
||||||
else if (good_character){
|
append(&bar->string, make_string(character, length));
|
||||||
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
|
static Buffer_Rect
|
||||||
get_rect(View_Summary *view){
|
get_rect(View_Summary *view){
|
||||||
Buffer_Rect rect = {0};
|
Buffer_Rect rect = {};
|
||||||
|
|
||||||
rect.char0 = view->mark.character;
|
rect.char0 = view->mark.character;
|
||||||
rect.line0 = view->mark.line;
|
rect.line0 = view->mark.line;
|
||||||
|
@ -494,7 +490,7 @@ get_rect(View_Summary *view){
|
||||||
|
|
||||||
static i32_Rect
|
static i32_Rect
|
||||||
get_line_x_rect(View_Summary *view){
|
get_line_x_rect(View_Summary *view){
|
||||||
i32_Rect rect = {0};
|
i32_Rect rect = {};
|
||||||
|
|
||||||
if (view->unwrapped_lines){
|
if (view->unwrapped_lines){
|
||||||
rect.x0 = (int32_t)view->mark.unwrapped_x;
|
rect.x0 = (int32_t)view->mark.unwrapped_x;
|
||||||
|
@ -519,8 +515,8 @@ get_line_x_rect(View_Summary *view){
|
||||||
|
|
||||||
static View_Summary
|
static View_Summary
|
||||||
get_first_view_with_buffer(Application_Links *app, int32_t buffer_id){
|
get_first_view_with_buffer(Application_Links *app, int32_t buffer_id){
|
||||||
View_Summary result = {0};
|
View_Summary result = {};
|
||||||
View_Summary test = {0};
|
View_Summary test = {};
|
||||||
|
|
||||||
if (buffer_id != 0){
|
if (buffer_id != 0){
|
||||||
uint32_t access = AccessAll;
|
uint32_t access = AccessAll;
|
||||||
|
@ -591,7 +587,7 @@ buffer_identifier_to_id(Application_Links *app, Buffer_Identifier identifier){
|
||||||
|
|
||||||
static Buffer_Summary
|
static Buffer_Summary
|
||||||
buffer_identifier_to_buffer_summary(Application_Links *app, Buffer_Identifier identifier, Access_Flag access){
|
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){
|
if (identifier.id != 0){
|
||||||
buffer = get_buffer(app, identifier.id, access);
|
buffer = get_buffer(app, identifier.id, access);
|
||||||
}
|
}
|
||||||
|
@ -610,7 +606,7 @@ view_open_file(Application_Links *app, View_Summary *view,
|
||||||
bool32 result = false;
|
bool32 result = false;
|
||||||
|
|
||||||
if (view != 0){
|
if (view != 0){
|
||||||
Buffer_Summary buffer = {0};
|
Buffer_Summary buffer = {};
|
||||||
if (open_file(app, &buffer, filename, filename_len, false, never_new)){
|
if (open_file(app, &buffer, filename, filename_len, false, never_new)){
|
||||||
view_set_buffer(app, view, buffer.buffer_id, 0);
|
view_set_buffer(app, view, buffer.buffer_id, 0);
|
||||||
result = true;
|
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 original_id = view->view_id;
|
||||||
View_ID check_id = original_id;
|
View_ID check_id = original_id;
|
||||||
|
|
||||||
View_Summary new_view = {0};
|
View_Summary new_view = {};
|
||||||
|
|
||||||
for (;;){
|
for (;;){
|
||||||
--check_id;
|
--check_id;
|
||||||
|
@ -660,7 +656,7 @@ kill_buffer(Application_Links *app, Buffer_Identifier identifier, View_ID gui_vi
|
||||||
|
|
||||||
static View_Summary
|
static View_Summary
|
||||||
get_view_last(Application_Links *app, uint32_t access){
|
get_view_last(Application_Links *app, uint32_t access){
|
||||||
View_Summary view = {0};
|
View_Summary view = {};
|
||||||
view.exists = true;
|
view.exists = true;
|
||||||
get_view_prev(app, &view, access);
|
get_view_prev(app, &view, access);
|
||||||
if (view.view_id < 1 || view.view_id > 16){
|
if (view.view_id < 1 || view.view_id > 16){
|
||||||
|
@ -699,7 +695,7 @@ refresh_view(Application_Links *app, View_Summary *view){
|
||||||
static int32_t
|
static int32_t
|
||||||
character_pos_to_pos(Application_Links *app, View_Summary *view, Buffer_Summary *buffer, int32_t character_pos){
|
character_pos_to_pos(Application_Links *app, View_Summary *view, Buffer_Summary *buffer, int32_t character_pos){
|
||||||
int32_t result = 0;
|
int32_t result = 0;
|
||||||
Full_Cursor cursor = {0};
|
Full_Cursor cursor = {};
|
||||||
if (view_compute_cursor(app, view, seek_character_pos(character_pos), &cursor)){
|
if (view_compute_cursor(app, view, seek_character_pos(character_pos), &cursor)){
|
||||||
result = cursor.pos;
|
result = cursor.pos;
|
||||||
}
|
}
|
||||||
|
@ -731,8 +727,8 @@ get_view_range(View_Summary *view){
|
||||||
|
|
||||||
static bool32
|
static bool32
|
||||||
read_line(Application_Links *app, Partition *part, Buffer_Summary *buffer, int32_t line, String *str){
|
read_line(Application_Links *app, Partition *part, Buffer_Summary *buffer, int32_t line, String *str){
|
||||||
Partial_Cursor begin = {0};
|
Partial_Cursor begin = {};
|
||||||
Partial_Cursor end = {0};
|
Partial_Cursor end = {};
|
||||||
|
|
||||||
bool32 success = false;
|
bool32 success = false;
|
||||||
if (buffer_compute_cursor(app, buffer, seek_line_char(line, 1), &begin)){
|
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){
|
buffer_get_line_start(Application_Links *app, Buffer_Summary *buffer, int32_t line){
|
||||||
int32_t result = buffer->size;
|
int32_t result = buffer->size;
|
||||||
if (line <= buffer->line_count){
|
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);
|
buffer_compute_cursor(app, buffer, seek_line_char(line, 1), &partial_cursor);
|
||||||
result = partial_cursor.pos;
|
result = partial_cursor.pos;
|
||||||
}
|
}
|
||||||
|
@ -772,7 +768,7 @@ static int32_t
|
||||||
buffer_get_line_end(Application_Links *app, Buffer_Summary *buffer, int32_t line){
|
buffer_get_line_end(Application_Links *app, Buffer_Summary *buffer, int32_t line){
|
||||||
int32_t result = buffer->size;
|
int32_t result = buffer->size;
|
||||||
if (line <= buffer->line_count){
|
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);
|
buffer_compute_cursor(app, buffer, seek_line_char(line, -1), &partial_cursor);
|
||||||
result = partial_cursor.pos;
|
result = partial_cursor.pos;
|
||||||
}
|
}
|
||||||
|
@ -781,7 +777,7 @@ buffer_get_line_end(Application_Links *app, Buffer_Summary *buffer, int32_t line
|
||||||
|
|
||||||
static int32_t
|
static int32_t
|
||||||
buffer_get_line_number(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
|
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);
|
buffer_compute_cursor(app, buffer, seek_pos(pos), &partial_cursor);
|
||||||
return(partial_cursor.line);
|
return(partial_cursor.line);
|
||||||
}
|
}
|
||||||
|
@ -1029,7 +1025,7 @@ get_query_string(Application_Links *app, char *query_str, char *string_space, in
|
||||||
|
|
||||||
static String
|
static String
|
||||||
get_string_in_view_range(Application_Links *app, Partition *arena, View_Summary *view){
|
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);
|
Buffer_Summary buffer = get_buffer(app, view->buffer_id, AccessProtected);
|
||||||
if (!buffer.exists) return(str);
|
if (!buffer.exists) return(str);
|
||||||
Range range = get_view_range(view);
|
Range range = get_view_range(view);
|
||||||
|
@ -1045,8 +1041,8 @@ get_string_in_view_range(Application_Links *app, Partition *arena, View_Summary
|
||||||
|
|
||||||
static String
|
static String
|
||||||
get_token_or_word_under_pos(Application_Links *app, Buffer_Summary *buffer, int32_t pos, char *space, int32_t capacity){
|
get_token_or_word_under_pos(Application_Links *app, Buffer_Summary *buffer, int32_t pos, char *space, int32_t capacity){
|
||||||
String result = {0};
|
String result = {};
|
||||||
Cpp_Get_Token_Result get_result = {0};
|
Cpp_Get_Token_Result get_result = {};
|
||||||
bool32 success = buffer_get_token_index(app, buffer, pos, &get_result);
|
bool32 success = buffer_get_token_index(app, buffer, pos, &get_result);
|
||||||
if (success && !get_result.in_whitespace){
|
if (success && !get_result.in_whitespace){
|
||||||
int32_t size = get_result.token_end - get_result.token_start;
|
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
|
static String
|
||||||
build_string(Partition *part, char *s0, char *s1, char *s2){
|
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.memory_size = str_size(s0) + str_size(s1) + str_size(s2) + 1;
|
||||||
sr.str = push_array(part, char, sr.memory_size);
|
sr.str = push_array(part, char, sr.memory_size);
|
||||||
if (sr.str != 0){
|
if (sr.str != 0){
|
||||||
|
@ -1075,7 +1071,7 @@ build_string(Partition *part, char *s0, char *s1, char *s2){
|
||||||
|
|
||||||
static String
|
static String
|
||||||
build_string(Partition *part, char *s0, char *s1, String s2){
|
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.memory_size = str_size(s0) + str_size(s1) + s2.size + 1;
|
||||||
sr.str = push_array(part, char, sr.memory_size);
|
sr.str = push_array(part, char, sr.memory_size);
|
||||||
if (sr.str != 0){
|
if (sr.str != 0){
|
||||||
|
@ -1089,7 +1085,7 @@ build_string(Partition *part, char *s0, char *s1, String s2){
|
||||||
|
|
||||||
static String
|
static String
|
||||||
build_string(Partition *part, char *s0, String s1, char *s2){
|
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.memory_size = str_size(s0) + s1.size + str_size(s2) + 1;
|
||||||
sr.str = push_array(part, char, sr.memory_size);
|
sr.str = push_array(part, char, sr.memory_size);
|
||||||
if (sr.str != 0){
|
if (sr.str != 0){
|
||||||
|
@ -1103,7 +1099,7 @@ build_string(Partition *part, char *s0, String s1, char *s2){
|
||||||
|
|
||||||
static String
|
static String
|
||||||
build_string(Partition *part, char *s0, String s1, String s2){
|
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.memory_size = str_size(s0) + s1.size + s2.size + 1;
|
||||||
sr.str = push_array(part, char, sr.memory_size);
|
sr.str = push_array(part, char, sr.memory_size);
|
||||||
if (sr.str != 0){
|
if (sr.str != 0){
|
||||||
|
@ -1117,7 +1113,7 @@ build_string(Partition *part, char *s0, String s1, String s2){
|
||||||
|
|
||||||
static String
|
static String
|
||||||
build_string(Partition *part, String s0, char *s1, char *s2){
|
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.memory_size = s0.size + str_size(s1) + str_size(s2) + 1;
|
||||||
sr.str = push_array(part, char, sr.memory_size);
|
sr.str = push_array(part, char, sr.memory_size);
|
||||||
if (sr.str != 0){
|
if (sr.str != 0){
|
||||||
|
@ -1131,7 +1127,7 @@ build_string(Partition *part, String s0, char *s1, char *s2){
|
||||||
|
|
||||||
static String
|
static String
|
||||||
build_string(Partition *part, String s0, char *s1, String s2){
|
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.memory_size = s0.size + str_size(s1) + s2.size + 1;
|
||||||
sr.str = push_array(part, char, sr.memory_size);
|
sr.str = push_array(part, char, sr.memory_size);
|
||||||
if (sr.str != 0){
|
if (sr.str != 0){
|
||||||
|
@ -1145,7 +1141,7 @@ build_string(Partition *part, String s0, char *s1, String s2){
|
||||||
|
|
||||||
static String
|
static String
|
||||||
build_string(Partition *part, String s0, String s1, char *s2){
|
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.memory_size = s0.size + s1.size + str_size(s2) + 1;
|
||||||
sr.str = push_array(part, char, sr.memory_size);
|
sr.str = push_array(part, char, sr.memory_size);
|
||||||
if (sr.str != 0){
|
if (sr.str != 0){
|
||||||
|
@ -1159,7 +1155,7 @@ build_string(Partition *part, String s0, String s1, char *s2){
|
||||||
|
|
||||||
static String
|
static String
|
||||||
build_string(Partition *part, String s0, String s1, String s2){
|
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.memory_size = s0.size + s1.size + s2.size + 1;
|
||||||
sr.str = push_array(part, char, sr.memory_size);
|
sr.str = push_array(part, char, sr.memory_size);
|
||||||
if (sr.str != 0){
|
if (sr.str != 0){
|
||||||
|
@ -1205,7 +1201,7 @@ get_hot_directory(Application_Links *app, Partition *arena){
|
||||||
|
|
||||||
static String
|
static String
|
||||||
dump_file_handle(Partition *arena, FILE *file){
|
dump_file_handle(Partition *arena, FILE *file){
|
||||||
String str = {0};
|
String str = {};
|
||||||
if (file != 0){
|
if (file != 0){
|
||||||
fseek(file, 0, SEEK_END);
|
fseek(file, 0, SEEK_END);
|
||||||
int32_t size = ftell(file);
|
int32_t size = ftell(file);
|
||||||
|
@ -1223,7 +1219,7 @@ dump_file_handle(Partition *arena, FILE *file){
|
||||||
|
|
||||||
static File_Handle_Path
|
static File_Handle_Path
|
||||||
open_file_search_up_path(Partition *arena, String path, String file_name){
|
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;
|
int32_t cap = path.size + file_name.size + 2;
|
||||||
char *space = push_array(arena, char, cap);
|
char *space = push_array(arena, char, cap);
|
||||||
|
@ -1301,7 +1297,7 @@ open_file(Partition *scratch, String name){
|
||||||
|
|
||||||
static File_Name_Data
|
static File_Name_Data
|
||||||
dump_file(Partition *arena, String file_name){
|
dump_file(Partition *arena, String file_name){
|
||||||
File_Name_Data result = {0};
|
File_Name_Data result = {};
|
||||||
FILE *file = open_file(arena, file_name);
|
FILE *file = open_file(arena, file_name);
|
||||||
if (file != 0){
|
if (file != 0){
|
||||||
result.file_name = file_name;
|
result.file_name = file_name;
|
||||||
|
@ -1313,7 +1309,7 @@ dump_file(Partition *arena, String file_name){
|
||||||
|
|
||||||
static File_Name_Path_Data
|
static File_Name_Path_Data
|
||||||
dump_file_search_up_path(Partition *arena, String path, String file_name){
|
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);
|
File_Handle_Path file = open_file_search_up_path(arena, path, file_name);
|
||||||
if (file.file != 0){
|
if (file.file != 0){
|
||||||
result.file_name = file_name;
|
result.file_name = file_name;
|
||||||
|
@ -1327,7 +1323,7 @@ dump_file_search_up_path(Partition *arena, String path, String file_name){
|
||||||
static String
|
static String
|
||||||
push_string(Partition *arena, int32_t cap){
|
push_string(Partition *arena, int32_t cap){
|
||||||
char *mem = push_array(arena, char, cap);
|
char *mem = push_array(arena, char, cap);
|
||||||
String result = {0};
|
String result = {};
|
||||||
if (mem != 0){
|
if (mem != 0){
|
||||||
result = make_string_cap(mem, 0, cap);
|
result = make_string_cap(mem, 0, cap);
|
||||||
}
|
}
|
||||||
|
@ -1336,7 +1332,7 @@ push_string(Partition *arena, int32_t cap){
|
||||||
|
|
||||||
static String
|
static String
|
||||||
push_string_copy(Partition *arena, String str){
|
push_string_copy(Partition *arena, String str){
|
||||||
String result = {0};
|
String result = {};
|
||||||
if (str.str != 0){
|
if (str.str != 0){
|
||||||
result = push_string(arena, str.size + 1);
|
result = push_string(arena, str.size + 1);
|
||||||
push_align(arena, 8);
|
push_align(arena, 8);
|
||||||
|
@ -1396,7 +1392,7 @@ sort_pairs_by_key(Sort_Pair_i32 *pairs, int32_t count){
|
||||||
|
|
||||||
static Range_Array
|
static Range_Array
|
||||||
get_ranges_of_duplicate_keys(Partition *arena, int32_t *keys, int32_t stride, int32_t count){
|
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);
|
result.ranges = push_array(arena, Range, 0);
|
||||||
uint8_t *ptr = (uint8_t*)keys;
|
uint8_t *ptr = (uint8_t*)keys;
|
||||||
int32_t start_i = 0;
|
int32_t start_i = 0;
|
||||||
|
@ -1433,7 +1429,7 @@ no_mark_snap_to_cursor(Application_Links *app, View_ID view_id){
|
||||||
static void
|
static void
|
||||||
no_mark_snap_to_cursor_if_shift(Application_Links *app, View_ID view_id){
|
no_mark_snap_to_cursor_if_shift(Application_Links *app, View_ID view_id){
|
||||||
User_Input in = get_command_input(app);
|
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);
|
no_mark_snap_to_cursor(app, view_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
Temp_Memory temp = begin_temp_memory(&global_part);
|
||||||
View_Summary view = get_active_view(app, AccessProtected);
|
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)){
|
if (parse_jump_from_buffer_line(app, &global_part, view.buffer_id, view.cursor.line, false, &location)){
|
||||||
change_active_panel(app);
|
change_active_panel(app);
|
||||||
View_Summary target_view = get_active_view(app, AccessAll);
|
View_Summary target_view = get_active_view(app, AccessAll);
|
||||||
|
|
||||||
Buffer_Summary buffer = {0};
|
Buffer_Summary buffer = {};
|
||||||
if (get_jump_buffer(app, &buffer, &location)){
|
if (get_jump_buffer(app, &buffer, &location)){
|
||||||
switch_to_existing_view(app, &target_view, &buffer);
|
switch_to_existing_view(app, &target_view, &buffer);
|
||||||
jump_to_location(app, &target_view, &buffer, location);
|
jump_to_location(app, &target_view, &buffer, location);
|
||||||
|
@ -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);
|
Temp_Memory temp = begin_temp_memory(&global_part);
|
||||||
View_Summary view = get_active_view(app, AccessProtected);
|
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)){
|
if (parse_jump_from_buffer_line(app, &global_part, view.buffer_id, view.cursor.line, false, &location)){
|
||||||
View_Summary target_view = view;
|
View_Summary target_view = view;
|
||||||
|
|
||||||
Buffer_Summary buffer = {0};
|
Buffer_Summary buffer = {};
|
||||||
if (get_jump_buffer(app, &buffer, &location)){
|
if (get_jump_buffer(app, &buffer, &location)){
|
||||||
jump_to_location(app, &target_view, &buffer, location);
|
jump_to_location(app, &target_view, &buffer, location);
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ activate_jump(Application_Links *app, Partition *scratch, Heap *heap,
|
||||||
Jump_Lister_Parameters *params = (Jump_Lister_Parameters*)state->lister.user_data;
|
Jump_Lister_Parameters *params = (Jump_Lister_Parameters*)state->lister.user_data;
|
||||||
Marker_List *list = get_marker_list_for_buffer(params->list_buffer_id);
|
Marker_List *list = get_marker_list_for_buffer(params->list_buffer_id);
|
||||||
if (list != 0){
|
if (list != 0){
|
||||||
View_Summary target_view = {0};
|
View_Summary target_view = {};
|
||||||
switch (params->activation_rule){
|
switch (params->activation_rule){
|
||||||
case JumpListerActivation_OpenInUIView:
|
case JumpListerActivation_OpenInUIView:
|
||||||
{
|
{
|
||||||
|
@ -48,9 +48,9 @@ activate_jump(Application_Links *app, Partition *scratch, Heap *heap,
|
||||||
}break;
|
}break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ID_Pos_Jump_Location location = {0};
|
ID_Pos_Jump_Location location = {};
|
||||||
if (get_jump_from_list(app, list, list_index, &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)){
|
if (get_jump_buffer(app, &buffer, &location)){
|
||||||
set_active_view(app, &target_view);
|
set_active_view(app, &target_view);
|
||||||
jump_to_location(app, &target_view, &buffer, location);
|
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);
|
Lister_Option *options = push_array(scratch, Lister_Option, option_count);
|
||||||
Managed_Object stored_jumps = list->jump_array;
|
Managed_Object stored_jumps = list->jump_array;
|
||||||
for (int32_t i = 0; i < option_count; i += 1){
|
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);
|
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);
|
read_line(app, scratch, &list_buffer, stored.list_line, &line);
|
||||||
options[i].string = line.str;
|
options[i].string = line.str;
|
||||||
options[i].status = 0;
|
options[i].status = 0;
|
||||||
|
@ -89,7 +89,7 @@ open_jump_lister(Application_Links *app, Partition *scratch, Heap *heap,
|
||||||
estimated_string_space_size += aligned_size;
|
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.list_buffer_id = list_buffer_id;
|
||||||
jump_lister_params.activation_rule = activation_rule;
|
jump_lister_params.activation_rule = activation_rule;
|
||||||
if (optional_target_view != 0){
|
if (optional_target_view != 0){
|
||||||
|
|
|
@ -40,7 +40,7 @@ binary_search(uint32_t *array, int32_t stride, int32_t count, uint32_t x){
|
||||||
|
|
||||||
static Sticky_Jump_Array
|
static Sticky_Jump_Array
|
||||||
parse_buffer_to_jump_array(Application_Links *app, Partition *arena, Buffer_Summary buffer){
|
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);
|
result.jumps = push_array(arena, Sticky_Jump, 0);
|
||||||
|
|
||||||
for (int32_t line = 1;; line += 1){
|
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;
|
int32_t out_pos = 0;
|
||||||
|
|
||||||
Temp_Memory temp = begin_temp_memory(arena);
|
Temp_Memory temp = begin_temp_memory(arena);
|
||||||
String line_str = {0};
|
String line_str = {};
|
||||||
if (read_line(app, arena, &buffer, line, &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)){
|
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 (open_file(app, &jump_buffer, location.file.str, location.file.size, false, true)){
|
||||||
if (jump_buffer.exists){
|
if (jump_buffer.exists){
|
||||||
Partial_Cursor cursor = {0};
|
Partial_Cursor cursor = {};
|
||||||
if (buffer_compute_cursor(app, &jump_buffer,
|
if (buffer_compute_cursor(app, &jump_buffer,
|
||||||
seek_line_char(location.line, location.column),
|
seek_line_char(location.line, location.column),
|
||||||
&cursor)){
|
&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);
|
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);
|
scope_array[0] = buffer_get_managed_scope(app, buffer_id);
|
||||||
|
|
||||||
for (int32_t i = 0; i < scoped_buffer_ranges.count; i += 1){
|
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
|
static bool32
|
||||||
get_stored_jump_from_list(Application_Links *app, Marker_List *list, int32_t index,
|
get_stored_jump_from_list(Application_Links *app, Marker_List *list, int32_t index,
|
||||||
Sticky_Jump_Stored *stored_out){
|
Sticky_Jump_Stored *stored_out){
|
||||||
Sticky_Jump_Stored stored = {0};
|
Sticky_Jump_Stored stored = {};
|
||||||
if (list != 0){
|
if (list != 0){
|
||||||
if (managed_object_load_data(app, list->jump_array, index, 1, &stored)){
|
if (managed_object_load_data(app, list->jump_array, index, 1, &stored)){
|
||||||
*stored_out = stored;
|
*stored_out = stored;
|
||||||
|
@ -268,11 +268,11 @@ get_all_stored_jumps_from_list(Application_Links *app, Partition *arena, Marker_
|
||||||
|
|
||||||
static bool32
|
static bool32
|
||||||
get_jump_from_list(Application_Links *app, Marker_List *list, int32_t index, ID_Pos_Jump_Location *location){
|
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)){
|
if (get_stored_jump_from_list(app, list, index, &stored)){
|
||||||
Buffer_ID target_buffer_id = stored.jump_buffer_id;
|
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[0] = buffer_get_managed_scope(app, list->buffer_id);
|
||||||
scope_array[1] = buffer_get_managed_scope(app, target_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));
|
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);
|
sticky_jump_marker_handle_loc = managed_variable_create_or_get_id(app, sticky_jump_marker_handle_var, 0);
|
||||||
Managed_Object marker_array = 0;
|
Managed_Object marker_array = 0;
|
||||||
if (managed_variable_get(app, scope, sticky_jump_marker_handle_loc, &marker_array)){
|
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);
|
managed_object_load_data(app, marker_array, stored.index_into_marker_array, 1, &marker);
|
||||||
location->buffer_id = target_buffer_id;
|
location->buffer_id = target_buffer_id;
|
||||||
location->pos = marker.pos;
|
location->pos = marker.pos;
|
||||||
|
@ -294,7 +294,7 @@ static int32_t
|
||||||
get_line_from_list(Application_Links *app, Marker_List *list, int32_t index){
|
get_line_from_list(Application_Links *app, Marker_List *list, int32_t index){
|
||||||
int32_t result = 0;
|
int32_t result = 0;
|
||||||
if (list != 0){
|
if (list != 0){
|
||||||
Sticky_Jump_Stored stored = {0};
|
Sticky_Jump_Stored stored = {};
|
||||||
if (get_stored_jump_from_list(app, list, index, &stored)){
|
if (get_stored_jump_from_list(app, list, index, &stored)){
|
||||||
result = stored.list_line;
|
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){
|
get_is_sub_error_from_list(Application_Links *app, Marker_List *list, int32_t index){
|
||||||
bool32 result = false;
|
bool32 result = false;
|
||||||
if (list != 0){
|
if (list != 0){
|
||||||
Sticky_Jump_Stored stored = {0};
|
Sticky_Jump_Stored stored = {};
|
||||||
if (get_stored_jump_from_list(app, list, index, &stored)){
|
if (get_stored_jump_from_list(app, list, index, &stored)){
|
||||||
result = stored.is_sub_error;
|
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);
|
int32_t list_index = get_index_exact_from_list(app, part, list, view.cursor.line);
|
||||||
|
|
||||||
if (list_index >= 0){
|
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)){
|
if (get_jump_from_list(app, list, list_index, &location)){
|
||||||
Buffer_Summary buffer = {0};
|
Buffer_Summary buffer = {};
|
||||||
if (get_jump_buffer(app, &buffer, &location)){
|
if (get_jump_buffer(app, &buffer, &location)){
|
||||||
change_active_panel(app);
|
change_active_panel(app);
|
||||||
View_Summary target_view = get_active_view(app, AccessAll);
|
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);
|
int32_t list_index = get_index_exact_from_list(app, part, list, view.cursor.line);
|
||||||
|
|
||||||
if (list_index >= 0){
|
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)){
|
if (get_jump_from_list(app, list, list_index, &location)){
|
||||||
Buffer_Summary buffer = {0};
|
Buffer_Summary buffer = {};
|
||||||
if (get_jump_buffer(app, &buffer, &location)){
|
if (get_jump_buffer(app, &buffer, &location)){
|
||||||
View_Summary target_view = view;
|
View_Summary target_view = view;
|
||||||
jump_to_location(app, &target_view, &buffer, location);
|
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
|
static void
|
||||||
goto_jump_in_order(Application_Links *app, Marker_List *list, View_Summary *jump_view, ID_Pos_Jump_Location location){
|
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)){
|
if (get_jump_buffer(app, &buffer, &location)){
|
||||||
View_Summary target_view = get_active_view(app, AccessAll);
|
View_Summary target_view = get_active_view(app, AccessAll);
|
||||||
if (target_view.view_id == jump_view->view_id){
|
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){
|
if (list != 0){
|
||||||
for (;list_index >= 0 && list_index < list->jump_count;){
|
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)){
|
if (get_jump_from_list(app, list, list_index, &location)){
|
||||||
bool32 skip_this = false;
|
bool32 skip_this = false;
|
||||||
if (skip_repeats && jump_is_repeat(prev_location, location)){
|
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
|
static Locked_Jump_State
|
||||||
get_locked_jump_state(Application_Links *app, Partition *part, Heap *heap){
|
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);
|
result.view = get_view_for_locked_jump_buffer(app);
|
||||||
if (result.view.exists){
|
if (result.view.exists){
|
||||||
result.list = get_or_make_list_for_buffer(app, part, heap, result.view.buffer_id);
|
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);
|
Locked_Jump_State jump_state = get_locked_jump_state(app, part, heap);
|
||||||
if (jump_state.view.exists){
|
if (jump_state.view.exists){
|
||||||
int32_t list_index = 0;
|
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)){
|
if (get_jump_from_list(app, jump_state.list, list_index, &location)){
|
||||||
goto_jump_in_order(app, jump_state.list, &jump_state.view, 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);
|
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);
|
Locked_Jump_State jump_state = get_locked_jump_state(app, part, heap);
|
||||||
if (jump_state.view.exists){
|
if (jump_state.view.exists){
|
||||||
int32_t list_index = 0;
|
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)){
|
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)){
|
if (get_jump_buffer(app, &buffer, &location)){
|
||||||
jump_to_location(app, &jump_state.view, &buffer, location);
|
jump_to_location(app, &jump_state.view, &buffer, location);
|
||||||
}
|
}
|
||||||
|
|
|
@ -175,7 +175,7 @@ parse_jump_from_buffer_line(Application_Links *app, Partition *arena,
|
||||||
int32_t buffer_id, int32_t line,
|
int32_t buffer_id, int32_t line,
|
||||||
bool32 skip_sub_errors, Name_Line_Column_Location *location){
|
bool32 skip_sub_errors, Name_Line_Column_Location *location){
|
||||||
int32_t result = false;
|
int32_t result = false;
|
||||||
String line_str = {0};
|
String line_str = {};
|
||||||
Buffer_Summary buffer = get_buffer(app, buffer_id, AccessAll);
|
Buffer_Summary buffer = get_buffer(app, buffer_id, AccessAll);
|
||||||
if (read_line(app, arena, &buffer, line, &line_str)){
|
if (read_line(app, arena, &buffer, line, &line_str)){
|
||||||
int32_t colon_char = 0;
|
int32_t colon_char = 0;
|
||||||
|
@ -252,7 +252,7 @@ seek_next_jump_in_buffer(Application_Links *app, Partition *part,
|
||||||
|
|
||||||
bool32 result = false;
|
bool32 result = false;
|
||||||
int32_t line = first_line;
|
int32_t line = first_line;
|
||||||
String line_str = {0};
|
String line_str = {};
|
||||||
Buffer_Summary buffer = get_buffer(app, buffer_id, AccessAll);
|
Buffer_Summary buffer = get_buffer(app, buffer_id, AccessAll);
|
||||||
for (;;){
|
for (;;){
|
||||||
if (read_line(app, part, &buffer, line, &line_str)){
|
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
|
static ID_Line_Column_Jump_Location
|
||||||
convert_name_based_to_id_based(Application_Links *app, Name_Line_Column_Location loc){
|
convert_name_based_to_id_based(Application_Links *app, Name_Line_Column_Location loc){
|
||||||
ID_Line_Column_Jump_Location result = {0};
|
ID_Line_Column_Jump_Location result = {};
|
||||||
Buffer_Summary buffer = get_buffer_by_name(app, loc.file.str, loc.file.size, AccessAll);
|
Buffer_Summary buffer = get_buffer_by_name(app, loc.file.str, loc.file.size, AccessAll);
|
||||||
|
|
||||||
if (buffer.exists){
|
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){
|
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;
|
int32_t result = false;
|
||||||
|
|
||||||
Name_Line_Column_Location location = {0};
|
Name_Line_Column_Location location = {};
|
||||||
int32_t line = view->cursor.line;
|
int32_t line = view->cursor.line;
|
||||||
int32_t colon_index = 0;
|
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)){
|
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){
|
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;
|
bool32 result = true;
|
||||||
|
|
||||||
Name_Line_Column_Location location = {0};
|
Name_Line_Column_Location location = {};
|
||||||
ID_Line_Column_Jump_Location jump = {0};
|
ID_Line_Column_Jump_Location jump = {};
|
||||||
int32_t line = 0;
|
int32_t line = 0;
|
||||||
int32_t colon_index = 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);
|
View_Summary view = get_view_for_locked_jump_buffer(app);
|
||||||
if (view.exists){
|
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)){
|
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)){
|
if (get_jump_buffer(app, &buffer, &location)){
|
||||||
View_Summary target_view = get_active_view(app, AccessAll);
|
View_Summary target_view = get_active_view(app, AccessAll);
|
||||||
if (target_view.view_id == view.view_id){
|
if (target_view.view_id == view.view_id){
|
||||||
|
|
|
@ -11,7 +11,7 @@ distribute, and modify this file as you see fit.
|
||||||
|
|
||||||
inline Partition
|
inline Partition
|
||||||
make_part(void *memory, i32_4tech size){
|
make_part(void *memory, i32_4tech size){
|
||||||
Partition partition = {0};
|
Partition partition = {};
|
||||||
partition.base = (char*)memory;
|
partition.base = (char*)memory;
|
||||||
partition.pos = 0;
|
partition.pos = 0;
|
||||||
partition.max = size;
|
partition.max = size;
|
||||||
|
@ -65,9 +65,7 @@ partition_sub_part(Partition *data, i32_4tech size){
|
||||||
return(result);
|
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_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)
|
#define push_align(part, b) partition_align(part, b)
|
||||||
|
|
||||||
inline Temp_Memory
|
inline Temp_Memory
|
||||||
|
@ -85,7 +83,7 @@ end_temp_memory(Temp_Memory temp){
|
||||||
|
|
||||||
inline Tail_Temp_Partition
|
inline Tail_Temp_Partition
|
||||||
begin_tail_part(Partition *data, i32_4tech size){
|
begin_tail_part(Partition *data, i32_4tech size){
|
||||||
Tail_Temp_Partition result = {0};
|
Tail_Temp_Partition result = {};
|
||||||
if (data->pos + size <= data->max){
|
if (data->pos + size <= data->max){
|
||||||
result.handle = data;
|
result.handle = data;
|
||||||
result.old_max = data->max;
|
result.old_max = data->max;
|
||||||
|
|
|
@ -65,7 +65,7 @@ typedef struct String{
|
||||||
i32_4tech memory_size;
|
i32_4tech memory_size;
|
||||||
} String;
|
} String;
|
||||||
|
|
||||||
static String null_string = {0};
|
static String null_string = {};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(FCODER_STRING_H)
|
#if !defined(FCODER_STRING_H)
|
||||||
|
@ -551,7 +551,7 @@ substr(String str, i32_4tech start, i32_4tech size)
|
||||||
FSTRING_LINK String
|
FSTRING_LINK String
|
||||||
skip_whitespace(String str)
|
skip_whitespace(String str)
|
||||||
{
|
{
|
||||||
String result = {0};
|
String result = {};
|
||||||
i32_4tech i = 0;
|
i32_4tech i = 0;
|
||||||
for (; i < str.size && char_is_whitespace(str.str[i]); ++i);
|
for (; i < str.size && char_is_whitespace(str.str[i]); ++i);
|
||||||
result = substr(str, i, str.size - i);
|
result = substr(str, i, str.size - i);
|
||||||
|
@ -564,7 +564,7 @@ skip_whitespace(String str)
|
||||||
FSTRING_LINK String
|
FSTRING_LINK String
|
||||||
skip_whitespace_measure(String str, i32_4tech *skip_length)
|
skip_whitespace_measure(String str, i32_4tech *skip_length)
|
||||||
{
|
{
|
||||||
String result = {0};
|
String result = {};
|
||||||
i32_4tech i = 0;
|
i32_4tech i = 0;
|
||||||
for (; i < str.size && char_is_whitespace(str.str[i]); ++i);
|
for (; i < str.size && char_is_whitespace(str.str[i]); ++i);
|
||||||
result = substr(str, i, str.size - i);
|
result = substr(str, i, str.size - i);
|
||||||
|
@ -577,7 +577,7 @@ skip_whitespace_measure(String str, i32_4tech *skip_length)
|
||||||
FSTRING_LINK String
|
FSTRING_LINK String
|
||||||
chop_whitespace(String str)
|
chop_whitespace(String str)
|
||||||
{
|
{
|
||||||
String result = {0};
|
String result = {};
|
||||||
i32_4tech i = str.size;
|
i32_4tech i = str.size;
|
||||||
for (; i > 0 && char_is_whitespace(str.str[i-1]); --i);
|
for (; i > 0 && char_is_whitespace(str.str[i-1]); --i);
|
||||||
result = substr(str, 0, i);
|
result = substr(str, 0, i);
|
||||||
|
@ -1863,7 +1863,7 @@ typedef struct Float_To_Str_Variables{
|
||||||
|
|
||||||
static Float_To_Str_Variables
|
static Float_To_Str_Variables
|
||||||
get_float_vars(float x){
|
get_float_vars(float x){
|
||||||
Float_To_Str_Variables vars = {0};
|
Float_To_Str_Variables vars = {};
|
||||||
|
|
||||||
if (x < 0){
|
if (x < 0){
|
||||||
vars.negative = 1;
|
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)
|
#if defined(FSTRING_IMPLEMENTATION)
|
||||||
FSTRING_LINK String
|
FSTRING_LINK String
|
||||||
get_first_double_line(String source){
|
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 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"));
|
i32_4tech pos1 = find_substr_s(source, 0, make_lit_string("\r\n\r\n"));
|
||||||
if (pos1 < pos0){
|
if (pos1 < pos0){
|
||||||
|
@ -2233,7 +2233,7 @@ get_first_double_line(String source){
|
||||||
#if defined(FSTRING_IMPLEMENTATION)
|
#if defined(FSTRING_IMPLEMENTATION)
|
||||||
FSTRING_LINK String
|
FSTRING_LINK String
|
||||||
get_next_double_line(String source, String line){
|
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 pos = (i32_4tech)(line.str - source.str) + line.size;
|
||||||
i32_4tech start = 0, pos0 = 0, pos1 = 0;
|
i32_4tech start = 0, pos0 = 0, pos1 = 0;
|
||||||
|
|
||||||
|
@ -2259,7 +2259,7 @@ get_next_double_line(String source, String line){
|
||||||
FSTRING_LINK String
|
FSTRING_LINK String
|
||||||
get_next_word(String source, String prev_word){
|
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 pos0 = (i32_4tech)(prev_word.str - source.str) + prev_word.size;
|
||||||
i32_4tech pos1 = 0;
|
i32_4tech pos1 = 0;
|
||||||
char c = 0;
|
char c = 0;
|
||||||
|
|
|
@ -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_null_terminated)
|
||||||
DOC_SEE(cpp_get_table_memory_size_string_lengths)
|
DOC_SEE(cpp_get_table_memory_size_string_lengths)
|
||||||
*/{
|
*/{
|
||||||
Cpp_Keyword_Table table = {0};
|
Cpp_Keyword_Table table = {};
|
||||||
table.mem = memory;
|
table.mem = memory;
|
||||||
table.memsize = memsize;
|
table.memsize = memsize;
|
||||||
table.keywords = (u64_4tech*)memory;
|
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_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.tokens = (Cpp_Token*)malloc(1 << 20); // hopefully big enough
|
||||||
array.max_count = (1 << 20)/sizeof(Cpp_Token);
|
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.)
|
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.ignore_string_delims = (b8_4tech)ignore_string_delims;
|
||||||
data.keyword_table = keywords;
|
data.keyword_table = keywords;
|
||||||
data.preprops_table = preprocessor_words;
|
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.)
|
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.)
|
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_Relex_Range range = {};
|
||||||
Cpp_Get_Token_Result get_result = {0};
|
Cpp_Get_Token_Result get_result = {};
|
||||||
|
|
||||||
get_result = cpp_get_token(*array, start_pos);
|
get_result = cpp_get_token(*array, start_pos);
|
||||||
range.start_token_index = get_result.token_index-1;
|
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)
|
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);
|
Cpp_Relex_Range range = cpp_get_relex_range(array, start_pos, end_pos);
|
||||||
state.start_token_index = range.start_token_index;
|
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_Word_Table_Type)
|
||||||
DOC_SEE(cpp_make_table)
|
DOC_SEE(cpp_make_table)
|
||||||
*/{
|
*/{
|
||||||
Cpp_Keyword_Table result = {0};
|
Cpp_Keyword_Table result = {};
|
||||||
umem_4tech size = cpp_get_table_memory_size_default(type);
|
umem_4tech size = cpp_get_table_memory_size_default(type);
|
||||||
if (size > 0){
|
if (size > 0){
|
||||||
void *mem = malloc((size_t)size);
|
void *mem = malloc((size_t)size);
|
||||||
|
|
|
@ -279,7 +279,7 @@ STRUCT Cpp_Token_Array{
|
||||||
int32_t max_count;
|
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(Cpp_Get_Token_Result is the return result of the cpp_get_token call.)
|
||||||
DOC_SEE(cpp_get_token) */
|
DOC_SEE(cpp_get_token) */
|
||||||
|
@ -312,7 +312,7 @@ struct Cpp_Lex_FSM{
|
||||||
uint8_t emit_token;
|
uint8_t emit_token;
|
||||||
uint8_t flags;
|
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(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)
|
DOC_SEE(cpp_make_token_array)
|
||||||
|
|
|
@ -287,7 +287,7 @@ CUSTOM_DOC("A lister mode command that handles input for the fixed sure to kill
|
||||||
|
|
||||||
static Lister_Handlers
|
static Lister_Handlers
|
||||||
lister_get_default_handlers(void){
|
lister_get_default_handlers(void){
|
||||||
Lister_Handlers handlers = {0};
|
Lister_Handlers handlers = {};
|
||||||
handlers.write_character = lister__write_character__default;
|
handlers.write_character = lister__write_character__default;
|
||||||
handlers.backspace = lister__backspace_text_field__default;
|
handlers.backspace = lister__backspace_text_field__default;
|
||||||
handlers.navigate_up = lister__move_up__default;
|
handlers.navigate_up = lister__move_up__default;
|
||||||
|
@ -297,7 +297,7 @@ lister_get_default_handlers(void){
|
||||||
|
|
||||||
static Lister_Handlers
|
static Lister_Handlers
|
||||||
lister_get_fixed_list_handlers(void){
|
lister_get_fixed_list_handlers(void){
|
||||||
Lister_Handlers handlers = {0};
|
Lister_Handlers handlers = {};
|
||||||
handlers.write_character = lister__write_character__fixed_list;
|
handlers.write_character = lister__write_character__fixed_list;
|
||||||
handlers.backspace = 0;
|
handlers.backspace = 0;
|
||||||
handlers.navigate_up = lister__move_up__default;
|
handlers.navigate_up = lister__move_up__default;
|
||||||
|
@ -452,7 +452,7 @@ begin_integrated_lister__ui_list(Application_Links *app, char *query_string,
|
||||||
|
|
||||||
static void
|
static void
|
||||||
generate_all_buffers_list__output_buffer(Partition *arena, Lister *lister, Buffer_Summary buffer){
|
generate_all_buffers_list__output_buffer(Partition *arena, Lister *lister, Buffer_Summary buffer){
|
||||||
String status = {0};
|
String status = {};
|
||||||
switch (buffer.dirty){
|
switch (buffer.dirty){
|
||||||
case DirtyState_UnsavedChanges: status = make_lit_string("*"); break;
|
case DirtyState_UnsavedChanges: status = make_lit_string("*"); break;
|
||||||
case DirtyState_UnloadedChanges: 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);
|
lister_begin_new_item_set(lister);
|
||||||
String hot = get_hot_directory(app, arena);
|
String hot = get_hot_directory(app, arena);
|
||||||
push_align(arena, 8);
|
push_align(arena, 8);
|
||||||
File_List file_list = {0};
|
File_List file_list = {};
|
||||||
if (hot.str != 0){
|
if (hot.str != 0){
|
||||||
file_list = get_file_list(app, hot.str, hot.size);
|
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 = "";
|
char *status_flag = "";
|
||||||
|
|
||||||
Temp_Memory path_temp = begin_temp_memory(arena);
|
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.size = 0;
|
||||||
full_file_path.memory_size = hot.size + 1 + info->filename_len + 1;
|
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);
|
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,
|
View_Summary *view, struct Lister_State *state,
|
||||||
String text_field, void *user_data, bool32 clicked){
|
String text_field, void *user_data, bool32 clicked){
|
||||||
Lister_Activation_Code result = 0;
|
Lister_Activation_Code result = 0;
|
||||||
String file_name = {0};
|
String file_name = {};
|
||||||
if (user_data == 0){
|
if (user_data == 0){
|
||||||
file_name = front_of_directory(text_field);
|
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,
|
View_Summary *view, struct Lister_State *state,
|
||||||
String text_field, void *user_data, bool32 clicked){
|
String text_field, void *user_data, bool32 clicked){
|
||||||
Lister_Activation_Code result = 0;
|
Lister_Activation_Code result = 0;
|
||||||
String file_name = {0};
|
String file_name = {};
|
||||||
if (user_data != 0){
|
if (user_data != 0){
|
||||||
file_name = make_string_slowly((char*)user_data);
|
file_name = make_string_slowly((char*)user_data);
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ line_column_coordinates(String text, int32_t pos){
|
||||||
pos = text.size;
|
pos = text.size;
|
||||||
}
|
}
|
||||||
|
|
||||||
Line_Column_Coordinates coords = {0};
|
Line_Column_Coordinates coords = {};
|
||||||
coords.line = 1;
|
coords.line = 1;
|
||||||
coords.column = 1;
|
coords.column = 1;
|
||||||
char *end = text.str + pos;
|
char *end = text.str + pos;
|
||||||
|
@ -79,7 +79,7 @@ struct Temp_Read{
|
||||||
|
|
||||||
static Reader
|
static Reader
|
||||||
make_reader(Cpp_Token_Array array, char *source_name, String text){
|
make_reader(Cpp_Token_Array array, char *source_name, String text){
|
||||||
Reader reader = {0};
|
Reader reader = {};
|
||||||
reader.tokens = array;
|
reader.tokens = array;
|
||||||
reader.ptr = array.tokens;
|
reader.ptr = array.tokens;
|
||||||
reader.source_name = source_name;
|
reader.source_name = source_name;
|
||||||
|
@ -89,7 +89,7 @@ make_reader(Cpp_Token_Array array, char *source_name, String text){
|
||||||
|
|
||||||
static Cpp_Token
|
static Cpp_Token
|
||||||
prev_token(Reader *reader){
|
prev_token(Reader *reader){
|
||||||
Cpp_Token result = {0};
|
Cpp_Token result = {};
|
||||||
|
|
||||||
for (;;){
|
for (;;){
|
||||||
if (reader->ptr > reader->tokens.tokens + reader->tokens.count){
|
if (reader->ptr > reader->tokens.tokens + reader->tokens.count){
|
||||||
|
@ -116,7 +116,7 @@ prev_token(Reader *reader){
|
||||||
|
|
||||||
static Cpp_Token
|
static Cpp_Token
|
||||||
get_token(Reader *reader){
|
get_token(Reader *reader){
|
||||||
Cpp_Token result = {0};
|
Cpp_Token result = {};
|
||||||
|
|
||||||
for (;;){
|
for (;;){
|
||||||
if (reader->ptr < reader->tokens.tokens){
|
if (reader->ptr < reader->tokens.tokens){
|
||||||
|
@ -144,7 +144,7 @@ get_token(Reader *reader){
|
||||||
|
|
||||||
static Cpp_Token
|
static Cpp_Token
|
||||||
peek_token(Reader *reader){
|
peek_token(Reader *reader){
|
||||||
Cpp_Token result = {0};
|
Cpp_Token result = {};
|
||||||
|
|
||||||
if (reader->ptr < reader->tokens.tokens){
|
if (reader->ptr < reader->tokens.tokens){
|
||||||
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
|
static Temp_Read
|
||||||
begin_temp_read(Reader *reader){
|
begin_temp_read(Reader *reader){
|
||||||
Temp_Read temp = {0};
|
Temp_Read temp = {};
|
||||||
temp.reader = reader;
|
temp.reader = reader;
|
||||||
temp.pos = reader->ptr;
|
temp.pos = reader->ptr;
|
||||||
return(temp);
|
return(temp);
|
||||||
|
@ -466,10 +466,10 @@ extract_string(Reader *reader, String *str_out, int32_t *opt_pos_out = 0){
|
||||||
|
|
||||||
static bool32
|
static bool32
|
||||||
parse_documented_command(Partition *part, Meta_Command_Entry_Arrays *arrays, Reader *reader){
|
parse_documented_command(Partition *part, Meta_Command_Entry_Arrays *arrays, Reader *reader){
|
||||||
String name = {0};
|
String name = {};
|
||||||
String file_name = {0};
|
String file_name = {};
|
||||||
String line_number = {0};
|
String line_number = {};
|
||||||
String doc = {0};
|
String doc = {};
|
||||||
|
|
||||||
// Getting the command's name
|
// Getting the command's name
|
||||||
int32_t start_pos = 0;
|
int32_t start_pos = 0;
|
||||||
|
@ -552,8 +552,8 @@ parse_documented_command(Partition *part, Meta_Command_Entry_Arrays *arrays, Rea
|
||||||
|
|
||||||
static bool32
|
static bool32
|
||||||
parse_alias(Partition *part, Meta_Command_Entry_Arrays *arrays, Reader *reader){
|
parse_alias(Partition *part, Meta_Command_Entry_Arrays *arrays, Reader *reader){
|
||||||
String name = {0};
|
String name = {};
|
||||||
String potential = {0};
|
String potential = {};
|
||||||
|
|
||||||
// Getting the alias's name
|
// Getting the alias's name
|
||||||
int32_t start_pos = 0;
|
int32_t start_pos = 0;
|
||||||
|
@ -765,7 +765,7 @@ main(int argc, char **argv){
|
||||||
start_i = 3;
|
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){
|
for (int32_t i = start_i; i < argc; ++i){
|
||||||
Filename_Character *pattern_name = encode(part, argv[i]);
|
Filename_Character *pattern_name = encode(part, argv[i]);
|
||||||
parse_files_by_pattern(part, &entry_arrays, pattern_name, recursive);
|
parse_files_by_pattern(part, &entry_arrays, pattern_name, recursive);
|
||||||
|
|
|
@ -14,7 +14,7 @@ get_numeric_string_at_cursor(Application_Links *app, Buffer_Summary *buffer, int
|
||||||
if (char_is_numeric(current)){
|
if (char_is_numeric(current)){
|
||||||
char chunk[1024];
|
char chunk[1024];
|
||||||
int32_t chunk_size = sizeof(chunk);
|
int32_t chunk_size = sizeof(chunk);
|
||||||
Stream_Chunk stream = {0};
|
Stream_Chunk stream = {};
|
||||||
|
|
||||||
int32_t pos = start_pos;
|
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);
|
View_Summary view = get_active_view(app, AccessOpen);
|
||||||
Buffer_Summary buffer = get_buffer(app, view.buffer_id, 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)){
|
if (get_numeric_at_cursor(app, &buffer, view.cursor.pos, &number)){
|
||||||
char str_space[1024];
|
char str_space[1024];
|
||||||
String str = make_fixed_width_string(str_space);
|
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);
|
View_Summary view = get_active_view(app, AccessOpen);
|
||||||
Buffer_Summary buffer = get_buffer(app, view.buffer_id, 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)){
|
if (get_numeric_at_cursor(app, &buffer, view.cursor.pos, &number)){
|
||||||
char str_space[1024];
|
char str_space[1024];
|
||||||
String str = make_fixed_width_string(str_space);
|
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 == ':'){
|
if (char_is_numeric(current) || current == ':'){
|
||||||
char chunk[1024];
|
char chunk[1024];
|
||||||
int32_t chunk_size = sizeof(chunk);
|
int32_t chunk_size = sizeof(chunk);
|
||||||
Stream_Chunk stream = {0};
|
Stream_Chunk stream = {};
|
||||||
|
|
||||||
int32_t pos = start_pos;
|
int32_t pos = start_pos;
|
||||||
|
|
||||||
|
@ -188,7 +188,7 @@ struct Miblo_Timestamp{
|
||||||
int32_t minute;
|
int32_t minute;
|
||||||
int32_t hour;
|
int32_t hour;
|
||||||
};
|
};
|
||||||
static Miblo_Timestamp null_miblo_timestamp = {0};
|
static Miblo_Timestamp null_miblo_timestamp = {};
|
||||||
|
|
||||||
enum{
|
enum{
|
||||||
MIBLO_SECOND,
|
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){
|
if (count_colons == 1 || count_colons == 2){
|
||||||
Miblo_Timestamp t = {0};
|
Miblo_Timestamp t = {};
|
||||||
|
|
||||||
int32_t success = 0;
|
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);
|
View_Summary view = get_active_view(app, AccessOpen);
|
||||||
Buffer_Summary buffer = get_buffer(app, view.buffer_id, 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, ×tamp)){
|
if (get_timestamp_at_cursor(app, &buffer, view.cursor.pos, ×tamp)){
|
||||||
char str_space[1024];
|
char str_space[1024];
|
||||||
String str = make_fixed_width_string(str_space);
|
String str = make_fixed_width_string(str_space);
|
||||||
|
|
|
@ -4,14 +4,14 @@
|
||||||
|
|
||||||
// TOP
|
// TOP
|
||||||
|
|
||||||
static Project current_project = {0};
|
static Project current_project = {};
|
||||||
static Partition current_project_arena = {0};
|
static Partition current_project_arena = {};
|
||||||
|
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
|
|
||||||
static Project_File_Pattern_Array
|
static Project_File_Pattern_Array
|
||||||
get_pattern_array_from_cstring_array(Partition *arena, CString_Array list){
|
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;
|
int32_t count = list.count;
|
||||||
array.patterns = push_array(arena, Project_File_Pattern, count);
|
array.patterns = push_array(arena, Project_File_Pattern, count);
|
||||||
array.count = count;
|
array.count = count;
|
||||||
|
@ -28,7 +28,7 @@ get_pattern_array_from_cstring_array(Partition *arena, CString_Array list){
|
||||||
|
|
||||||
static Project_File_Pattern_Array
|
static Project_File_Pattern_Array
|
||||||
get_pattern_array_from_extension_list(Partition *arena, Extension_List extension_list){
|
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.strings = extension_list.exts;
|
||||||
list.count = extension_list.count;
|
list.count = extension_list.count;
|
||||||
return(get_pattern_array_from_cstring_array(arena, list));
|
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;
|
do_repeat = 0;
|
||||||
|
|
||||||
uint32_t access = AccessAll;
|
uint32_t access = AccessAll;
|
||||||
Buffer_Summary buffer = {0};
|
Buffer_Summary buffer = {};
|
||||||
for (buffer = get_buffer_first(app, access);
|
for (buffer = get_buffer_first(app, access);
|
||||||
buffer.exists;
|
buffer.exists;
|
||||||
get_buffer_next(app, &buffer, access)){
|
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
|
static Project_File_Pattern_Array
|
||||||
get_standard_blacklist(Partition *arena){
|
get_standard_blacklist(Partition *arena){
|
||||||
static char *dot_str = ".*";
|
static char *dot_str = ".*";
|
||||||
CString_Array black_array = {0};
|
CString_Array black_array = {};
|
||||||
black_array.strings = &dot_str;
|
black_array.strings = &dot_str;
|
||||||
black_array.count = 1;
|
black_array.count = 1;
|
||||||
return(get_pattern_array_from_cstring_array(arena, black_array));
|
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
|
// Read the settings from project.4coder
|
||||||
String str = {0};
|
String str = {};
|
||||||
if (config_string_var(parsed, "extensions", 0, &str)){
|
if (config_string_var(parsed, "extensions", 0, &str)){
|
||||||
Extension_List extension_list;
|
Extension_List extension_list;
|
||||||
parse_extension_line_to_extension_list(str, &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);
|
append_int_to_str(&command->name, j);
|
||||||
terminate_with_null(&command->name);
|
terminate_with_null(&command->name);
|
||||||
|
|
||||||
String cmd = {0};
|
String cmd = {};
|
||||||
if (config_compound_string_member(parsed, compound, "cmd", 0, &cmd)){
|
if (config_compound_string_member(parsed, compound, "cmd", 0, &cmd)){
|
||||||
command->cmd = push_string_copy(arena, cmd);
|
command->cmd = push_string_copy(arena, cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
String out = {0};
|
String out = {};
|
||||||
if (config_compound_string_member(parsed, compound, "out", 1, &out)){
|
if (config_compound_string_member(parsed, compound, "out", 1, &out)){
|
||||||
command->out = push_string_copy(arena, 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
|
// project_name
|
||||||
{
|
{
|
||||||
String str = {0};
|
String str = {};
|
||||||
if (config_string_var(parsed, "project_name", 0, &str)){
|
if (config_string_var(parsed, "project_name", 0, &str)){
|
||||||
project->name = push_string_copy(arena, 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;
|
Config_Compound *paths = 0;
|
||||||
if (config_compound_compound_member(parsed, paths_option, "paths", 0, &paths)){
|
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)){
|
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));
|
Project_OS_Match_Level r = parse_project__version_1__os_match(str, make_lit_string(PlatformName));
|
||||||
if (r == ProjectOSMatchLevel_ActiveMatch){
|
if (r == ProjectOSMatchLevel_ActiveMatch){
|
||||||
|
@ -411,7 +411,7 @@ parse_project__config_data__version_1(Partition *arena, String root_dir, Config
|
||||||
dst->recursive = true;
|
dst->recursive = true;
|
||||||
dst->relative = true;
|
dst->relative = true;
|
||||||
|
|
||||||
String str = {0};
|
String str = {};
|
||||||
if (config_compound_string_member(parsed, src, "path", 0, &str)){
|
if (config_compound_string_member(parsed, src, "path", 0, &str)){
|
||||||
dst->path = push_string_copy(arena, 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;
|
bool32 can_emit_command = true;
|
||||||
|
|
||||||
String name = {0};
|
String name = {};
|
||||||
Config_Get_Result cmd_result = {0};
|
Config_Get_Result cmd_result = {};
|
||||||
Config_Compound *cmd_set = 0;
|
Config_Compound *cmd_set = 0;
|
||||||
char *cmd_pos = 0;
|
char *cmd_pos = 0;
|
||||||
String cmd_str = {0};
|
String cmd_str = {};
|
||||||
String out = {0};
|
String out = {};
|
||||||
bool32 footer_panel = false;
|
bool32 footer_panel = false;
|
||||||
bool32 save_dirty_files = true;
|
bool32 save_dirty_files = true;
|
||||||
bool32 cursor_at_end = false;
|
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;
|
Config_Compound *cmd_option = result.get.compound;
|
||||||
|
|
||||||
String cmd = {0};
|
String cmd = {};
|
||||||
if (config_compound_string_member(parsed, cmd_option, "cmd", 0, &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)){
|
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));
|
Project_OS_Match_Level r = parse_project__version_1__os_match(str, make_lit_string(PlatformName));
|
||||||
if (r == ProjectOSMatchLevel_ActiveMatch){
|
if (r == ProjectOSMatchLevel_ActiveMatch){
|
||||||
|
@ -528,7 +528,7 @@ parse_project__config_data__version_1(Partition *arena, String root_dir, Config
|
||||||
// fkey_command
|
// fkey_command
|
||||||
{
|
{
|
||||||
for (int32_t i = 1; i <= 16; ++i){
|
for (int32_t i = 1; i <= 16; ++i){
|
||||||
String name = {0};
|
String name = {};
|
||||||
int32_t index = -1;
|
int32_t index = -1;
|
||||||
if (config_string_var(parsed, "fkey_command", i, &name)){
|
if (config_string_var(parsed, "fkey_command", i, &name)){
|
||||||
int32_t count = project->command_array.count;
|
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
|
static Project_Parse_Result
|
||||||
parse_project__data(Partition *arena, String file_name, String data, String file_dir){
|
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);
|
Cpp_Token_Array array = text_data_to_token_array(arena, data);
|
||||||
if (array.tokens != 0){
|
if (array.tokens != 0){
|
||||||
result.parsed = text_data_and_token_array_to_parse_data(arena, file_name, data, array);
|
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
|
static Project_Parse_Result
|
||||||
parse_project__nearest_file(Application_Links *app, Partition *arena){
|
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);
|
Temp_Memory restore_point = begin_temp_memory(arena);
|
||||||
String project_path = {0};
|
String project_path = {};
|
||||||
int32_t size = 32 << 10;
|
int32_t size = 32 << 10;
|
||||||
char *space = push_array(arena, char, size);
|
char *space = push_array(arena, char, size);
|
||||||
if (space != 0){
|
if (space != 0){
|
||||||
|
@ -664,7 +664,7 @@ project_deep_copy__pattern_array(Partition *arena, Project_File_Pattern_Array *s
|
||||||
|
|
||||||
static Project
|
static Project
|
||||||
project_deep_copy__inner(Partition *arena, Project *project){
|
project_deep_copy__inner(Partition *arena, Project *project){
|
||||||
Project result = {0};
|
Project result = {};
|
||||||
|
|
||||||
result.dir = push_string_copy(arena, project->dir);
|
result.dir = push_string_copy(arena, project->dir);
|
||||||
if (result.dir.str == 0){
|
if (result.dir.str == 0){
|
||||||
|
@ -971,9 +971,9 @@ exec_project_command(Application_Links *app, Project_Command *command){
|
||||||
save_all_dirty_buffers(app);
|
save_all_dirty_buffers(app);
|
||||||
}
|
}
|
||||||
|
|
||||||
View_Summary view = {0};
|
View_Summary view = {};
|
||||||
View_Summary *view_ptr = 0;
|
View_Summary *view_ptr = 0;
|
||||||
Buffer_Identifier buffer_id = {0};
|
Buffer_Identifier buffer_id = {};
|
||||||
uint32_t flags = CLI_OverlapWithConflict;
|
uint32_t flags = CLI_OverlapWithConflict;
|
||||||
if (cursor_at_end){
|
if (cursor_at_end){
|
||||||
flags |= CLI_CursorAtEnd;
|
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.")
|
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);
|
User_Input input = get_command_input(app);
|
||||||
if (input.type == UserInputKey){
|
bool32 got_ind = false;
|
||||||
bool32 got_ind = false;
|
int32_t ind = 0;
|
||||||
int32_t ind = 0;
|
if (input.key.keycode >= key_f1 && input.key.keycode <= key_f16){
|
||||||
if (input.key.keycode >= key_f1 && input.key.keycode <= key_f16){
|
ind = (input.key.keycode - key_f1);
|
||||||
ind = (input.key.keycode - key_f1);
|
got_ind = true;
|
||||||
got_ind = true;
|
}
|
||||||
}
|
else if (input.key.character_no_caps_lock >= '1' && input.key.character_no_caps_lock >= '9'){
|
||||||
else if (input.key.character_no_caps_lock >= '1' && input.key.character_no_caps_lock >= '9'){
|
ind = (input.key.character_no_caps_lock - '1');
|
||||||
ind = (input.key.character_no_caps_lock - '1');
|
got_ind = true;
|
||||||
got_ind = true;
|
}
|
||||||
}
|
else if (input.key.character_no_caps_lock == '0'){
|
||||||
else if (input.key.character_no_caps_lock == '0'){
|
ind = 9;
|
||||||
ind = 9;
|
got_ind = true;
|
||||||
got_ind = true;
|
}
|
||||||
}
|
if (got_ind){
|
||||||
if (got_ind){
|
exec_project_fkey_command(app, 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
|
static Project_Setup_Status
|
||||||
project_is_setup(Application_Links *app, Partition *scratch, String script_path, String script_file){
|
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);
|
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 *code_file_space, int32_t code_file_cap,
|
||||||
char *output_dir_space, int32_t output_dir_cap,
|
char *output_dir_space, int32_t output_dir_cap,
|
||||||
char *binary_file_space, int32_t binary_file_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 script_file_bar = {};
|
||||||
Query_Bar code_file_bar = {0};
|
Query_Bar code_file_bar = {};
|
||||||
Query_Bar output_dir_bar = {0};
|
Query_Bar output_dir_bar = {};
|
||||||
Query_Bar binary_file_bar = {0};
|
Query_Bar binary_file_bar = {};
|
||||||
|
|
||||||
if (get_script_file){
|
if (get_script_file){
|
||||||
script_file_bar.prompt = make_lit_string("Script Name: ");
|
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);
|
String script_path = get_hot_directory(app, scratch);
|
||||||
|
|
||||||
bool32 needs_to_do_work = false;
|
bool32 needs_to_do_work = false;
|
||||||
Project_Setup_Status status = {0};
|
Project_Setup_Status status = {};
|
||||||
if (do_project_file){
|
if (do_project_file){
|
||||||
status = project_is_setup(app, scratch, script_path, make_lit_string("build"));
|
status = project_is_setup(app, scratch, script_path, make_lit_string("build"));
|
||||||
needs_to_do_work =
|
needs_to_do_work =
|
||||||
|
|
|
@ -31,7 +31,7 @@ mac_default_keys(Bind_Helper *context){
|
||||||
|
|
||||||
static Bind_Helper
|
static Bind_Helper
|
||||||
get_context_on_global_part(void){
|
get_context_on_global_part(void){
|
||||||
Bind_Helper result = {0};
|
Bind_Helper result = {};
|
||||||
int32_t size = (1 << 20);
|
int32_t size = (1 << 20);
|
||||||
for (;;){
|
for (;;){
|
||||||
void *data = push_array(&global_part, char, size);
|
void *data = push_array(&global_part, char, size);
|
||||||
|
|
|
@ -41,7 +41,7 @@ find_scope_get_token_type(uint32_t flags, Cpp_Token_Type token_type){
|
||||||
|
|
||||||
static bool32
|
static bool32
|
||||||
find_scope_top(Application_Links *app, Buffer_Summary *buffer, int32_t start_pos, uint32_t flags, int32_t *end_pos_out){
|
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;
|
bool32 success = false;
|
||||||
int32_t position = 0;
|
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){
|
if (token_index >= 0){
|
||||||
static const int32_t chunk_cap = 512;
|
static const int32_t chunk_cap = 512;
|
||||||
Cpp_Token chunk[chunk_cap];
|
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;
|
if (init_stream_tokens(&stream, app, buffer, token_index, chunk, chunk_cap)){int32_t nest_level = 0;
|
||||||
bool32 still_looping = false;
|
bool32 still_looping = false;
|
||||||
|
@ -100,7 +100,7 @@ find_scope_top(Application_Links *app, Buffer_Summary *buffer, int32_t start_pos
|
||||||
|
|
||||||
static bool32
|
static bool32
|
||||||
find_scope_bottom(Application_Links *app, Buffer_Summary *buffer, int32_t start_pos, uint32_t flags, int32_t *end_pos_out){
|
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;
|
bool32 success = false;
|
||||||
int32_t position = 0;
|
int32_t position = 0;
|
||||||
|
@ -117,7 +117,7 @@ find_scope_bottom(Application_Links *app, Buffer_Summary *buffer, int32_t start_
|
||||||
if (token_index >= 0){
|
if (token_index >= 0){
|
||||||
static const int32_t chunk_cap = 512;
|
static const int32_t chunk_cap = 512;
|
||||||
Cpp_Token chunk[chunk_cap];
|
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 (init_stream_tokens(&stream, app, buffer, token_index, chunk, chunk_cap)){
|
||||||
int32_t nest_level = 0;
|
int32_t nest_level = 0;
|
||||||
|
@ -160,7 +160,7 @@ find_scope_bottom(Application_Links *app, Buffer_Summary *buffer, int32_t start_
|
||||||
|
|
||||||
static bool32
|
static bool32
|
||||||
find_next_scope(Application_Links *app, Buffer_Summary *buffer, int32_t start_pos, uint32_t flags, int32_t *end_pos_out){
|
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;
|
bool32 success = 0;
|
||||||
int32_t position = 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){
|
if (token_index >= 0){
|
||||||
static const int32_t chunk_cap = 512;
|
static const int32_t chunk_cap = 512;
|
||||||
Cpp_Token chunk[chunk_cap];
|
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 (init_stream_tokens(&stream, app, buffer, token_index, chunk, chunk_cap)){
|
||||||
if (flags & FindScope_NextSibling){
|
if (flags & FindScope_NextSibling){
|
||||||
|
@ -239,7 +239,7 @@ find_next_scope(Application_Links *app, Buffer_Summary *buffer, int32_t start_po
|
||||||
|
|
||||||
static bool32
|
static bool32
|
||||||
find_prev_scope(Application_Links *app, Buffer_Summary *buffer, int32_t start_pos, uint32_t flags, int32_t *end_pos_out){
|
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;
|
bool32 success = 0;
|
||||||
int32_t position = 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){
|
if (token_index >= 0){
|
||||||
static const int32_t chunk_cap = 512;
|
static const int32_t chunk_cap = 512;
|
||||||
Cpp_Token chunk[chunk_cap];
|
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 (init_stream_tokens(&stream, app, buffer, token_index, chunk, chunk_cap)){
|
||||||
if (flags & FindScope_NextSibling){
|
if (flags & FindScope_NextSibling){
|
||||||
|
@ -318,7 +318,7 @@ find_prev_scope(Application_Links *app, Buffer_Summary *buffer, int32_t start_po
|
||||||
static bool32
|
static bool32
|
||||||
find_scope_range(Application_Links *app, Buffer_Summary *buffer, int32_t start_pos, Range *range_out,
|
find_scope_range(Application_Links *app, Buffer_Summary *buffer, int32_t start_pos, Range *range_out,
|
||||||
uint32_t flags){
|
uint32_t flags){
|
||||||
Range range = {0};
|
Range range = {};
|
||||||
if (find_scope_top(app, buffer, start_pos,
|
if (find_scope_top(app, buffer, start_pos,
|
||||||
FindScope_Parent|flags,
|
FindScope_Parent|flags,
|
||||||
&range.start)){
|
&range.start)){
|
||||||
|
@ -340,8 +340,8 @@ view_set_to_region(Application_Links *app, View_Summary *view, int32_t major_pos
|
||||||
bottom_major = true;
|
bottom_major = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Full_Cursor top = {0};
|
Full_Cursor top = {};
|
||||||
Full_Cursor bottom = {0};
|
Full_Cursor bottom = {};
|
||||||
if (view_compute_cursor(app, view, seek_pos(range.min), &top)){
|
if (view_compute_cursor(app, view, seek_pos(range.min), &top)){
|
||||||
if (view_compute_cursor(app, view, seek_pos(range.max), &bottom)){
|
if (view_compute_cursor(app, view, seek_pos(range.max), &bottom)){
|
||||||
float top_y = top.wrapped_y;
|
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);
|
View_Summary view = get_active_view(app, access);
|
||||||
Buffer_Summary buffer = get_buffer(app, view.buffer_id, 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)){
|
if (find_scope_range(app, &buffer, view.cursor.pos, &range, FindScope_Brace)){
|
||||||
view_set_cursor(app, &view, seek_pos(range.first), true);
|
view_set_cursor(app, &view, seek_pos(range.first), true);
|
||||||
view_set_mark(app, &view, seek_pos(range.end));
|
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);
|
View_Summary view = get_active_view(app, AccessOpen);
|
||||||
Buffer_Summary buffer = get_buffer(app, view.buffer_id, AccessOpen);
|
Buffer_Summary buffer = get_buffer(app, view.buffer_id, AccessOpen);
|
||||||
|
|
||||||
Range lines = {0};
|
Range lines = {};
|
||||||
Range range = get_view_range(&view);
|
Range range = get_view_range(&view);
|
||||||
lines.min = buffer_get_line_number(app, &buffer, range.min);
|
lines.min = buffer_get_line_number(app, &buffer, range.min);
|
||||||
lines.max = buffer_get_line_number(app, &buffer, range.max);
|
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 start = pos;
|
||||||
int32_t end = start;
|
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)){
|
if (buffer_get_token_index(app, buffer, pos, &get_result)){
|
||||||
Statement_Parser parser = {0};
|
Statement_Parser parser = {};
|
||||||
parser.token_index = get_result.token_index;
|
parser.token_index = get_result.token_index;
|
||||||
|
|
||||||
if (parser.token_index < 0){
|
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)){
|
if (init_stream_tokens(&parser.stream, app, buffer, parser.token_index, chunk, chunk_cap)){
|
||||||
parser.buffer = buffer;
|
parser.buffer = buffer;
|
||||||
|
|
||||||
Cpp_Token end_token = {0};
|
Cpp_Token end_token = {};
|
||||||
if (parse_statement_down(app, &parser, &end_token)){
|
if (parse_statement_down(app, &parser, &end_token)){
|
||||||
end = end_token.start + end_token.size;
|
end = end_token.start + end_token.size;
|
||||||
result = true;
|
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);
|
Temp_Memory temp = begin_temp_memory(part);
|
||||||
if (buffer_get_char(app, &buffer, top) == '{' && buffer_get_char(app, &buffer, bottom-1) == '}'){
|
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)){
|
if (find_whole_statement_down(app, &buffer, bottom, &range.start, &range.end)){
|
||||||
char *string_space = push_array(part, char, range.end - range.start);
|
char *string_space = push_array(part, char, range.end - range.start);
|
||||||
buffer_read_range(app, &buffer, range.start, range.end, string_space);
|
buffer_read_range(app, &buffer, range.start, range.end, string_space);
|
||||||
|
|
|
@ -137,7 +137,7 @@ search_hit_add(Heap *heap, Table *hits, String_Space *space, char *str, int32_t
|
||||||
Assert(ostring.size != 0);
|
Assert(ostring.size != 0);
|
||||||
|
|
||||||
if (table_at_capacity(hits)){
|
if (table_at_capacity(hits)){
|
||||||
Table new_hits = {0};
|
Table new_hits = {};
|
||||||
search_hits_table_alloc(heap, &new_hits, hits->max*2);
|
search_hits_table_alloc(heap, &new_hits, hits->max*2);
|
||||||
table_clear(&new_hits);
|
table_clear(&new_hits);
|
||||||
table_rehash(hits, &new_hits, space->space, tbl_offset_string_hash, tbl_offset_string_compare);
|
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
|
static int32_t
|
||||||
buffer_seek_alpha_numeric_end(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
|
buffer_seek_alpha_numeric_end(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
|
||||||
char space[1024];
|
char space[1024];
|
||||||
Stream_Chunk chunk = {0};
|
Stream_Chunk chunk = {};
|
||||||
if (init_stream_chunk(&chunk, app, buffer, pos, space, sizeof(space))){
|
if (init_stream_chunk(&chunk, app, buffer, pos, space, sizeof(space))){
|
||||||
int32_t still_looping = true;
|
int32_t still_looping = true;
|
||||||
do{
|
do{
|
||||||
|
@ -378,7 +378,7 @@ search_iter_next_range(Search_Iter *it){
|
||||||
|
|
||||||
static Search_Match
|
static Search_Match
|
||||||
search_next_match(Application_Links *app, Search_Set *set, Search_Iter *it_ptr){
|
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;
|
Search_Iter iter = *it_ptr;
|
||||||
|
|
||||||
int32_t count = set->count;
|
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:
|
case SearchRange_Wave:
|
||||||
{
|
{
|
||||||
Search_Match forward_match = {0};
|
Search_Match forward_match = {};
|
||||||
Search_Match backward_match = {0};
|
Search_Match backward_match = {};
|
||||||
|
|
||||||
int32_t forward_result = FindResult_PastEnd;
|
int32_t forward_result = FindResult_PastEnd;
|
||||||
int32_t backward_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(set, 0, sizeof(*set));
|
||||||
memset(iter, 0, sizeof(*iter));
|
memset(iter, 0, sizeof(*iter));
|
||||||
|
|
||||||
Search_Key key = {0};
|
Search_Key key = {};
|
||||||
int32_t sizes[ArrayCount(key.words)];
|
int32_t sizes[ArrayCount(key.words)];
|
||||||
memset(sizes, 0, sizeof(sizes));
|
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);
|
int32_t column_num_len = int_to_str_size(word_pos.character);
|
||||||
|
|
||||||
Temp_Memory line_temp = begin_temp_memory(line_part);
|
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)){
|
if (read_line(app, line_part, match_buffer, word_pos.line, &line_str)){
|
||||||
line_str = skip_chop_whitespace(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);
|
Buffer_Summary search_buffer = get_buffer(app, search_buffer_id, AccessAll);
|
||||||
|
|
||||||
// Initialize a generic search all buffers
|
// Initialize a generic search all buffers
|
||||||
Search_Set set = {0};
|
Search_Set set = {};
|
||||||
Search_Iter iter = {0};
|
Search_Iter iter = {};
|
||||||
initialize_generic_search_all_buffers(app, heap, strings, count, match_flags, &search_buffer.buffer_id, 1, &set, &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
|
// 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);
|
for (Search_Match match = search_next_match(app, &set, &iter);
|
||||||
match.found_match;
|
match.found_match;
|
||||||
match = search_next_match(app, &set, &iter)){
|
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 (buffer_compute_cursor(app, &match.buffer, seek_pos(match.start), &word_pos)){
|
||||||
if (prev_match_id != match.buffer.buffer_id){
|
if (prev_match_id != match.buffer.buffer_id){
|
||||||
if (prev_match_id != 0){
|
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
|
// Word Complete Command
|
||||||
//
|
//
|
||||||
|
|
||||||
static Word_Complete_State complete_state = {0};
|
static Word_Complete_State complete_state = {};
|
||||||
|
|
||||||
CUSTOM_COMMAND_SIG(word_complete)
|
CUSTOM_COMMAND_SIG(word_complete)
|
||||||
CUSTOM_DOC("Iteratively tries completing the word to the left of the cursor with other words in open buffers that have the same prefix string.")
|
CUSTOM_DOC("Iteratively tries completing the word to the left of the cursor with other words in open buffers that have the same prefix string.")
|
||||||
|
@ -889,7 +889,7 @@ CUSTOM_DOC("Iteratively tries completing the word to the left of the cursor with
|
||||||
cursor_pos = word_end - 1;
|
cursor_pos = word_end - 1;
|
||||||
|
|
||||||
char space[1024];
|
char space[1024];
|
||||||
Stream_Chunk chunk = {0};
|
Stream_Chunk chunk = {};
|
||||||
if (init_stream_chunk(&chunk, app, &buffer, cursor_pos, space, sizeof(space))){
|
if (init_stream_chunk(&chunk, app, &buffer, cursor_pos, space, sizeof(space))){
|
||||||
int32_t still_looping = true;
|
int32_t still_looping = true;
|
||||||
do{
|
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.
|
// NOTE(allen): Initialize the search iterator with the partial word.
|
||||||
complete_state.initialized = true;
|
complete_state.initialized = true;
|
||||||
Search_Key key = {0};
|
Search_Key key = {};
|
||||||
search_key_alloc(&global_heap, &key, &size, 1);
|
search_key_alloc(&global_heap, &key, &size, 1);
|
||||||
buffer_read_range(app, &buffer, word_start, word_end, key.words[0].str);
|
buffer_read_range(app, &buffer, word_start, word_end, key.words[0].str);
|
||||||
key.words[0].size = size;
|
key.words[0].size = size;
|
||||||
|
|
|
@ -8,7 +8,7 @@ static int32_t
|
||||||
seek_line_end(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
|
seek_line_end(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
|
||||||
char chunk[1024];
|
char chunk[1024];
|
||||||
int32_t chunk_size = sizeof(chunk);
|
int32_t chunk_size = sizeof(chunk);
|
||||||
Stream_Chunk stream = {0};
|
Stream_Chunk stream = {};
|
||||||
|
|
||||||
int32_t still_looping;
|
int32_t still_looping;
|
||||||
char at_pos;
|
char at_pos;
|
||||||
|
@ -38,7 +38,7 @@ static int32_t
|
||||||
seek_line_beginning(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
|
seek_line_beginning(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
|
||||||
char chunk[1024];
|
char chunk[1024];
|
||||||
int32_t chunk_size = sizeof(chunk);
|
int32_t chunk_size = sizeof(chunk);
|
||||||
Stream_Chunk stream = {0};
|
Stream_Chunk stream = {};
|
||||||
|
|
||||||
int32_t still_looping;
|
int32_t still_looping;
|
||||||
char at_pos;
|
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);
|
int32_t new_pos = seek_line_beginning(app, buffer, view->cursor.pos);
|
||||||
char space[1024];
|
char space[1024];
|
||||||
Stream_Chunk chunk = {0};
|
Stream_Chunk chunk = {};
|
||||||
int32_t still_looping = false;
|
int32_t still_looping = false;
|
||||||
|
|
||||||
int32_t i = new_pos;
|
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){
|
buffer_seek_whitespace_up(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
|
||||||
char chunk[1024];
|
char chunk[1024];
|
||||||
int32_t chunk_size = sizeof(chunk);
|
int32_t chunk_size = sizeof(chunk);
|
||||||
Stream_Chunk stream = {0};
|
Stream_Chunk stream = {};
|
||||||
|
|
||||||
char at_pos;
|
char at_pos;
|
||||||
|
|
||||||
|
@ -157,7 +157,7 @@ static int32_t
|
||||||
buffer_seek_whitespace_down(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
|
buffer_seek_whitespace_down(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
|
||||||
char chunk[1024];
|
char chunk[1024];
|
||||||
int32_t chunk_size = sizeof(chunk);
|
int32_t chunk_size = sizeof(chunk);
|
||||||
Stream_Chunk stream = {0};
|
Stream_Chunk stream = {};
|
||||||
|
|
||||||
if (init_stream_chunk(&stream, app, buffer, pos, chunk, chunk_size)){
|
if (init_stream_chunk(&stream, app, buffer, pos, chunk, chunk_size)){
|
||||||
// step 1: find the first non-whitespace character
|
// 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
|
static int32_t
|
||||||
buffer_seek_whitespace_right(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
|
buffer_seek_whitespace_right(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
|
||||||
char data_chunk[1024];
|
char data_chunk[1024];
|
||||||
Stream_Chunk stream = {0};
|
Stream_Chunk stream = {};
|
||||||
|
|
||||||
if (init_stream_chunk(&stream, app, buffer, pos, data_chunk, sizeof(data_chunk))){
|
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
|
static int32_t
|
||||||
buffer_seek_whitespace_left(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
|
buffer_seek_whitespace_left(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
|
||||||
char data_chunk[1024];
|
char data_chunk[1024];
|
||||||
Stream_Chunk stream = {0};
|
Stream_Chunk stream = {};
|
||||||
|
|
||||||
--pos;
|
--pos;
|
||||||
if (pos > 0){
|
if (pos > 0){
|
||||||
|
@ -289,7 +289,7 @@ buffer_seek_whitespace_left(Application_Links *app, Buffer_Summary *buffer, int3
|
||||||
static int32_t
|
static int32_t
|
||||||
buffer_seek_alphanumeric_right(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
|
buffer_seek_alphanumeric_right(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
|
||||||
char data_chunk[1024];
|
char data_chunk[1024];
|
||||||
Stream_Chunk stream = {0};
|
Stream_Chunk stream = {};
|
||||||
|
|
||||||
if (init_stream_chunk(&stream, app, buffer, pos, data_chunk, sizeof(data_chunk))){
|
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
|
static int32_t
|
||||||
buffer_seek_alphanumeric_left(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
|
buffer_seek_alphanumeric_left(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
|
||||||
char data_chunk[1024];
|
char data_chunk[1024];
|
||||||
Stream_Chunk stream = {0};
|
Stream_Chunk stream = {};
|
||||||
|
|
||||||
--pos;
|
--pos;
|
||||||
if (pos > 0){
|
if (pos > 0){
|
||||||
|
@ -361,7 +361,7 @@ buffer_seek_alphanumeric_left(Application_Links *app, Buffer_Summary *buffer, in
|
||||||
static int32_t
|
static int32_t
|
||||||
buffer_seek_alphanumeric_or_underscore_right(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
|
buffer_seek_alphanumeric_or_underscore_right(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
|
||||||
char data_chunk[1024];
|
char data_chunk[1024];
|
||||||
Stream_Chunk stream = {0};
|
Stream_Chunk stream = {};
|
||||||
|
|
||||||
if (init_stream_chunk(&stream, app, buffer, pos, data_chunk, sizeof(data_chunk))){
|
if (init_stream_chunk(&stream, app, buffer, pos, data_chunk, sizeof(data_chunk))){
|
||||||
bool32 still_looping = true;
|
bool32 still_looping = true;
|
||||||
|
@ -393,7 +393,7 @@ buffer_seek_alphanumeric_or_underscore_right(Application_Links *app, Buffer_Summ
|
||||||
static int32_t
|
static int32_t
|
||||||
buffer_seek_alphanumeric_or_underscore_left(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
|
buffer_seek_alphanumeric_or_underscore_left(Application_Links *app, Buffer_Summary *buffer, int32_t pos){
|
||||||
char data_chunk[1024];
|
char data_chunk[1024];
|
||||||
Stream_Chunk stream = {0};
|
Stream_Chunk stream = {};
|
||||||
|
|
||||||
--pos;
|
--pos;
|
||||||
if (pos > 0){
|
if (pos > 0){
|
||||||
|
@ -433,7 +433,7 @@ buffer_seek_alphanumeric_or_underscore_left(Application_Links *app, Buffer_Summa
|
||||||
static int32_t
|
static int32_t
|
||||||
buffer_seek_range_camel_right(Application_Links *app, Buffer_Summary *buffer, int32_t pos, int32_t an_pos){
|
buffer_seek_range_camel_right(Application_Links *app, Buffer_Summary *buffer, int32_t pos, int32_t an_pos){
|
||||||
char data_chunk[1024];
|
char data_chunk[1024];
|
||||||
Stream_Chunk stream = {0};
|
Stream_Chunk stream = {};
|
||||||
|
|
||||||
++pos;
|
++pos;
|
||||||
if (pos < an_pos){
|
if (pos < an_pos){
|
||||||
|
@ -467,7 +467,7 @@ buffer_seek_range_camel_right(Application_Links *app, Buffer_Summary *buffer, in
|
||||||
static int32_t
|
static int32_t
|
||||||
buffer_seek_range_camel_left(Application_Links *app, Buffer_Summary *buffer, int32_t pos, int32_t an_pos){
|
buffer_seek_range_camel_left(Application_Links *app, Buffer_Summary *buffer, int32_t pos, int32_t an_pos){
|
||||||
char data_chunk[1024];
|
char data_chunk[1024];
|
||||||
Stream_Chunk stream = {0};
|
Stream_Chunk stream = {};
|
||||||
|
|
||||||
--pos;
|
--pos;
|
||||||
if (pos > 0){
|
if (pos > 0){
|
||||||
|
@ -542,7 +542,7 @@ seek_token_right(Cpp_Token_Array *tokens, int32_t pos){
|
||||||
|
|
||||||
static Cpp_Token_Array
|
static Cpp_Token_Array
|
||||||
buffer_get_all_tokens(Application_Links *app, Partition *part, Buffer_Summary *buffer){
|
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){
|
if (buffer->exists && buffer->is_lexed){
|
||||||
array.count = buffer_token_count(app, buffer);
|
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){
|
if (buffer->exists){
|
||||||
char chunk[1024];
|
char chunk[1024];
|
||||||
int32_t size = sizeof(chunk);
|
int32_t size = sizeof(chunk);
|
||||||
Stream_Chunk stream = {0};
|
Stream_Chunk stream = {};
|
||||||
|
|
||||||
if (init_stream_chunk(&stream, app, buffer, pos, chunk, size)){
|
if (init_stream_chunk(&stream, app, buffer, pos, chunk, size)){
|
||||||
int32_t still_looping = 1;
|
int32_t still_looping = 1;
|
||||||
|
@ -701,7 +701,7 @@ buffer_seek_delimiter_backward(Application_Links *app, Buffer_Summary *buffer, i
|
||||||
if (buffer->exists){
|
if (buffer->exists){
|
||||||
char chunk[1024];
|
char chunk[1024];
|
||||||
int32_t size = sizeof(chunk);
|
int32_t size = sizeof(chunk);
|
||||||
Stream_Chunk stream = {0};
|
Stream_Chunk stream = {};
|
||||||
|
|
||||||
if (init_stream_chunk(&stream, app, buffer, pos, chunk, size)){
|
if (init_stream_chunk(&stream, app, buffer, pos, chunk, size)){
|
||||||
int32_t still_looping = 1;
|
int32_t still_looping = 1;
|
||||||
|
@ -746,7 +746,7 @@ buffer_seek_string_forward(Application_Links *app, Buffer_Summary *buffer, int32
|
||||||
read_str.size = size;
|
read_str.size = size;
|
||||||
|
|
||||||
char chunk[1024];
|
char chunk[1024];
|
||||||
Stream_Chunk stream = {0};
|
Stream_Chunk stream = {};
|
||||||
stream.max_end = end;
|
stream.max_end = end;
|
||||||
|
|
||||||
if (init_stream_chunk(&stream, app, buffer, pos, chunk, sizeof(chunk))){
|
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;
|
read_str.size = size;
|
||||||
|
|
||||||
char chunk[1024];
|
char chunk[1024];
|
||||||
Stream_Chunk stream = {0};
|
Stream_Chunk stream = {};
|
||||||
stream.min_start = min;
|
stream.min_start = min;
|
||||||
|
|
||||||
if (init_stream_chunk(&stream, app, buffer, pos, chunk, sizeof(chunk))){
|
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 read_buffer[512];
|
||||||
char chunk[1024];
|
char chunk[1024];
|
||||||
int32_t chunk_size = sizeof(chunk);
|
int32_t chunk_size = sizeof(chunk);
|
||||||
Stream_Chunk stream = {0};
|
Stream_Chunk stream = {};
|
||||||
stream.max_end = end;
|
stream.max_end = end;
|
||||||
|
|
||||||
if (buffer->size > end){
|
if (buffer->size > end){
|
||||||
|
@ -876,7 +876,7 @@ buffer_seek_string_insensitive_backward(Application_Links *app, Buffer_Summary *
|
||||||
char read_buffer[512];
|
char read_buffer[512];
|
||||||
char chunk[1024];
|
char chunk[1024];
|
||||||
int32_t chunk_size = sizeof(chunk);
|
int32_t chunk_size = sizeof(chunk);
|
||||||
Stream_Chunk stream = {0};
|
Stream_Chunk stream = {};
|
||||||
stream.min_start = min;
|
stream.min_start = min;
|
||||||
|
|
||||||
*result = min-1;
|
*result = min-1;
|
||||||
|
@ -941,8 +941,8 @@ buffer_seek_string(Application_Links *app, Buffer_Summary *buffer, int32_t pos,
|
||||||
|
|
||||||
static bool32
|
static bool32
|
||||||
buffer_line_is_blank(Application_Links *app, Buffer_Summary *buffer, int32_t line){
|
buffer_line_is_blank(Application_Links *app, Buffer_Summary *buffer, int32_t line){
|
||||||
Partial_Cursor start = {0};
|
Partial_Cursor start = {};
|
||||||
Partial_Cursor end = {0};
|
Partial_Cursor end = {};
|
||||||
bool32 result = false;
|
bool32 result = false;
|
||||||
if (line <= buffer->line_count){
|
if (line <= buffer->line_count){
|
||||||
buffer_compute_cursor(app, buffer, seek_line_char(line, 1), &start);
|
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;
|
static const int32_t chunk_size = 1024;
|
||||||
char chunk[chunk_size];
|
char chunk[chunk_size];
|
||||||
Stream_Chunk stream = {0};
|
Stream_Chunk stream = {};
|
||||||
int32_t i = start.pos;
|
int32_t i = start.pos;
|
||||||
stream.max_end = end.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
|
static String
|
||||||
read_identifier_at_pos(Application_Links *app, Buffer_Summary *buffer, int32_t pos, char *space, int32_t max, Range *range_out){
|
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 start = buffer_seek_alphanumeric_or_underscore_left(app, buffer, pos);
|
||||||
int32_t end = buffer_seek_alphanumeric_or_underscore_right(app, buffer, start);
|
int32_t end = buffer_seek_alphanumeric_or_underscore_right(app, buffer, start);
|
||||||
|
|
|
@ -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_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."){
|
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_out = {};
|
||||||
Query_Bar bar_cmd = {0};
|
Query_Bar bar_cmd = {};
|
||||||
|
|
||||||
bar_out.prompt = make_lit_string("Output Buffer: ");
|
bar_out.prompt = make_lit_string("Output Buffer: ");
|
||||||
bar_out.string = make_fixed_width_string(out_buffer_space);
|
bar_out.string = make_fixed_width_string(out_buffer_space);
|
||||||
|
|
|
@ -36,9 +36,9 @@ ui__rect_union(i32_Rect a, i32_Rect b){
|
||||||
|
|
||||||
static UI_Control
|
static UI_Control
|
||||||
ui_list_to_ui_control(Partition *arena, UI_List *list){
|
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);
|
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.x0 = INT32_MAX;
|
||||||
neg_inf_rect.y0 = INT32_MAX;
|
neg_inf_rect.y0 = INT32_MAX;
|
||||||
neg_inf_rect.x1 = INT32_MIN;
|
neg_inf_rect.x1 = INT32_MIN;
|
||||||
|
@ -100,7 +100,7 @@ ui_control_get_mouse_hit(UI_Control *control,
|
||||||
|
|
||||||
static void
|
static void
|
||||||
view_zero_scroll(Application_Links *app, View_Summary *view){
|
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);
|
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;
|
int32_t myu = 0;
|
||||||
get_view_relative_mouse_positions(mouse, *view, &mxs, &mys, &mxu, &myu);
|
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 *clicked = ui_control_get_mouse_hit(&control, mxs, mys, mxu, myu);
|
||||||
UI_Item result = {0};
|
UI_Item result = {};
|
||||||
if (clicked != 0){
|
if (clicked != 0){
|
||||||
result = *clicked;
|
result = *clicked;
|
||||||
}
|
}
|
||||||
|
@ -268,15 +268,15 @@ lister_update_ui(Application_Links *app, Partition *scratch, View_Summary *view,
|
||||||
state->raw_item_index = -1;
|
state->raw_item_index = -1;
|
||||||
|
|
||||||
int32_t node_count = state->lister.options.count;
|
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);
|
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);
|
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);
|
substring_matches.node_ptrs = push_array(scratch, Lister_Node*, node_count);
|
||||||
|
|
||||||
String key = state->lister.key_string;
|
String key = state->lister.key_string;
|
||||||
Absolutes absolutes = {0};
|
Absolutes absolutes = {};
|
||||||
get_absolutes(key, &absolutes, true, true);
|
get_absolutes(key, &absolutes, true, true);
|
||||||
bool32 has_wildcard = (absolutes.count > 3);
|
bool32 has_wildcard = (absolutes.count > 3);
|
||||||
|
|
||||||
|
@ -306,7 +306,7 @@ lister_update_ui(Application_Links *app, Partition *scratch, View_Summary *view,
|
||||||
substring_matches,
|
substring_matches,
|
||||||
};
|
};
|
||||||
|
|
||||||
UI_List list = {0};
|
UI_List list = {};
|
||||||
UI_Item *highlighted_item = 0;
|
UI_Item *highlighted_item = 0;
|
||||||
UI_Item *hot_item = 0;
|
UI_Item *hot_item = 0;
|
||||||
UI_Item *hovered_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){
|
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];
|
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.x0 = x0;
|
||||||
item_rect.y0 = y_pos;
|
item_rect.y0 = y_pos;
|
||||||
item_rect.x1 = x1;
|
item_rect.x1 = x1;
|
||||||
item_rect.y1 = y_pos + block_height;
|
item_rect.y1 = y_pos + block_height;
|
||||||
y_pos = item_rect.y1;
|
y_pos = item_rect.y1;
|
||||||
|
|
||||||
UI_Item item = {0};
|
UI_Item item = {};
|
||||||
if (!is_theme_list){
|
if (!is_theme_list){
|
||||||
item.type = UIType_Option;
|
item.type = UIType_Option;
|
||||||
item.option.string = node->string;
|
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.x0 = x0;
|
||||||
item_rect.y0 = 0;
|
item_rect.y0 = 0;
|
||||||
item_rect.x1 = x1;
|
item_rect.x1 = x1;
|
||||||
item_rect.y1 = item_rect.y0 + line_height;
|
item_rect.y1 = item_rect.y0 + line_height;
|
||||||
y_pos = item_rect.y1;
|
y_pos = item_rect.y1;
|
||||||
|
|
||||||
UI_Item item = {0};
|
UI_Item item = {};
|
||||||
item.type = UIType_TextField;
|
item.type = UIType_TextField;
|
||||||
item.activation_level = UIActivation_Active;
|
item.activation_level = UIActivation_Active;
|
||||||
item.coordinates = UICoordinates_ViewRelative;
|
item.coordinates = UICoordinates_ViewRelative;
|
||||||
|
@ -406,7 +406,7 @@ lister_update_ui(Application_Links *app, Partition *scratch, View_Summary *view,
|
||||||
|
|
||||||
static Lister_Prealloced_String
|
static Lister_Prealloced_String
|
||||||
lister_prealloced(String string){
|
lister_prealloced(String string){
|
||||||
Lister_Prealloced_String result = {0};
|
Lister_Prealloced_String result = {};
|
||||||
result.string = string;
|
result.string = string;
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
181
4ed.cpp
181
4ed.cpp
|
@ -9,25 +9,23 @@
|
||||||
|
|
||||||
// TOP
|
// TOP
|
||||||
|
|
||||||
// App Structs
|
|
||||||
|
|
||||||
#define DEFAULT_DISPLAY_WIDTH 672
|
#define DEFAULT_DISPLAY_WIDTH 672
|
||||||
#define DEFAULT_MINIMUM_BASE_DISPLAY_WIDTH 550
|
#define DEFAULT_MINIMUM_BASE_DISPLAY_WIDTH 550
|
||||||
|
|
||||||
inline App_Coroutine_State
|
internal App_Coroutine_State
|
||||||
get_state(Application_Links *app){
|
get_state(Application_Links *app){
|
||||||
App_Coroutine_State state = {0};
|
App_Coroutine_State state = {};
|
||||||
state.co = app->current_coroutine;
|
state.co = app->current_coroutine;
|
||||||
state.type = app->type_coroutine;
|
state.type = app->type_coroutine;
|
||||||
return(state);
|
return(state);
|
||||||
}
|
}
|
||||||
inline void
|
internal void
|
||||||
restore_state(Application_Links *app, App_Coroutine_State state){
|
restore_state(Application_Links *app, App_Coroutine_State state){
|
||||||
app->current_coroutine = state.co;
|
app->current_coroutine = state.co;
|
||||||
app->type_coroutine = state.type;
|
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){
|
app_launch_coroutine(System_Functions *system, Application_Links *app, Coroutine_Type type, Coroutine_Head *co, void *in, void *out){
|
||||||
Coroutine_Head *result = 0;
|
Coroutine_Head *result = 0;
|
||||||
|
|
||||||
|
@ -41,7 +39,7 @@ app_launch_coroutine(System_Functions *system, Application_Links *app, Coroutine
|
||||||
return(result);
|
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){
|
app_resume_coroutine(System_Functions *system, Application_Links *app, Coroutine_Type type, Coroutine_Head *co, void *in, void *out){
|
||||||
Coroutine_Head *result = 0;
|
Coroutine_Head *result = 0;
|
||||||
|
|
||||||
|
@ -55,7 +53,7 @@ app_resume_coroutine(System_Functions *system, Application_Links *app, Coroutine
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
internal void
|
||||||
output_file_append(System_Functions *system, Models *models, Editing_File *file, String value){
|
output_file_append(System_Functions *system, Models *models, Editing_File *file, String value){
|
||||||
if (!file->is_dummy){
|
if (!file->is_dummy){
|
||||||
i32 end = buffer_size(&file->state.buffer);
|
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){
|
do_feedback_message(System_Functions *system, Models *models, String value){
|
||||||
Editing_File *file = models->message_buffer;
|
Editing_File *file = models->message_buffer;
|
||||||
if (file != 0){
|
if (file != 0){
|
||||||
|
@ -306,9 +304,9 @@ interpret_binding_buffer(Models *models, void *buffer, i32 size){
|
||||||
Partition *part = &models->mem.part;
|
Partition *part = &models->mem.part;
|
||||||
Temp_Memory temp = begin_temp_memory(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->scroll_rule = fallback_scroll_rule;
|
||||||
models->hook_open_file = 0;
|
models->hook_open_file = 0;
|
||||||
|
@ -649,7 +647,7 @@ setup_command_table(void){
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
app_hardcode_default_style(Models *models){
|
app_hardcode_default_style(Models *models){
|
||||||
Interactive_Style file_info_style = {0};
|
Interactive_Style file_info_style = {};
|
||||||
Style *styles = models->styles.styles;
|
Style *styles = models->styles.styles;
|
||||||
Style *style = styles + 1;
|
Style *style = styles + 1;
|
||||||
|
|
||||||
|
@ -873,7 +871,7 @@ init_command_line_settings(App_Settings *settings, Plat_Settings *plat_settings,
|
||||||
internal App_Vars*
|
internal App_Vars*
|
||||||
app_setup_memory(System_Functions *system, Application_Memory *memory){
|
app_setup_memory(System_Functions *system, Application_Memory *memory){
|
||||||
Partition _partition = make_part(memory->vars_memory, memory->vars_memory_size);
|
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);
|
Assert(vars != 0);
|
||||||
memset(vars, 0, sizeof(*vars));
|
memset(vars, 0, sizeof(*vars));
|
||||||
vars->models.mem.part = _partition;
|
vars->models.mem.part = _partition;
|
||||||
|
@ -889,29 +887,23 @@ get_event_flags(Key_Code keycode){
|
||||||
event_flags |= EventOnEsc;
|
event_flags |= EventOnEsc;
|
||||||
event_flags |= EventOnAnyKey;
|
event_flags |= EventOnAnyKey;
|
||||||
}
|
}
|
||||||
else if (keycode == key_mouse_left){
|
else if (keycode == key_mouse_left || keycode == key_mouse_left_release){
|
||||||
// TODO(allen):
|
event_flags |= EventOnMouseLeftButton;
|
||||||
}
|
}
|
||||||
else if (keycode == key_mouse_right){
|
else if (keycode == key_mouse_right || keycode == key_mouse_right_release){
|
||||||
// TODO(allen):
|
event_flags |= EventOnMouseRightButton;
|
||||||
}
|
|
||||||
else if (keycode == key_mouse_left_release){
|
|
||||||
// TODO(allen):
|
|
||||||
}
|
|
||||||
else if (keycode == key_mouse_right_release){
|
|
||||||
// TODO(allen):
|
|
||||||
}
|
}
|
||||||
else if (keycode == key_mouse_wheel){
|
else if (keycode == key_mouse_wheel){
|
||||||
// TODO(allen):
|
event_flags |= EventOnMouseWheel;
|
||||||
}
|
}
|
||||||
else if (keycode == key_mouse_move){
|
else if (keycode == key_mouse_move){
|
||||||
// TODO(allen):
|
event_flags |= EventOnMouseMove;
|
||||||
}
|
}
|
||||||
else if (keycode == key_animate){
|
else if (keycode == key_animate){
|
||||||
// TODO(allen):
|
event_flags |= EventOnAnimate;
|
||||||
}
|
}
|
||||||
else if (keycode == key_view_activate){
|
else if (keycode == key_click_activate_view || keycode == key_click_deactivate_view){
|
||||||
// TODO(allen):
|
event_flags |= EventOnViewActivation;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
event_flags |= EventOnAnyKey;
|
event_flags |= EventOnAnyKey;
|
||||||
|
@ -919,6 +911,50 @@ get_event_flags(Key_Code keycode){
|
||||||
return(event_flags);
|
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){
|
App_Read_Command_Line_Sig(app_read_command_line){
|
||||||
i32 out_size = 0;
|
i32 out_size = 0;
|
||||||
App_Vars *vars = app_setup_memory(system, memory);
|
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_current = 0;
|
||||||
models->working_set.clipboard_rolling = 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){
|
if (clipboard.str != 0){
|
||||||
String *dest = working_set_next_clipboard_string(&models->mem.heap, &models->working_set, clipboard.size);
|
String *dest = working_set_next_clipboard_string(&models->mem.heap, &models->working_set, clipboard.size);
|
||||||
copy(dest, make_string((char*)clipboard.str, 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;
|
App_Vars *vars = (App_Vars*)memory->vars_memory;
|
||||||
Models *models = &vars->models;
|
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.mouse_cursor_type = APP_MOUSE_CURSOR_DEFAULT;
|
||||||
app_result.lctrl_lalt_is_altgr = models->settings.lctrl_lalt_is_altgr;
|
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);){
|
for (;system->get_file_change(buffer, buffer_size, &mem_too_small, &size);){
|
||||||
Assert(!mem_too_small);
|
Assert(!mem_too_small);
|
||||||
Editing_File_Name canon = {0};
|
Editing_File_Name canon = {};
|
||||||
if (get_canon_name(system, make_string(buffer, size),
|
if (get_canon_name(system, make_string(buffer, size),
|
||||||
&canon)){
|
&canon)){
|
||||||
Editing_File *file = working_set_contains_canon(working_set, canon.name);
|
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);
|
models->input_filter(&input->mouse);
|
||||||
}
|
}
|
||||||
|
|
||||||
Key_Event_Data mouse_event = {0};
|
Key_Event_Data mouse_event = {};
|
||||||
if (input->mouse.press_l){
|
if (input->mouse.press_l){
|
||||||
mouse_event.keycode = key_mouse_left;
|
mouse_event.keycode = key_mouse_left;
|
||||||
input->keys.keys[input->keys.count++] = mouse_event;
|
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];
|
Panel *active_panel = &models->layout.panels[models->layout.active_panel];
|
||||||
View *view = active_panel->view;
|
View *view = active_panel->view;
|
||||||
Assert(view != 0);
|
Assert(view != 0);
|
||||||
models->key = *key_ptr;
|
|
||||||
|
|
||||||
// NOTE(allen): execute a command or resize panels
|
|
||||||
switch (vars->state){
|
switch (vars->state){
|
||||||
case APP_STATE_EDIT:
|
case APP_STATE_EDIT:
|
||||||
{
|
{
|
||||||
|
@ -1456,68 +1490,45 @@ App_Step_Sig(app_step){
|
||||||
|
|
||||||
case EventConsume_ClickChangeView:
|
case EventConsume_ClickChangeView:
|
||||||
{
|
{
|
||||||
|
// NOTE(allen): kill coroutine if we have one
|
||||||
if (models->command_coroutine != 0){
|
if (models->command_coroutine != 0){
|
||||||
User_Input user_in = {0};
|
force_abort_coroutine(system, models, view);
|
||||||
user_in.abort = true;
|
}
|
||||||
|
|
||||||
for (u32 j = 0; j < 10 && models->command_coroutine != 0; ++j){
|
// NOTE(allen): run deactivate command
|
||||||
models->command_coroutine = app_resume_coroutine(system, &models->app_links, Co_Command, models->command_coroutine, &user_in, models->command_coroutine_flags);
|
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){
|
if (models->command_coroutine != 0){
|
||||||
// TODO(allen): post grave warning
|
force_abort_coroutine(system, models, view);
|
||||||
models->command_coroutine = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
init_query_set(&view->transient.query_set);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
models->layout.active_panel = (i32)(mouse_panel - models->layout.panels);
|
models->layout.active_panel = (i32)(mouse_panel - models->layout.panels);
|
||||||
app_result.animating = true;
|
app_result.animating = true;
|
||||||
|
active_panel = mouse_panel;
|
||||||
|
view = active_panel->view;
|
||||||
|
|
||||||
{
|
// NOTE(allen): run activate command
|
||||||
Key_Event_Data key = {};
|
launch_command_via_keycode(system, &app_result, models, view, key_click_activate_view);
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}break;
|
}break;
|
||||||
|
|
||||||
case EventConsume_Command:
|
case EventConsume_Command:
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// NOTE(allen): update command coroutine
|
||||||
if (models->command_coroutine != 0){
|
if (models->command_coroutine != 0){
|
||||||
|
models->key = *key_ptr;
|
||||||
|
|
||||||
Coroutine_Head *command_coroutine = models->command_coroutine;
|
Coroutine_Head *command_coroutine = models->command_coroutine;
|
||||||
u32 abort_flags = models->command_coroutine_flags[1];
|
u32 abort_flags = models->command_coroutine_flags[1];
|
||||||
u32 get_flags = models->command_coroutine_flags[0] | abort_flags;
|
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);
|
u32 event_flags = get_event_flags(key_ptr->keycode);
|
||||||
if ((get_flags & event_flags) != 0){
|
if ((get_flags & event_flags) != 0){
|
||||||
i32 map = view_get_map(view);
|
i32 map = view_get_map(view);
|
||||||
Command_Binding cmd_bind = map_extract_recursive(&models->mapping, map, *key_ptr);
|
Command_Binding cmd_bind = map_extract_recursive(&models->mapping, map, *key_ptr);
|
||||||
|
|
||||||
User_Input user_in = {};
|
User_Input user_in = {};
|
||||||
user_in.type = UserInputKey;
|
|
||||||
user_in.key = *key_ptr;
|
user_in.key = *key_ptr;
|
||||||
user_in.command.command = cmd_bind.custom;
|
user_in.command.command = cmd_bind.custom;
|
||||||
user_in.abort = ((abort_flags & event_flags) != 0);
|
user_in.abort = ((abort_flags & event_flags) != 0);
|
||||||
|
@ -1530,27 +1541,9 @@ App_Step_Sig(app_step){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOTE(allen): launch command
|
||||||
else{
|
else{
|
||||||
i32 map = view_get_map(view);
|
launch_command_via_event(system, &app_result, models, view, *key_ptr);
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,7 +99,7 @@ view_quit_ui(System_Functions *system, Models *models, View *view){
|
||||||
Assert(view != 0);
|
Assert(view != 0);
|
||||||
view->transient.ui_mode = false;
|
view->transient.ui_mode = false;
|
||||||
if (view->transient.ui_quit != 0){
|
if (view->transient.ui_quit != 0){
|
||||||
View_Summary view_summary = {0};
|
View_Summary view_summary = {};
|
||||||
fill_view_summary(system, &view_summary, view, models);
|
fill_view_summary(system, &view_summary, view, models);
|
||||||
view->transient.ui_quit(&models->app_links, view_summary);
|
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.
|
// NOTE(allen): Figure out the root path for the command.
|
||||||
String path_string = {0};
|
String path_string = {};
|
||||||
if (path == 0){
|
if (path == 0){
|
||||||
terminate_with_null(&models->hot_directory.string);
|
terminate_with_null(&models->hot_directory.string);
|
||||||
path_string = 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.
|
// NOTE(allen): Figure out the command string.
|
||||||
String command_string = {0};
|
String command_string = {};
|
||||||
if (command == 0){
|
if (command == 0){
|
||||||
command_string = make_lit_string(" echo no script specified");
|
command_string = make_lit_string(" echo no script specified");
|
||||||
}
|
}
|
||||||
|
@ -604,7 +604,7 @@ DOC_SEE(Access_Flag)
|
||||||
Working_Set *working_set = &models->working_set;
|
Working_Set *working_set = &models->working_set;
|
||||||
Buffer_Summary buffer = {};
|
Buffer_Summary buffer = {};
|
||||||
String fname = make_string(name, len);
|
String fname = make_string(name, len);
|
||||||
Editing_File_Name canon = {0};
|
Editing_File_Name canon = {};
|
||||||
if (get_canon_name(system, fname, &canon)){
|
if (get_canon_name(system, fname, &canon)){
|
||||||
Editing_File *file = working_set_contains_canon(working_set, canon.name);
|
Editing_File *file = working_set_contains_canon(working_set, canon.name);
|
||||||
if (file != 0){
|
if (file != 0){
|
||||||
|
@ -1151,7 +1151,7 @@ DOC_SEE(Buffer_Create_Flag)
|
||||||
Heap *heap = &models->mem.heap;
|
Heap *heap = &models->mem.heap;
|
||||||
Partition *part = &models->mem.part;
|
Partition *part = &models->mem.part;
|
||||||
|
|
||||||
Buffer_Summary result = {0};
|
Buffer_Summary result = {};
|
||||||
b32 buffer_is_for_new_file = false;
|
b32 buffer_is_for_new_file = false;
|
||||||
|
|
||||||
if (filename_len > 0){
|
if (filename_len > 0){
|
||||||
|
@ -1160,7 +1160,7 @@ DOC_SEE(Buffer_Create_Flag)
|
||||||
String fname = make_string(filename, filename_len);
|
String fname = make_string(filename, filename_len);
|
||||||
Editing_File *file = 0;
|
Editing_File *file = 0;
|
||||||
b32 do_empty_buffer = false;
|
b32 do_empty_buffer = false;
|
||||||
Editing_File_Name canon = {0};
|
Editing_File_Name canon = {};
|
||||||
b32 has_canon_name = false;
|
b32 has_canon_name = false;
|
||||||
|
|
||||||
// NOTE(allen): Try to get the file by canon name.
|
// 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.
|
// NOTE(allen): If there is still no file, create a new buffer.
|
||||||
if (file == 0){
|
if (file == 0){
|
||||||
Plat_Handle handle = {0};
|
Plat_Handle handle = {};
|
||||||
|
|
||||||
// NOTE(allen): Figure out whether this is a new file, or an existing file.
|
// NOTE(allen): Figure out whether this is a new file, or an existing file.
|
||||||
if (!do_empty_buffer){
|
if (!do_empty_buffer){
|
||||||
|
@ -1493,7 +1493,7 @@ DOC_SEE(Access_Flag)
|
||||||
System_Functions *system = models->system;
|
System_Functions *system = models->system;
|
||||||
Panel *panel = models->layout.panels + models->layout.active_panel;
|
Panel *panel = models->layout.panels + models->layout.active_panel;
|
||||||
Assert(panel->view != 0);
|
Assert(panel->view != 0);
|
||||||
View_Summary view = {0};
|
View_Summary view = {};
|
||||||
fill_view_summary(system, &view, panel->view, &models->live_set, &models->working_set);
|
fill_view_summary(system, &view, panel->view, &models->live_set, &models->working_set);
|
||||||
if (!access_test(view.lock_flags, access)){
|
if (!access_test(view.lock_flags, access)){
|
||||||
memset(&view, 0, sizeof(view));
|
memset(&view, 0, sizeof(view));
|
||||||
|
@ -1515,7 +1515,7 @@ DOC_SEE(View_Split_Position)
|
||||||
System_Functions *system = models->system;
|
System_Functions *system = models->system;
|
||||||
View *vptr = imp_get_view(models, view_location);
|
View *vptr = imp_get_view(models, view_location);
|
||||||
Panel *panel = vptr->transient.panel;
|
Panel *panel = vptr->transient.panel;
|
||||||
View_Summary result = {0};
|
View_Summary result = {};
|
||||||
|
|
||||||
if (models->layout.panel_count < models->layout.panel_max_count){
|
if (models->layout.panel_count < models->layout.panel_max_count){
|
||||||
b32 vsplit = ((position == ViewSplit_Left) || (position == ViewSplit_Right));
|
b32 vsplit = ((position == ViewSplit_Left) || (position == ViewSplit_Right));
|
||||||
|
@ -2197,7 +2197,7 @@ DOC_SEE(view_set_ui)
|
||||||
{
|
{
|
||||||
Models *models = (Models*)app->cmd_context;
|
Models *models = (Models*)app->cmd_context;
|
||||||
View *vptr = imp_get_view(models, view);
|
View *vptr = imp_get_view(models, view);
|
||||||
UI_Control result = {0};
|
UI_Control result = {};
|
||||||
if (vptr != 0 && part != 0){
|
if (vptr != 0 && part != 0){
|
||||||
UI_Control *control = &vptr->transient.ui_control;
|
UI_Control *control = &vptr->transient.ui_control;
|
||||||
result.items = push_array(part, UI_Item, control->count);
|
result.items = push_array(part, UI_Item, control->count);
|
||||||
|
@ -2576,7 +2576,7 @@ DOC_SEE(Marker)
|
||||||
|
|
||||||
internal Managed_Object_Ptr_And_Workspace
|
internal Managed_Object_Ptr_And_Workspace
|
||||||
get_dynamic_object_ptrs(Models *models, Managed_Object object){
|
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;
|
u32 hi_id = (object >> 32)&max_u32;
|
||||||
Dynamic_Workspace *workspace = get_dynamic_workspace(models, hi_id);
|
Dynamic_Workspace *workspace = get_dynamic_workspace(models, hi_id);
|
||||||
if (workspace != 0){
|
if (workspace != 0){
|
||||||
|
@ -2602,7 +2602,7 @@ DOC_SEE(destroy_marker_visuals)
|
||||||
{
|
{
|
||||||
Models *models = (Models*)app->cmd_context;
|
Models *models = (Models*)app->cmd_context;
|
||||||
Managed_Object_Ptr_And_Workspace object_ptrs = get_dynamic_object_ptrs(models, object);
|
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){
|
if (object_ptrs.header != 0 && object_ptrs.header->type == ManagedObjectType_Markers){
|
||||||
Heap *heap = &models->mem.heap;
|
Heap *heap = &models->mem.heap;
|
||||||
Dynamic_Workspace *workspace = object_ptrs.workspace;
|
Dynamic_Workspace *workspace = object_ptrs.workspace;
|
||||||
|
@ -2982,7 +2982,7 @@ DOC_SEE(User_Input)
|
||||||
Models *models = (Models*)app->cmd_context;
|
Models *models = (Models*)app->cmd_context;
|
||||||
System_Functions *system = models->system;
|
System_Functions *system = models->system;
|
||||||
Coroutine_Head *coroutine = (Coroutine_Head*)app->current_coroutine;
|
Coroutine_Head *coroutine = (Coroutine_Head*)app->current_coroutine;
|
||||||
User_Input result = {0};
|
User_Input result = {};
|
||||||
|
|
||||||
if (app->type_coroutine == Co_Command){
|
if (app->type_coroutine == Co_Command){
|
||||||
Assert(coroutine != 0);
|
Assert(coroutine != 0);
|
||||||
|
@ -3003,10 +3003,7 @@ DOC_SEE(User_Input)
|
||||||
*/{
|
*/{
|
||||||
Models *models = (Models*)app->cmd_context;
|
Models *models = (Models*)app->cmd_context;
|
||||||
User_Input result = {};
|
User_Input result = {};
|
||||||
result.type = UserInputKey;
|
|
||||||
result.abort = 0;
|
|
||||||
result.key = models->key;
|
result.key = models->key;
|
||||||
result.command.cmdid = 0;
|
|
||||||
return(result);
|
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;
|
Models *models = (Models*)app->cmd_context;
|
||||||
Style_Library *library = &models->styles;
|
Style_Library *library = &models->styles;
|
||||||
String str = {0};
|
String str = {};
|
||||||
if (0 <= index && index < library->count){
|
if (0 <= index && index < library->count){
|
||||||
Style *style = &library->styles[index];
|
Style *style = &library->styles[index];
|
||||||
char *mem = push_array(arena, char, style->name.size + 1);
|
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){
|
if (description.font.in_local_font_folder){
|
||||||
i32 count = system->font.get_loadable_count();
|
i32 count = system->font.get_loadable_count();
|
||||||
for (i32 i = 0; i < count; ++i){
|
for (i32 i = 0; i < count; ++i){
|
||||||
Font_Loadable_Description loadable = {0};
|
Font_Loadable_Description loadable = {};
|
||||||
system->font.get_loadable(i, &loadable);
|
system->font.get_loadable(i, &loadable);
|
||||||
|
|
||||||
if (loadable.valid){
|
if (loadable.valid){
|
||||||
|
@ -3325,7 +3322,7 @@ DOC_SEE(Face_Description)
|
||||||
{
|
{
|
||||||
Models *models = (Models*)app->cmd_context;
|
Models *models = (Models*)app->cmd_context;
|
||||||
System_Functions *system = models->system;
|
System_Functions *system = models->system;
|
||||||
Face_Description description = {0};
|
Face_Description description = {};
|
||||||
if (id != 0){
|
if (id != 0){
|
||||||
Font_Pointers font = system->font.get_pointers_by_id(id);
|
Font_Pointers font = system->font.get_pointers_by_id(id);
|
||||||
if (font.valid){
|
if (font.valid){
|
||||||
|
|
|
@ -508,7 +508,7 @@ buffer_edit_provide_memory(Gap_Buffer *buffer, void *new_data, i32 new_max){
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
buffer_stringify(Gap_Buffer *buffer, i32 start, i32 end, char *out){
|
buffer_stringify(Gap_Buffer *buffer, i32 start, i32 end, char *out){
|
||||||
Gap_Buffer_Stream stream = {0};
|
Gap_Buffer_Stream stream = {};
|
||||||
|
|
||||||
i32 i = start;
|
i32 i = start;
|
||||||
if (buffer_stringify_loop(&stream, buffer, i, end)){
|
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
|
internal i32
|
||||||
buffer_convert_out(Gap_Buffer *buffer, char *dest, i32 max){
|
buffer_convert_out(Gap_Buffer *buffer, char *dest, i32 max){
|
||||||
Gap_Buffer_Stream stream = {0};
|
Gap_Buffer_Stream stream = {};
|
||||||
i32 i = 0;
|
i32 i = 0;
|
||||||
i32 size = buffer_size(buffer);
|
i32 size = buffer_size(buffer);
|
||||||
Assert(size + buffer->line_count <= max);
|
Assert(size + buffer->line_count <= max);
|
||||||
|
@ -549,7 +549,7 @@ buffer_convert_out(Gap_Buffer *buffer, char *dest, i32 max){
|
||||||
|
|
||||||
internal i32
|
internal i32
|
||||||
buffer_count_newlines(Gap_Buffer *buffer, i32 start, i32 end){
|
buffer_count_newlines(Gap_Buffer *buffer, i32 start, i32 end){
|
||||||
Gap_Buffer_Stream stream = {0};
|
Gap_Buffer_Stream stream = {};
|
||||||
i32 i = start;
|
i32 i = start;
|
||||||
i32 count = 0;
|
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.
|
// and stores the size in the extra spot.
|
||||||
internal i32
|
internal i32
|
||||||
buffer_measure_starts(Buffer_Measure_Starts *state, Gap_Buffer *buffer){
|
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 size = buffer_size(buffer);
|
||||||
i32 start = state->start, i = state->i;
|
i32 start = state->start, i = state->i;
|
||||||
i32 *start_ptr = buffer->line_starts + state->count;
|
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){
|
buffer_measure_character_starts(System_Functions *system, Font_Pointers font, Gap_Buffer *buffer, i32 *character_starts, i32 mode, i32 virtual_white){
|
||||||
Assert(mode == 0);
|
Assert(mode == 0);
|
||||||
|
|
||||||
Gap_Buffer_Stream stream = {0};
|
Gap_Buffer_Stream stream = {};
|
||||||
i32 i = 0;
|
i32 i = 0;
|
||||||
i32 size = buffer_size(buffer);
|
i32 size = buffer_size(buffer);
|
||||||
|
|
||||||
|
@ -639,8 +639,8 @@ buffer_measure_character_starts(System_Functions *system, Font_Pointers font, Ga
|
||||||
skipping_whitespace = 1;
|
skipping_whitespace = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
Translation_State tran = {0};
|
Translation_State tran = {};
|
||||||
Translation_Emits emits = {0};
|
Translation_Emits emits = {};
|
||||||
|
|
||||||
stream.use_termination_character = 1;
|
stream.use_termination_character = 1;
|
||||||
stream.terminator = '\n';
|
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)
|
// Iteration data (yikes! Need better loop system)
|
||||||
Gap_Buffer_Stream stream = {0};
|
Gap_Buffer_Stream stream = {};
|
||||||
i32 size = buffer_size(buffer);
|
i32 size = buffer_size(buffer);
|
||||||
i32 char_i = starts[line_start];
|
i32 char_i = starts[line_start];
|
||||||
i32 line_i = line_start;
|
i32 line_i = line_start;
|
||||||
|
@ -909,7 +909,7 @@ buffer_remeasure_character_starts(System_Functions *system, Font_Pointers font,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Iteration data
|
// Iteration data
|
||||||
Gap_Buffer_Stream stream = {0};
|
Gap_Buffer_Stream stream = {};
|
||||||
i32 size = buffer_size(buffer);
|
i32 size = buffer_size(buffer);
|
||||||
i32 char_i = buffer->line_starts[line_start];
|
i32 char_i = buffer->line_starts[line_start];
|
||||||
i32 line_i = line_start;
|
i32 line_i = line_start;
|
||||||
|
@ -925,8 +925,8 @@ buffer_remeasure_character_starts(System_Functions *system, Font_Pointers font,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Translation
|
// Translation
|
||||||
Translation_State tran = {0};
|
Translation_State tran = {};
|
||||||
Translation_Emits emits = {0};
|
Translation_Emits emits = {};
|
||||||
|
|
||||||
stream.use_termination_character = 1;
|
stream.use_termination_character = 1;
|
||||||
stream.terminator = '\n';
|
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)
|
// Iteration data (yikes! Need better loop system)
|
||||||
Gap_Buffer_Stream stream = {0};
|
Gap_Buffer_Stream stream = {};
|
||||||
i32 size = buffer_size(buffer);
|
i32 size = buffer_size(buffer);
|
||||||
i32 char_i = buffer->line_starts[line_start];
|
i32 char_i = buffer->line_starts[line_start];
|
||||||
i32 line_i = 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
|
internal Partial_Cursor
|
||||||
buffer_partial_from_pos(Gap_Buffer *buffer, i32 pos){
|
buffer_partial_from_pos(Gap_Buffer *buffer, i32 pos){
|
||||||
Partial_Cursor result = {0};
|
Partial_Cursor result = {};
|
||||||
|
|
||||||
int32_t size = buffer_size(buffer);
|
int32_t size = buffer_size(buffer);
|
||||||
if (pos > size){
|
if (pos > size){
|
||||||
|
@ -1150,7 +1150,7 @@ buffer_partial_from_pos(Gap_Buffer *buffer, i32 pos){
|
||||||
|
|
||||||
internal Partial_Cursor
|
internal Partial_Cursor
|
||||||
buffer_partial_from_line_character(Gap_Buffer *buffer, i32 line, i32 character){
|
buffer_partial_from_line_character(Gap_Buffer *buffer, i32 line, i32 character){
|
||||||
Partial_Cursor result = {0};
|
Partial_Cursor result = {};
|
||||||
|
|
||||||
i32 line_index = line - 1;
|
i32 line_index = line - 1;
|
||||||
if (line_index >= buffer->line_count){
|
if (line_index >= buffer->line_count){
|
||||||
|
|
|
@ -45,7 +45,7 @@ struct Gap_Buffer_Stream{
|
||||||
b32 use_termination_character;
|
b32 use_termination_character;
|
||||||
char terminator;
|
char terminator;
|
||||||
};
|
};
|
||||||
global Gap_Buffer_Stream null_buffer_stream = {0};
|
global Gap_Buffer_Stream null_buffer_stream = {};
|
||||||
|
|
||||||
struct Buffer_Batch_State{
|
struct Buffer_Batch_State{
|
||||||
i32 i;
|
i32 i;
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
inline CLI_List
|
inline CLI_List
|
||||||
make_cli_list(Partition *part, u32 max){
|
make_cli_list(Partition *part, u32 max){
|
||||||
CLI_List list = {0};
|
CLI_List list = {};
|
||||||
partition_align(part, 8);
|
partition_align(part, 8);
|
||||||
list.procs = push_array(part, CLI_Process, max);
|
list.procs = push_array(part, CLI_Process, max);
|
||||||
list.max = max;
|
list.max = max;
|
||||||
|
|
|
@ -42,12 +42,12 @@ wrap_state_set_top(Code_Wrap_State *state, f32 line_shift){
|
||||||
|
|
||||||
internal Code_Wrap_Step
|
internal Code_Wrap_Step
|
||||||
wrap_state_consume_token(System_Functions *system, Font_Pointers font, Code_Wrap_State *state, i32 fixed_end_point){
|
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;
|
i32 i = state->i;
|
||||||
|
|
||||||
result.position_start = i;
|
result.position_start = i;
|
||||||
|
|
||||||
Cpp_Token token = {0};
|
Cpp_Token token = {};
|
||||||
|
|
||||||
token.start = state->size;
|
token.start = state->size;
|
||||||
if (state->token_ptr < state->end_token){
|
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
|
internal Wrap_Current_Shift
|
||||||
get_current_shift(Code_Wrap_State *wrap_state, i32 next_line_start){
|
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];
|
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){
|
if (wrap_state->token_ptr < wrap_state->end_token){
|
||||||
next_token = *wrap_state->token_ptr;
|
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);
|
i32 size = buffer_size(params.buffer);
|
||||||
|
|
||||||
Buffer_Measure_Wrap_State state = {0};
|
Buffer_Measure_Wrap_State state = {};
|
||||||
Buffer_Layout_Stop stop = {0};
|
Buffer_Layout_Stop stop = {};
|
||||||
|
|
||||||
f32 edge_tolerance = 50.f;
|
f32 edge_tolerance = 50.f;
|
||||||
edge_tolerance = clamp_top(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;
|
i32 wrap_position_index = 0;
|
||||||
file->state.wrap_positions[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;
|
b32 use_tokens = false;
|
||||||
|
|
||||||
|
@ -511,9 +511,9 @@ file_measure_wraps(System_Functions *system, Mem_Options *mem, Editing_File *fil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
Translation_State tran = {0};
|
Translation_State tran = {};
|
||||||
Translation_Emits emits = {0};
|
Translation_Emits emits = {};
|
||||||
Gap_Buffer_Stream stream = {0};
|
Gap_Buffer_Stream stream = {};
|
||||||
|
|
||||||
i32 word_stage = 0;
|
i32 word_stage = 0;
|
||||||
i32 i = stop.pos;
|
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];
|
wrap_state.wrap_x.base_x = wrap_state.wrap_x.paren_nesting[0];
|
||||||
|
|
||||||
for (; wrap_state.token_ptr < wrap_state.end_token; ){
|
for (; wrap_state.token_ptr < wrap_state.end_token; ){
|
||||||
Code_Wrap_Step step = {0};
|
Code_Wrap_Step step = {};
|
||||||
b32 emit_comment_position = false;
|
b32 emit_comment_position = false;
|
||||||
b32 first_word = true;
|
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.start_x = x;
|
||||||
step.this_token = wrap_state.token_ptr;
|
step.this_token = wrap_state.token_ptr;
|
||||||
|
|
||||||
Gap_Buffer_Stream stream = {0};
|
Gap_Buffer_Stream stream = {};
|
||||||
Translation_State tran = {0};
|
Translation_State tran = {};
|
||||||
Translation_Emits emits = {0};
|
Translation_Emits emits = {};
|
||||||
|
|
||||||
Potential_Wrap_Indent_Pair potential_wrap = {0};
|
Potential_Wrap_Indent_Pair potential_wrap = {};
|
||||||
potential_wrap.wrap_position = i;
|
potential_wrap.wrap_position = i;
|
||||||
potential_wrap.line_shift = x;
|
potential_wrap.line_shift = x;
|
||||||
potential_wrap.wrappable_score = 5;
|
potential_wrap.wrappable_score = 5;
|
||||||
|
|
|
@ -18,7 +18,7 @@ struct Code_Wrap_X{
|
||||||
i32 paren_safe_top;
|
i32 paren_safe_top;
|
||||||
i32 paren_top;
|
i32 paren_top;
|
||||||
};
|
};
|
||||||
global Code_Wrap_X null_wrap_x = {0};
|
global Code_Wrap_X null_wrap_x = {};
|
||||||
|
|
||||||
struct Code_Wrap_State{
|
struct Code_Wrap_State{
|
||||||
Cpp_Token_Array token_array;
|
Cpp_Token_Array token_array;
|
||||||
|
|
|
@ -105,7 +105,7 @@ map_add(Command_Map *map, Key_Code event_code, u8 modifiers, Command_Function *f
|
||||||
entry = map->commands[index];
|
entry = map->commands[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
Command_Binding bind = {0};
|
Command_Binding bind = {};
|
||||||
bind.function = function;
|
bind.function = function;
|
||||||
bind.custom = custom;
|
bind.custom = custom;
|
||||||
bind.hash = hash;
|
bind.hash = hash;
|
||||||
|
@ -205,7 +205,7 @@ map_get_vanilla_keyboard_default(Command_Map *map, u8 command, Command_Binding *
|
||||||
|
|
||||||
internal Command_Binding
|
internal Command_Binding
|
||||||
map_extract(Command_Map *map, Key_Event_Data key){
|
map_extract(Command_Map *map, Key_Event_Data key){
|
||||||
Command_Binding bind = {0};
|
Command_Binding bind = {};
|
||||||
|
|
||||||
b32 ctrl = key.modifiers[MDFR_CONTROL_INDEX];
|
b32 ctrl = key.modifiers[MDFR_CONTROL_INDEX];
|
||||||
b32 alt = key.modifiers[MDFR_ALT_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;
|
map = &mapping->map_top;
|
||||||
}
|
}
|
||||||
|
|
||||||
Command_Map *visited_maps[16] = {0};
|
Command_Map *visited_maps[16] = {};
|
||||||
i32 visited_top = 0;
|
i32 visited_top = 0;
|
||||||
|
|
||||||
Command_Binding cmd_bind = {0};
|
Command_Binding cmd_bind = {};
|
||||||
for (; map != 0; ){
|
for (; map != 0; ){
|
||||||
cmd_bind = map_extract(map, key);
|
cmd_bind = map_extract(map, key);
|
||||||
if (cmd_bind.function == 0){
|
if (cmd_bind.function == 0){
|
||||||
|
|
|
@ -442,7 +442,7 @@ lifetime__key_table_erase(Lifetime_Key_Table *table, Lifetime_Key *erase_key){
|
||||||
|
|
||||||
internal Lifetime_Key_Table
|
internal Lifetime_Key_Table
|
||||||
lifetime__key_table_copy(Heap *heap, Lifetime_Key_Table table, u32 new_max){
|
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(table.max, new_max);
|
||||||
new_table.max = clamp_bottom(307, new_table.max);
|
new_table.max = clamp_bottom(307, new_table.max);
|
||||||
i32 item_size = sizeof(*new_table.hashes) + sizeof(*new_table.keys);
|
i32 item_size = sizeof(*new_table.hashes) + sizeof(*new_table.keys);
|
||||||
|
|
|
@ -272,7 +272,7 @@ edit_single__inner(System_Functions *system, Models *models, Editing_File *file,
|
||||||
file_measure_wraps(system, &models->mem, file, font);
|
file_measure_wraps(system, &models->mem, file, font);
|
||||||
|
|
||||||
// NOTE(allen): cursor fixing
|
// NOTE(allen): cursor fixing
|
||||||
Cursor_Fix_Descriptor desc = {0};
|
Cursor_Fix_Descriptor desc = {};
|
||||||
desc.start = start;
|
desc.start = start;
|
||||||
desc.end = end;
|
desc.end = end;
|
||||||
desc.shift_amount = shift_amount;
|
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);
|
file_measure_wraps(system, &models->mem, file, font);
|
||||||
|
|
||||||
// NOTE(allen): cursor fixing
|
// NOTE(allen): cursor fixing
|
||||||
Cursor_Fix_Descriptor desc = {0};
|
Cursor_Fix_Descriptor desc = {};
|
||||||
desc.is_batch = 1;
|
desc.is_batch = 1;
|
||||||
desc.batch = batch;
|
desc.batch = batch;
|
||||||
desc.batch_size = batch_size;
|
desc.batch_size = batch_size;
|
||||||
|
@ -456,7 +456,7 @@ edit_clear(System_Functions *system, Models *models, Editing_File *file){
|
||||||
panel = panel->next){
|
panel = panel->next){
|
||||||
View *view = panel->view;
|
View *view = panel->view;
|
||||||
if (view->transient.file_data.file == file){
|
if (view->transient.file_data.file == file){
|
||||||
Full_Cursor cursor = {0};
|
Full_Cursor cursor = {};
|
||||||
cursor.line = 1;
|
cursor.line = 1;
|
||||||
cursor.character = 1;
|
cursor.character = 1;
|
||||||
cursor.wrap_line = 1;
|
cursor.wrap_line = 1;
|
||||||
|
|
|
@ -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);
|
Font_Pointers font = system->font.get_pointers_by_id(file->settings.font_id);
|
||||||
Assert(font.valid);
|
Assert(font.valid);
|
||||||
|
|
||||||
Full_Cursor result = {0};
|
Full_Cursor result = {};
|
||||||
|
|
||||||
Buffer_Cursor_Seek_Params params;
|
Buffer_Cursor_Seek_Params params;
|
||||||
params.buffer = &file->state.buffer;
|
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.return_hint = return_hint;
|
||||||
params.cursor_out = &result;
|
params.cursor_out = &result;
|
||||||
|
|
||||||
Buffer_Cursor_Seek_State state = {0};
|
Buffer_Cursor_Seek_State state = {};
|
||||||
Buffer_Layout_Stop stop = {0};
|
Buffer_Layout_Stop stop = {};
|
||||||
|
|
||||||
i32 size = buffer_size(params.buffer);
|
i32 size = buffer_size(params.buffer);
|
||||||
|
|
||||||
|
@ -409,7 +409,7 @@ file_measure_starts(Heap *heap, Gap_Buffer *buffer){
|
||||||
Assert(buffer->line_starts != 0);
|
Assert(buffer->line_starts != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
Buffer_Measure_Starts state = {0};
|
Buffer_Measure_Starts state = {};
|
||||||
for (;buffer_measure_starts(&state, buffer);){
|
for (;buffer_measure_starts(&state, buffer);){
|
||||||
i32 count = state.count;
|
i32 count = state.count;
|
||||||
i32 max = ((buffer->line_max + 1) << 1);
|
i32 max = ((buffer->line_max + 1) << 1);
|
||||||
|
|
|
@ -36,7 +36,7 @@ Job_Callback_Sig(job_full_lex){
|
||||||
data_ptr += parse_context.memory_size;
|
data_ptr += parse_context.memory_size;
|
||||||
data_size -= 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.tokens = (Cpp_Token*)(data_ptr);
|
||||||
tokens.max_count = (u32)(data_size / sizeof(Cpp_Token));
|
tokens.max_count = (u32)(data_size / sizeof(Cpp_Token));
|
||||||
tokens.count = 0;
|
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));
|
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);
|
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;
|
Gap_Buffer *buffer = &file->state.buffer;
|
||||||
i32 text_size = buffer_size(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);
|
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));
|
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);
|
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;
|
Cpp_Token_Array relex_array;
|
||||||
relex_array.count = 0;
|
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);
|
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));
|
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);
|
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;
|
Cpp_Token_Array relex_array;
|
||||||
relex_array.count = 0;
|
relex_array.count = 0;
|
||||||
|
|
|
@ -22,7 +22,7 @@ struct File_Track_Entry{
|
||||||
File_Index hash;
|
File_Index hash;
|
||||||
u32 opaque[4];
|
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{
|
struct File_Track_Tables{
|
||||||
i32 size;
|
i32 size;
|
||||||
|
@ -38,7 +38,7 @@ struct DLL_Node {
|
||||||
|
|
||||||
internal File_Index
|
internal File_Index
|
||||||
zero_file_index(){
|
zero_file_index(){
|
||||||
File_Index a = {0};
|
File_Index a = {};
|
||||||
return(a);
|
return(a);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -170,7 +170,7 @@ struct Font_Cached_Lookup_Result{
|
||||||
|
|
||||||
internal Font_Cached_Lookup_Result
|
internal Font_Cached_Lookup_Result
|
||||||
font_cached_lookup(Font_Page_Storage *pages, u32 page_number){
|
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);
|
result.index = page_number % ArrayCount(pages->cache);
|
||||||
if (pages->cache[result.index].page_number == page_number){
|
if (pages->cache[result.index].page_number == page_number){
|
||||||
|
|
|
@ -68,7 +68,7 @@ struct Glyph_Bounds{
|
||||||
f32 xoff, yoff;
|
f32 xoff, yoff;
|
||||||
f32 xoff2, yoff2;
|
f32 xoff2, yoff2;
|
||||||
};
|
};
|
||||||
global_const Glyph_Bounds null_glyph_bounds = {0};
|
global_const Glyph_Bounds null_glyph_bounds = {};
|
||||||
|
|
||||||
struct Glyph_Page{
|
struct Glyph_Page{
|
||||||
u32 page_number;
|
u32 page_number;
|
||||||
|
|
|
@ -603,7 +603,7 @@ Sys_Font_Get_Count_Sig(system_font_get_count){
|
||||||
|
|
||||||
internal Font_Slot_Page_And_Index
|
internal Font_Slot_Page_And_Index
|
||||||
system_font_get_active_location(Face_ID font_id){
|
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;
|
for (Font_Slot_Page *page = fontvars.slot_pages_sentinel.next;
|
||||||
page != &fontvars.slot_pages_sentinel;
|
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;
|
b32 made_change = false;
|
||||||
|
|
||||||
Font_Metrics temp_metrics = {0};
|
Font_Metrics temp_metrics = {};
|
||||||
Font_Page_Storage temp_pages = {0};
|
Font_Page_Storage temp_pages = {};
|
||||||
|
|
||||||
if (font_load(&sysfunc, new_settings, &temp_metrics, &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];
|
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
|
internal
|
||||||
Sys_Font_Get_Pointers_By_ID_Sig(system_font_get_pointers_by_id, font_id){
|
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){
|
if (font_id == 0){
|
||||||
return(font);
|
return(font);
|
||||||
}
|
}
|
||||||
|
@ -725,7 +725,7 @@ Sys_Font_Load_Page_Sig(system_font_load_page, settings, metrics, page, page_numb
|
||||||
|
|
||||||
internal Font_Setup_List
|
internal Font_Setup_List
|
||||||
system_font_get_local_stubs(Partition *part){
|
system_font_get_local_stubs(Partition *part){
|
||||||
Font_Setup_List list = {0};
|
Font_Setup_List list = {};
|
||||||
|
|
||||||
u32 dir_max = KB(32);
|
u32 dir_max = KB(32);
|
||||||
u8 *directory = push_array(part, u8, dir_max);
|
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_reduce(part, dir_max - dir_len - 1);
|
||||||
partition_align(part, 8);
|
partition_align(part, 8);
|
||||||
|
|
||||||
File_List file_list = {0};
|
File_List file_list = {};
|
||||||
system_set_file_list(&file_list, (char*)directory, 0, 0, 0);
|
system_set_file_list(&file_list, (char*)directory, 0, 0, 0);
|
||||||
|
|
||||||
for (u32 i = 0; i < file_list.count; ++i){
|
for (u32 i = 0; i < file_list.count; ++i){
|
||||||
|
@ -751,7 +751,7 @@ system_font_get_local_stubs(Partition *part){
|
||||||
for (;filename[len];++len);
|
for (;filename[len];++len);
|
||||||
|
|
||||||
if (dir_len + len + 1 <= sizeof(list.first->stub.name)){
|
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));
|
memset(setup, 0, sizeof(*setup));
|
||||||
partition_align(part, 8);
|
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.
|
// Force load one font.
|
||||||
Font_Setup *first_setup = list.first;
|
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));
|
memcpy(&first_settings.stub, &first_setup->stub, sizeof(first_setup->stub));
|
||||||
first_settings.parameters.pt_size = pt_size;
|
first_settings.parameters.pt_size = pt_size;
|
||||||
first_settings.parameters.use_hinting = use_hinting;
|
first_settings.parameters.use_hinting = use_hinting;
|
||||||
|
|
|
@ -59,7 +59,7 @@ struct Font_Vars{
|
||||||
b32 use_hinting;
|
b32 use_hinting;
|
||||||
};
|
};
|
||||||
|
|
||||||
global Font_Vars fontvars = {0};
|
global Font_Vars fontvars = {};
|
||||||
|
|
||||||
struct Font_Setup{
|
struct Font_Setup{
|
||||||
Font_Setup *next;
|
Font_Setup *next;
|
||||||
|
@ -100,14 +100,14 @@ internal Sys_Font_Path(name, parameters);
|
||||||
|
|
||||||
#define Sys_Font_Path_Not_Used \
|
#define Sys_Font_Path_Not_Used \
|
||||||
internal Sys_Font_Path(n,p){ \
|
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)
|
#define Sys_Font_Data(name, parameters) Font_Raw_Data system_font_data(char *name, Font_Parameters *parameters)
|
||||||
internal Sys_Font_Data(name, parameters);
|
internal Sys_Font_Data(name, parameters);
|
||||||
|
|
||||||
#define Sys_Font_Data_Not_Used \
|
#define Sys_Font_Data_Not_Used \
|
||||||
internal Sys_Font_Data(n,p){ \
|
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
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ panel_init(Panel *panel){
|
||||||
|
|
||||||
inline Panel_Divider
|
inline Panel_Divider
|
||||||
panel_divider_zero(){
|
panel_divider_zero(){
|
||||||
Panel_Divider divider={0};
|
Panel_Divider divider={};
|
||||||
return(divider);
|
return(divider);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -565,7 +565,7 @@ rgba_to_hsla(Vec4 rgba){
|
||||||
internal Vec4
|
internal Vec4
|
||||||
hsla_to_rgba(Vec4 hsla){
|
hsla_to_rgba(Vec4 hsla){
|
||||||
if (hsla.h >= 1.f) hsla.h = 0.f;
|
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 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 X = C*(1.f-ABS(MOD(hsla.x*6.f, 2)-1.f));
|
||||||
f32 m = hsla.z - C*.5f;
|
f32 m = hsla.z - C*.5f;
|
||||||
|
@ -591,7 +591,7 @@ hsla_to_rgba(Vec4 hsla){
|
||||||
|
|
||||||
internal i32_Rect
|
internal i32_Rect
|
||||||
i32R(int32_t l, int32_t t, int32_t r, int32_t b){
|
i32R(int32_t l, int32_t t, int32_t r, int32_t b){
|
||||||
i32_Rect rect = {0};
|
i32_Rect rect = {};
|
||||||
rect.x0 = l;
|
rect.x0 = l;
|
||||||
rect.y0 = t;
|
rect.y0 = t;
|
||||||
rect.x1 = r;
|
rect.x1 = r;
|
||||||
|
|
|
@ -111,7 +111,7 @@ parse_context_add_default(Parse_Context_Memory *parse_mem, Heap *heap){
|
||||||
|
|
||||||
internal Parse_Context
|
internal Parse_Context
|
||||||
parse_context_get(Parse_Context_Memory *parse_mem, Parse_Context_ID id, void *mem, umem memsize){
|
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;
|
Stored_Parse_Context_Slot *slot = 0;
|
||||||
if (id == 0){
|
if (id == 0){
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
internal Ptr_Table
|
internal Ptr_Table
|
||||||
make_Ptr_table(void *mem, umem size){
|
make_Ptr_table(void *mem, umem size){
|
||||||
Ptr_Table table = {0};
|
Ptr_Table table = {};
|
||||||
i32 max = (i32)(size/8);
|
i32 max = (i32)(size/8);
|
||||||
if (max > 0){
|
if (max > 0){
|
||||||
table.mem = mem;
|
table.mem = mem;
|
||||||
|
@ -173,7 +173,7 @@ insert_Ptr_table(Heap *heap, Ptr_Table *table, void* key){
|
||||||
|
|
||||||
internal u32_Ptr_Table
|
internal u32_Ptr_Table
|
||||||
make_u32_Ptr_table(void *mem, umem size){
|
make_u32_Ptr_table(void *mem, umem size){
|
||||||
u32_Ptr_Table table = {0};
|
u32_Ptr_Table table = {};
|
||||||
i32 max = (i32)(size/16);
|
i32 max = (i32)(size/16);
|
||||||
if (max > 0){
|
if (max > 0){
|
||||||
table.mem = mem;
|
table.mem = mem;
|
||||||
|
@ -234,7 +234,7 @@ insert_u32_Ptr_table(u32_Ptr_Table *table, u32*key, void**val){
|
||||||
|
|
||||||
internal u32_Ptr_Lookup_Result
|
internal u32_Ptr_Lookup_Result
|
||||||
lookup_u32_Ptr_table(u32_Ptr_Table *table, u32*key){
|
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;
|
i32 max = table->max;
|
||||||
if (max > 0){
|
if (max > 0){
|
||||||
u64 hash = 0;
|
u64 hash = 0;
|
||||||
|
|
|
@ -46,7 +46,7 @@ end_render_section(Render_Target *target, System_Functions *system){
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
draw_rectangle(Render_Target *target, f32_Rect rect, u32 color){
|
draw_rectangle(Render_Target *target, f32_Rect rect, u32 color){
|
||||||
Render_Command_Rectangle cmd = {0};
|
Render_Command_Rectangle cmd = {};
|
||||||
CmdHeader(RenCom_Rectangle);
|
CmdHeader(RenCom_Rectangle);
|
||||||
cmd.rect = rect;
|
cmd.rect = rect;
|
||||||
cmd.color = color;
|
cmd.color = color;
|
||||||
|
@ -61,7 +61,7 @@ draw_rectangle(Render_Target *target, i32_Rect rect, u32 color){
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
draw_rectangle_outline(Render_Target *target, f32_Rect rect, u32 color){
|
draw_rectangle_outline(Render_Target *target, f32_Rect rect, u32 color){
|
||||||
Render_Command_Rectangle cmd = {0};
|
Render_Command_Rectangle cmd = {};
|
||||||
CmdHeader(RenCom_Outline);
|
CmdHeader(RenCom_Outline);
|
||||||
cmd.rect = rect;
|
cmd.rect = rect;
|
||||||
cmd.color = color;
|
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 = (u8*)str_.str;
|
||||||
u8 *str_end = str + str_.size;
|
u8 *str_end = str + str_.size;
|
||||||
|
|
||||||
Translation_State tran = {0};
|
Translation_State tran = {};
|
||||||
Translation_Emits emits = {0};
|
Translation_Emits emits = {};
|
||||||
|
|
||||||
for (u32 i = 0; str < str_end; ++str, ++i){
|
for (u32 i = 0; str < str_end; ++str, ++i){
|
||||||
translating_fully_process_byte(system, font, &tran, *str, i, str_.size, &emits);
|
translating_fully_process_byte(system, font, &tran, *str, i, str_.size, &emits);
|
||||||
|
|
|
@ -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
|
// TODO(allen): If the previous command was also a push clip should
|
||||||
// undo that one and just do this one. (OPTIMIZATION).
|
// 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.size = sizeof(cmd);
|
||||||
cmd.header.type = RenCom_ChangeClip;
|
cmd.header.type = RenCom_ChangeClip;
|
||||||
cmd.box = clip_box;
|
cmd.box = clip_box;
|
||||||
|
|
|
@ -17,7 +17,7 @@ struct Plat_Handle{
|
||||||
u32 d[4];
|
u32 d[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
static Plat_Handle null_plat_handle = {0};
|
static Plat_Handle null_plat_handle = {};
|
||||||
|
|
||||||
inline b32
|
inline b32
|
||||||
handle_equal(Plat_Handle a, Plat_Handle b){
|
handle_equal(Plat_Handle a, Plat_Handle b){
|
||||||
|
@ -137,7 +137,7 @@ struct Thread_Memory{
|
||||||
u32 size;
|
u32 size;
|
||||||
u32 id;
|
u32 id;
|
||||||
};
|
};
|
||||||
global Thread_Memory null_thread_memory = {0};
|
global Thread_Memory null_thread_memory = {};
|
||||||
|
|
||||||
struct Thread_Exchange;
|
struct Thread_Exchange;
|
||||||
struct System_Functions;
|
struct System_Functions;
|
||||||
|
|
|
@ -179,9 +179,9 @@ translating_generate_emits(Translation_State *tran, Translation_Emit_Rule emit_r
|
||||||
|
|
||||||
internal void
|
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){
|
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);
|
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_select_emit_rule_with_font(system, font, tran, description, &emit_rule);
|
||||||
translating_generate_emits(tran, emit_rule, ch, i, emits_out);
|
translating_generate_emits(tran, emit_rule, ch, i, emits_out);
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ struct Translation_State{
|
||||||
u8 fill_i;
|
u8 fill_i;
|
||||||
u8 fill_expected;
|
u8 fill_expected;
|
||||||
};
|
};
|
||||||
global_const Translation_State null_buffer_translating_state = {0};
|
global_const Translation_State null_buffer_translating_state = {};
|
||||||
|
|
||||||
enum{
|
enum{
|
||||||
TranLBH_None,
|
TranLBH_None,
|
||||||
|
|
30
4ed_view.cpp
30
4ed_view.cpp
|
@ -101,7 +101,7 @@ view_get_cursor_xy(View *view){
|
||||||
|
|
||||||
inline Cursor_Limits
|
inline Cursor_Limits
|
||||||
view_cursor_limits(View *view){
|
view_cursor_limits(View *view){
|
||||||
Cursor_Limits limits = {0};
|
Cursor_Limits limits = {};
|
||||||
|
|
||||||
f32 line_height = (f32)view->transient.line_height;
|
f32 line_height = (f32)view->transient.line_height;
|
||||||
f32 visible_height = view_height(view);
|
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
|
internal Relative_Scrolling
|
||||||
view_get_relative_scrolling(View *view){
|
view_get_relative_scrolling(View *view){
|
||||||
Relative_Scrolling result = {0};
|
Relative_Scrolling result = {};
|
||||||
if (view->transient.edit_pos != 0){
|
if (view->transient.edit_pos != 0){
|
||||||
Vec2 cursor = view_get_cursor_xy(view);
|
Vec2 cursor = view_get_cursor_xy(view);
|
||||||
result.scroll_y = cursor.y - view->transient.edit_pos->scroll.scroll_y;
|
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_CharacterHighlightRanges:
|
||||||
case VisualType_LineHighlightRanges:
|
case VisualType_LineHighlightRanges:
|
||||||
{
|
{
|
||||||
i32 pos_pair[2] = {0};
|
i32 pos_pair[2] = {};
|
||||||
i32 pair_index = 0;
|
i32 pair_index = 0;
|
||||||
|
|
||||||
for (;marker < marker_one_past_last; marker += stride_size_from_last){
|
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){
|
if (pair_index == 2){
|
||||||
pair_index = 0;
|
pair_index = 0;
|
||||||
|
|
||||||
Range range_b = {0};
|
Range range_b = {};
|
||||||
range_b.first = pos_pair[0];
|
range_b.first = pos_pair[0];
|
||||||
range_b.one_past_last = pos_pair[1];
|
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;
|
Face_ID font_id = file->settings.font_id;
|
||||||
|
|
||||||
// NOTE(allen): Get visual markers
|
// NOTE(allen): Get visual markers
|
||||||
Render_Marker_Array markers = {0};
|
Render_Marker_Array markers = {};
|
||||||
markers.markers = push_array(part, Render_Marker, 0);
|
markers.markers = push_array(part, Render_Marker, 0);
|
||||||
{
|
{
|
||||||
Lifetime_Object *lifetime_object = file->lifetime_object;
|
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);
|
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.markers = markers.markers + marker_segments[0].first;
|
||||||
character_markers.count = marker_segments[0].one_past_last - 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.markers = markers.markers + marker_segments[1].first;
|
||||||
line_markers.count = marker_segments[1].one_past_last - 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.markers = markers.markers + marker_segments[2].first;
|
||||||
range_markers.count = marker_segments[2].one_past_last - 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.markers = markers.markers + marker_segments[3].first;
|
||||||
line_range_markers.count = marker_segments[3].one_past_last - 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;
|
line_range_markers.markers[visual_line_range_markers_scan_index].pos <= ind;
|
||||||
visual_line_range_markers_scan_index += 1){
|
visual_line_range_markers_scan_index += 1){
|
||||||
Render_Marker *marker = &line_range_markers.markers[visual_line_range_markers_scan_index];
|
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.color = marker->color;
|
||||||
range_record.text_color = marker->text_color;
|
range_record.text_color = marker->text_color;
|
||||||
range_record.one_past_last = marker->one_past_last;
|
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;
|
range_markers.markers[visual_range_markers_scan_index].pos <= ind;
|
||||||
visual_range_markers_scan_index += 1){
|
visual_range_markers_scan_index += 1){
|
||||||
Render_Marker *marker = &range_markers.markers[visual_range_markers_scan_index];
|
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.color = marker->color;
|
||||||
range_record.text_color = marker->text_color;
|
range_record.text_color = marker->text_color;
|
||||||
range_record.one_past_last = marker->one_past_last;
|
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.
|
// to the gui system.
|
||||||
scroll_y += view->transient.widget_height;
|
scroll_y += view->transient.widget_height;
|
||||||
|
|
||||||
Full_Cursor render_cursor = {0};
|
Full_Cursor render_cursor = {};
|
||||||
if (!file->settings.unwrapped_lines){
|
if (!file->settings.unwrapped_lines){
|
||||||
render_cursor = file_compute_cursor(system, file, seek_wrapped_xy(0, scroll_y, 0), true);
|
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.virtual_white = file->settings.virtual_white;
|
||||||
params.wrap_slashes = file->settings.wrap_indicator;
|
params.wrap_slashes = file->settings.wrap_indicator;
|
||||||
|
|
||||||
Buffer_Render_State state = {0};
|
Buffer_Render_State state = {};
|
||||||
Buffer_Layout_Stop stop = {0};
|
Buffer_Layout_Stop stop = {};
|
||||||
|
|
||||||
f32 line_shift = 0.f;
|
f32 line_shift = 0.f;
|
||||||
b32 do_wrap = false;
|
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);
|
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.first = render_cursor.pos;
|
||||||
on_screen_range.one_past_last = end_pos;
|
on_screen_range.one_past_last = end_pos;
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ struct File_Viewing_Data{
|
||||||
b32 show_whitespace;
|
b32 show_whitespace;
|
||||||
b32 file_locked;
|
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_Transient{
|
||||||
struct View *next;
|
struct View *next;
|
||||||
|
|
|
@ -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){
|
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);
|
scroll.target_y = clamp(0, scroll.target_y, max_y);
|
||||||
|
|
||||||
Input_Process_Result result = {0};
|
Input_Process_Result result = {};
|
||||||
result.scroll = scroll;
|
result.scroll = scroll;
|
||||||
|
|
||||||
i32 line_height = view->transient.line_height;
|
i32 line_height = view->transient.line_height;
|
||||||
|
|
||||||
if (!view->transient.hide_file_bar){
|
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.x0 = rect.x0;
|
||||||
top_bar_rect.y0 = rect.y0;
|
top_bar_rect.y0 = rect.y0;
|
||||||
top_bar_rect.x1 = rect.x1;
|
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);
|
Font_Pointers font = system->font.get_pointers_by_id(font_id);
|
||||||
|
|
||||||
if (!view->transient.hide_file_bar){
|
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.x0 = rect.x0;
|
||||||
top_bar_rect.y0 = rect.y0;
|
top_bar_rect.y0 = rect.y0;
|
||||||
top_bar_rect.x1 = rect.x1;
|
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;
|
for (Query_Slot *slot = view->transient.query_set.used_slot;
|
||||||
slot != 0;
|
slot != 0;
|
||||||
slot = slot->next, ++bar_count){
|
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.x0 = rect.x0;
|
||||||
query_bar_rect.y0 = rect.y0;
|
query_bar_rect.y0 = rect.y0;
|
||||||
query_bar_rect.x1 = rect.x1;
|
query_bar_rect.x1 = rect.x1;
|
||||||
|
|
|
@ -53,7 +53,7 @@ working_set_extend_memory(Working_Set *working_set, Editing_File *new_space, i16
|
||||||
|
|
||||||
working_set->file_max += number_of_files;
|
working_set->file_max += number_of_files;
|
||||||
|
|
||||||
Buffer_Slot_ID id = {0};
|
Buffer_Slot_ID id = {};
|
||||||
id.part[1] = high_part;
|
id.part[1] = high_part;
|
||||||
|
|
||||||
Editing_File *file_ptr = new_space;
|
Editing_File *file_ptr = new_space;
|
||||||
|
@ -191,7 +191,7 @@ working_set_init(Working_Set *working_set, Partition *partition, Heap *heap){
|
||||||
inline void
|
inline void
|
||||||
working_set__grow_if_needed(Table *table, Heap *heap, void *arg, Hash_Function *hash_func, Compare_Function *comp_func){
|
working_set__grow_if_needed(Table *table, Heap *heap, void *arg, Hash_Function *hash_func, Compare_Function *comp_func){
|
||||||
if (table_at_capacity(table)){
|
if (table_at_capacity(table)){
|
||||||
Table btable = {0};
|
Table btable = {};
|
||||||
i32 new_max = table->max * 2;
|
i32 new_max = table->max * 2;
|
||||||
i32 mem_size = table_required_mem_size(new_max, table->item_size);
|
i32 mem_size = table_required_mem_size(new_max, table->item_size);
|
||||||
void *mem = heap_allocate(heap, mem_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->base_name.name.size == 0);
|
||||||
Assert(file->unique_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_);
|
new_name.name = make_fixed_width_string(new_name.name_);
|
||||||
buffer_resolve_name_low_level(working_set, &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*
|
internal Editing_File*
|
||||||
open_file(System_Functions *system, Models *models, String filename){
|
open_file(System_Functions *system, Models *models, String filename){
|
||||||
Editing_File *file = 0;
|
Editing_File *file = 0;
|
||||||
Editing_File_Name canon_name = {0};
|
Editing_File_Name canon_name = {};
|
||||||
|
|
||||||
if (terminate_with_null(&filename) &&
|
if (terminate_with_null(&filename) &&
|
||||||
get_canon_name(system, filename, &canon_name)){
|
get_canon_name(system, filename, &canon_name)){
|
||||||
|
|
|
@ -321,7 +321,7 @@ fm_init_system(){
|
||||||
|
|
||||||
internal Temp_Dir
|
internal Temp_Dir
|
||||||
fm_pushdir(char *dir){
|
fm_pushdir(char *dir){
|
||||||
Temp_Dir temp = {0};
|
Temp_Dir temp = {};
|
||||||
GetCurrentDirectoryA(sizeof(temp.dir), temp.dir);
|
GetCurrentDirectoryA(sizeof(temp.dir), temp.dir);
|
||||||
SetCurrentDirectoryA(dir);
|
SetCurrentDirectoryA(dir);
|
||||||
return(temp);
|
return(temp);
|
||||||
|
|
|
@ -828,11 +828,11 @@ do_table_reduction(FSM_Tables *table, uint16_t state_count){
|
||||||
static FSM_Tables
|
static FSM_Tables
|
||||||
generate_whitespace_skip_table(){
|
generate_whitespace_skip_table(){
|
||||||
uint8_t state_count = LSPP_count;
|
uint8_t state_count = LSPP_count;
|
||||||
FSM_Tables table = {0};
|
FSM_Tables table = {};
|
||||||
allocate_full_tables(&table, state_count);
|
allocate_full_tables(&table, state_count);
|
||||||
|
|
||||||
int32_t i = 0;
|
int32_t i = 0;
|
||||||
Whitespace_FSM wfsm = {0};
|
Whitespace_FSM wfsm = {};
|
||||||
Whitespace_FSM new_wfsm;
|
Whitespace_FSM new_wfsm;
|
||||||
for (uint16_t c = 0; c < 256; ++c){
|
for (uint16_t c = 0; c < 256; ++c){
|
||||||
for (uint8_t state = 0; state < state_count; ++state){
|
for (uint8_t state = 0; state < state_count; ++state){
|
||||||
|
@ -850,12 +850,12 @@ generate_whitespace_skip_table(){
|
||||||
|
|
||||||
static FSM_Tables
|
static FSM_Tables
|
||||||
generate_table(u8_4tech state_count, FSM_Function *fsm_call){
|
generate_table(u8_4tech state_count, FSM_Function *fsm_call){
|
||||||
FSM_Tables table = {0};
|
FSM_Tables table = {};
|
||||||
allocate_full_tables(&table, state_count);
|
allocate_full_tables(&table, state_count);
|
||||||
|
|
||||||
i32_4tech i = 0;
|
i32_4tech i = 0;
|
||||||
Cpp_Lex_FSM fsm = {0};
|
Cpp_Lex_FSM fsm = {};
|
||||||
Cpp_Lex_FSM new_fsm = {0};
|
Cpp_Lex_FSM new_fsm = {};
|
||||||
for (uint16_t c = 0; c < 256; ++c){
|
for (uint16_t c = 0; c < 256; ++c){
|
||||||
for (u8_4tech state = 0; state < state_count; ++state){
|
for (u8_4tech state = 0; state < state_count; ++state){
|
||||||
fsm.state = state;
|
fsm.state = state;
|
||||||
|
@ -887,12 +887,12 @@ generate_table(u8_4tech state_count, FSM_Function *fsm_call){
|
||||||
static FSM_Tables
|
static FSM_Tables
|
||||||
generate_fsm_table(uint8_t pp_state, bool32 ignore_string_delims){
|
generate_fsm_table(uint8_t pp_state, bool32 ignore_string_delims){
|
||||||
uint8_t state_count = LS_count;
|
uint8_t state_count = LS_count;
|
||||||
FSM_Tables table = {0};
|
FSM_Tables table = {};
|
||||||
allocate_full_tables(&table, state_count);
|
allocate_full_tables(&table, state_count);
|
||||||
|
|
||||||
int32_t i = 0;
|
int32_t i = 0;
|
||||||
Cpp_Lex_FSM fsm = {0};
|
Cpp_Lex_FSM fsm = {};
|
||||||
Cpp_Lex_FSM new_fsm = {0};
|
Cpp_Lex_FSM new_fsm = {};
|
||||||
for (uint16_t c = 0; c < 256; ++c){
|
for (uint16_t c = 0; c < 256; ++c){
|
||||||
for (uint8_t state = 0; state < state_count; ++state){
|
for (uint8_t state = 0; state < state_count; ++state){
|
||||||
fsm.state = state;
|
fsm.state = state;
|
||||||
|
|
|
@ -101,7 +101,7 @@ struct Used_Links{
|
||||||
i32 count, max;
|
i32 count, max;
|
||||||
};
|
};
|
||||||
|
|
||||||
internal Item_Node null_item_node = {0};
|
internal Item_Node null_item_node = {};
|
||||||
|
|
||||||
internal String
|
internal String
|
||||||
str_start_end(char *data, i32 start, i32 end){
|
str_start_end(char *data, i32 start, i32 end){
|
||||||
|
@ -192,7 +192,7 @@ str_alloc(i32 cap){
|
||||||
|
|
||||||
internal Item_Set
|
internal Item_Set
|
||||||
allocate_item_set(i32 count){
|
allocate_item_set(i32 count){
|
||||||
Item_Set item_set = {0};
|
Item_Set item_set = {};
|
||||||
if (count > 0){
|
if (count > 0){
|
||||||
item_set.items = fm_push_array(Item_Node, count);
|
item_set.items = fm_push_array(Item_Node, count);
|
||||||
item_set.count = count;
|
item_set.count = count;
|
||||||
|
@ -203,7 +203,7 @@ allocate_item_set(i32 count){
|
||||||
|
|
||||||
internal String
|
internal String
|
||||||
file_dump(char *filename){
|
file_dump(char *filename){
|
||||||
String result = {0};
|
String result = {};
|
||||||
FILE *file = fopen(filename, "rb");
|
FILE *file = fopen(filename, "rb");
|
||||||
|
|
||||||
if (file){
|
if (file){
|
||||||
|
@ -225,7 +225,7 @@ file_dump(char *filename){
|
||||||
|
|
||||||
internal Parse
|
internal Parse
|
||||||
meta_lex(char *filename){
|
meta_lex(char *filename){
|
||||||
Parse result = {0};
|
Parse result = {};
|
||||||
result.code = file_dump(filename);
|
result.code = file_dump(filename);
|
||||||
if (result.code.str != 0){
|
if (result.code.str != 0){
|
||||||
result.tokens = cpp_make_token_array(1024);
|
result.tokens = cpp_make_token_array(1024);
|
||||||
|
@ -236,7 +236,7 @@ meta_lex(char *filename){
|
||||||
|
|
||||||
internal String
|
internal String
|
||||||
get_first_line(String source){
|
get_first_line(String source){
|
||||||
String line = {0};
|
String line = {};
|
||||||
i32 pos = find_s_char(source, 0, '\n');
|
i32 pos = find_s_char(source, 0, '\n');
|
||||||
line = substr(source, 0, pos);
|
line = substr(source, 0, pos);
|
||||||
return(line);
|
return(line);
|
||||||
|
@ -244,7 +244,7 @@ get_first_line(String source){
|
||||||
|
|
||||||
internal String
|
internal String
|
||||||
get_next_line(String source, String line){
|
get_next_line(String source, String line){
|
||||||
String next = {0};
|
String next = {};
|
||||||
i32 pos = (i32)(line.str - source.str) + line.size;
|
i32 pos = (i32)(line.str - source.str) + line.size;
|
||||||
i32 start = 0;
|
i32 start = 0;
|
||||||
|
|
||||||
|
@ -335,7 +335,7 @@ get_doc_string_from_prev(Parse_Context *context, String *doc_string){
|
||||||
|
|
||||||
internal String
|
internal String
|
||||||
doc_parse_note(String source, i32 *pos){
|
doc_parse_note(String source, i32 *pos){
|
||||||
String result = {0};
|
String result = {};
|
||||||
|
|
||||||
i32 p = *pos;
|
i32 p = *pos;
|
||||||
i32 start = p;
|
i32 start = p;
|
||||||
|
@ -355,7 +355,7 @@ doc_parse_note(String source, i32 *pos){
|
||||||
|
|
||||||
internal String
|
internal String
|
||||||
doc_parse_note_string(String source, i32 *pos){
|
doc_parse_note_string(String source, i32 *pos){
|
||||||
String result = {0};
|
String result = {};
|
||||||
|
|
||||||
Assert(source.str[*pos] == '(');
|
Assert(source.str[*pos] == '(');
|
||||||
|
|
||||||
|
@ -389,7 +389,7 @@ doc_parse_note_string(String source, i32 *pos){
|
||||||
|
|
||||||
internal String
|
internal String
|
||||||
doc_parse_parameter(String source, i32 *pos){
|
doc_parse_parameter(String source, i32 *pos){
|
||||||
String result = {0};
|
String result = {};
|
||||||
|
|
||||||
i32 p = *pos;
|
i32 p = *pos;
|
||||||
i32 start = p;
|
i32 start = p;
|
||||||
|
@ -411,7 +411,7 @@ doc_parse_parameter(String source, i32 *pos){
|
||||||
|
|
||||||
internal String
|
internal String
|
||||||
doc_parse_last_parameter(String source, i32 *pos){
|
doc_parse_last_parameter(String source, i32 *pos){
|
||||||
String result = {0};
|
String result = {};
|
||||||
|
|
||||||
i32 p = *pos;
|
i32 p = *pos;
|
||||||
i32 start = p;
|
i32 start = p;
|
||||||
|
@ -528,7 +528,7 @@ struct_parse_member(Parse_Context *context, Item_Node *member){
|
||||||
|
|
||||||
Cpp_Token *token = get_token(context);
|
Cpp_Token *token = get_token(context);
|
||||||
|
|
||||||
String doc_string = {0};
|
String doc_string = {};
|
||||||
get_doc_string_from_prev(context, &doc_string);
|
get_doc_string_from_prev(context, &doc_string);
|
||||||
|
|
||||||
Cpp_Token *start_token = token;
|
Cpp_Token *start_token = token;
|
||||||
|
@ -540,7 +540,7 @@ struct_parse_member(Parse_Context *context, Item_Node *member){
|
||||||
}
|
}
|
||||||
|
|
||||||
if (token){
|
if (token){
|
||||||
String name = {0};
|
String name = {};
|
||||||
Cpp_Token *token_j = 0;
|
Cpp_Token *token_j = 0;
|
||||||
i32 nest_level = 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 *start_token = get_token(context);
|
||||||
Cpp_Token *token = 0;
|
Cpp_Token *token = 0;
|
||||||
|
|
||||||
String doc_string = {0};
|
String doc_string = {};
|
||||||
get_doc_string_from_prev(context, &doc_string);
|
get_doc_string_from_prev(context, &doc_string);
|
||||||
|
|
||||||
for (; (token = get_token(context)) != 0; get_next_token(context)){
|
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){
|
if (token_j != start_token){
|
||||||
name = skip_chop_whitespace(get_lexeme(*token_j, context->data));
|
name = skip_chop_whitespace(get_lexeme(*token_j, context->data));
|
||||||
}
|
}
|
||||||
|
|
||||||
String type = {0};
|
String type = {};
|
||||||
if (is_struct){
|
if (is_struct){
|
||||||
type = make_lit_string("struct");
|
type = make_lit_string("struct");
|
||||||
}
|
}
|
||||||
|
@ -718,7 +718,7 @@ typedef_parse(Parse_Context *context, Item_Node *item){
|
||||||
i32 result = false;
|
i32 result = false;
|
||||||
|
|
||||||
Cpp_Token *token = get_token(context);
|
Cpp_Token *token = get_token(context);
|
||||||
String doc_string = {0};
|
String doc_string = {};
|
||||||
get_doc_string_from_prev(context, &doc_string);
|
get_doc_string_from_prev(context, &doc_string);
|
||||||
|
|
||||||
Cpp_Token *start_token = token;
|
Cpp_Token *start_token = token;
|
||||||
|
@ -758,7 +758,7 @@ internal i32
|
||||||
enum_parse(Parse_Context *context, Item_Node *item){
|
enum_parse(Parse_Context *context, Item_Node *item){
|
||||||
i32 result = false;
|
i32 result = false;
|
||||||
|
|
||||||
String parent_doc_string = {0};
|
String parent_doc_string = {};
|
||||||
get_doc_string_from_prev(context, &parent_doc_string);
|
get_doc_string_from_prev(context, &parent_doc_string);
|
||||||
|
|
||||||
Cpp_Token *parent_start_token = get_token(context);
|
Cpp_Token *parent_start_token = get_token(context);
|
||||||
|
@ -771,7 +771,7 @@ enum_parse(Parse_Context *context, Item_Node *item){
|
||||||
}
|
}
|
||||||
|
|
||||||
if (token){
|
if (token){
|
||||||
String parent_name = {0};
|
String parent_name = {};
|
||||||
Cpp_Token *token_j = 0;
|
Cpp_Token *token_j = 0;
|
||||||
|
|
||||||
for (; (token_j = get_token(context)) != 0; get_prev_token(context)){
|
for (; (token_j = get_token(context)) != 0; get_prev_token(context)){
|
||||||
|
@ -798,9 +798,9 @@ enum_parse(Parse_Context *context, Item_Node *item){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if (token->type == CPP_TOKEN_IDENTIFIER){
|
else if (token->type == CPP_TOKEN_IDENTIFIER){
|
||||||
String doc_string = {0};
|
String doc_string = {};
|
||||||
String name = {0};
|
String name = {};
|
||||||
String value = {0};
|
String value = {};
|
||||||
get_doc_string_from_prev(context, &doc_string);
|
get_doc_string_from_prev(context, &doc_string);
|
||||||
|
|
||||||
name = get_lexeme(*token, context->data);
|
name = get_lexeme(*token, context->data);
|
||||||
|
@ -866,7 +866,7 @@ enum_parse(Parse_Context *context, Item_Node *item){
|
||||||
|
|
||||||
internal Argument_Breakdown
|
internal Argument_Breakdown
|
||||||
allocate_argument_breakdown(i32 count){
|
allocate_argument_breakdown(i32 count){
|
||||||
Argument_Breakdown breakdown = {0};
|
Argument_Breakdown breakdown = {};
|
||||||
if (count > 0){
|
if (count > 0){
|
||||||
breakdown.count = count;
|
breakdown.count = count;
|
||||||
breakdown.args = fm_push_array(Argument, 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;
|
i32 result = false;
|
||||||
|
|
||||||
Cpp_Token *token = get_token(context);
|
Cpp_Token *token = get_token(context);
|
||||||
String lexeme = {0};
|
String lexeme = {};
|
||||||
|
|
||||||
if (function_parse_goto_name(context)){
|
if (function_parse_goto_name(context)){
|
||||||
if (token->type == CPP_TOKEN_IDENTIFIER){
|
if (token->type == CPP_TOKEN_IDENTIFIER){
|
||||||
|
@ -1068,7 +1068,7 @@ internal i32
|
||||||
function_parse(Parse_Context *context, Item_Node *item, String cpp_name){
|
function_parse(Parse_Context *context, Item_Node *item, String cpp_name){
|
||||||
i32 result = false;
|
i32 result = false;
|
||||||
|
|
||||||
String doc_string = {0};
|
String doc_string = {};
|
||||||
Cpp_Token *token = get_token(context);
|
Cpp_Token *token = get_token(context);
|
||||||
|
|
||||||
item->marker = get_lexeme(*token, context->data);
|
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 *doc_token = 0;
|
||||||
Cpp_Token *args_start_token = 0;
|
Cpp_Token *args_start_token = 0;
|
||||||
|
|
||||||
String doc_string = {0};
|
String doc_string = {};
|
||||||
|
|
||||||
if (macro_parse_check(context)){
|
if (macro_parse_check(context)){
|
||||||
token = get_token(context);
|
token = get_token(context);
|
||||||
|
@ -1189,7 +1189,7 @@ macro_parse(Parse_Context *context, Item_Node *item){
|
||||||
|
|
||||||
internal Meta_Unit
|
internal Meta_Unit
|
||||||
compile_meta_unit(char *code_directory, char **files, Meta_Keywords *meta_keywords, i32 key_count){
|
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;
|
i32 file_count = 0;
|
||||||
for (char **file_ptr = files; *file_ptr; ++file_ptr, ++file_count);
|
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_ = setup_parse_context(unit.parse[J]);
|
||||||
Parse_Context *context = &context_;
|
Parse_Context *context = &context_;
|
||||||
|
|
||||||
String cpp_name = {0};
|
String cpp_name = {};
|
||||||
i32 has_cpp_name = 0;
|
i32 has_cpp_name = 0;
|
||||||
|
|
||||||
for (; (token = get_token(context)) != 0; get_next_token(context)){
|
for (; (token = get_token(context)) != 0; get_next_token(context)){
|
||||||
|
|
|
@ -54,7 +54,8 @@ M(mouse_right_release) \
|
||||||
M(mouse_wheel) \
|
M(mouse_wheel) \
|
||||||
M(mouse_move) \
|
M(mouse_move) \
|
||||||
M(animate) \
|
M(animate) \
|
||||||
M(view_activate) \
|
M(click_activate_view) \
|
||||||
|
M(click_deactivate_view) \
|
||||||
M(f1) \
|
M(f1) \
|
||||||
M(f2) \
|
M(f2) \
|
||||||
M(f3) \
|
M(f3) \
|
||||||
|
@ -326,7 +327,7 @@ struct App_API{
|
||||||
|
|
||||||
internal App_API
|
internal App_API
|
||||||
allocate_app_api(i32 count){
|
allocate_app_api(i32 count){
|
||||||
App_API app_api = {0};
|
App_API app_api = {};
|
||||||
app_api.names = fm_push_array(App_API_Name, count);
|
app_api.names = fm_push_array(App_API_Name, count);
|
||||||
memset(app_api.names, 0, sizeof(App_API_Name)*count);
|
memset(app_api.names, 0, sizeof(App_API_Name)*count);
|
||||||
return(app_api);
|
return(app_api);
|
||||||
|
@ -678,7 +679,7 @@ generate_remapping_code_and_data(){
|
||||||
Temp temp = fm_begin_temp();
|
Temp temp = fm_begin_temp();
|
||||||
|
|
||||||
// Generate mapping array data structure
|
// Generate mapping array data structure
|
||||||
Mapping_Array mappings_ = {0};
|
Mapping_Array mappings_ = {};
|
||||||
Mapping_Array *mappings = &mappings_;
|
Mapping_Array *mappings = &mappings_;
|
||||||
|
|
||||||
begin_mapping(mappings, default, "The default 4coder bindings - typically good for Windows and Linux");
|
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, 'n', MDFR_CTRL, interactive_new);
|
||||||
bind(mappings, 'o', MDFR_CTRL, interactive_open_or_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, 'k', MDFR_CTRL, interactive_kill_buffer);
|
||||||
bind(mappings, 'i', MDFR_CTRL, interactive_switch_buffer);
|
bind(mappings, 'i', MDFR_CTRL, interactive_switch_buffer);
|
||||||
bind(mappings, 'h', MDFR_CTRL, project_go_to_root_directory);
|
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_vanilla_keys(mappings, MDFR_NONE, write_character);
|
||||||
|
|
||||||
bind(mappings, key_mouse_left, MDFR_NONE, click_set_cursor_and_mark);
|
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_left_release, MDFR_NONE, click_set_cursor);
|
||||||
bind(mappings, key_mouse_move, MDFR_NONE, click_set_cursor_if_lbutton);
|
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_page_down, MDFR_NONE, lister__move_down);
|
||||||
bind(mappings, key_mouse_wheel , MDFR_NONE, lister__wheel_scroll);
|
bind(mappings, key_mouse_wheel , MDFR_NONE, lister__wheel_scroll);
|
||||||
bind(mappings, key_mouse_left , MDFR_NONE, lister__mouse_press);
|
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_left_release, MDFR_NONE, lister__mouse_release);
|
||||||
bind(mappings, key_mouse_move, MDFR_NONE, lister__repaint);
|
bind(mappings, key_mouse_move, MDFR_NONE, lister__repaint);
|
||||||
bind(mappings, key_animate , 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_vanilla_keys(mappings, MDFR_ALT, write_character);
|
||||||
|
|
||||||
bind(mappings, key_mouse_left, MDFR_NONE, click_set_cursor_and_mark);
|
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_left_release, MDFR_NONE, click_set_cursor);
|
||||||
bind(mappings, key_mouse_move, MDFR_NONE, click_set_cursor_if_lbutton);
|
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_page_down, MDFR_NONE, lister__move_down);
|
||||||
bind(mappings, key_mouse_wheel , MDFR_NONE, lister__wheel_scroll);
|
bind(mappings, key_mouse_wheel , MDFR_NONE, lister__wheel_scroll);
|
||||||
bind(mappings, key_mouse_left , MDFR_NONE, lister__mouse_press);
|
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_left_release, MDFR_NONE, lister__mouse_release);
|
||||||
bind(mappings, key_mouse_move, MDFR_NONE, lister__repaint);
|
bind(mappings, key_mouse_move, MDFR_NONE, lister__repaint);
|
||||||
bind(mappings, key_animate , MDFR_NONE, lister__repaint);
|
bind(mappings, key_animate , MDFR_NONE, lister__repaint);
|
||||||
|
|
|
@ -191,7 +191,7 @@ interpret_render_buffer(Render_Target *t, Partition *growable_scratch){
|
||||||
f32 x = glyph->pos.x;
|
f32 x = glyph->pos.x;
|
||||||
f32 y = glyph->pos.y;
|
f32 y = glyph->pos.y;
|
||||||
|
|
||||||
f32_Rect xy = {0};
|
f32_Rect xy = {};
|
||||||
xy.x0 = x + bounds.xoff;
|
xy.x0 = x + bounds.xoff;
|
||||||
xy.y0 = y + bounds.yoff;
|
xy.y0 = y + bounds.yoff;
|
||||||
xy.x1 = x + bounds.xoff2;
|
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_u = 1.f/tex_width;
|
||||||
f32 unit_v = 1.f/tex_height;
|
f32 unit_v = 1.f/tex_height;
|
||||||
|
|
||||||
f32_Rect uv = {0};
|
f32_Rect uv = {};
|
||||||
uv.x0 = bounds.x0*unit_u;
|
uv.x0 = bounds.x0*unit_u;
|
||||||
uv.y0 = bounds.y0*unit_v;
|
uv.y0 = bounds.y0*unit_v;
|
||||||
uv.x1 = bounds.x1*unit_u;
|
uv.x1 = bounds.x1*unit_u;
|
||||||
|
|
|
@ -79,7 +79,7 @@ load_custom_code(){
|
||||||
LoadLibrary_BinaryDirectory,
|
LoadLibrary_BinaryDirectory,
|
||||||
};
|
};
|
||||||
|
|
||||||
char *custom_files[3] = {0};
|
char *custom_files[3] = {};
|
||||||
if (plat_settings.custom_dll != 0){
|
if (plat_settings.custom_dll != 0){
|
||||||
custom_files[0] = plat_settings.custom_dll;
|
custom_files[0] = plat_settings.custom_dll;
|
||||||
if (!plat_settings.custom_dll_is_strict){
|
if (!plat_settings.custom_dll_is_strict){
|
||||||
|
|
|
@ -128,9 +128,9 @@ Sys_Get_File_Change_Sig(system_get_file_change){
|
||||||
|
|
||||||
internal File_Data
|
internal File_Data
|
||||||
sysshared_load_file(char *filename){
|
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)){
|
if (system_load_handle(filename, &handle)){
|
||||||
u32 size = system_load_size(handle);
|
u32 size = system_load_size(handle);
|
||||||
|
|
||||||
|
@ -193,10 +193,10 @@ sysshared_partition_grow(Partition *part, i32 new_size){
|
||||||
|
|
||||||
internal void*
|
internal void*
|
||||||
sysshared_push_block(Partition *part, i32 size){
|
sysshared_push_block(Partition *part, i32 size){
|
||||||
void *result = push_block(part, size);
|
void *result = push_array(part, i8, size);
|
||||||
if (result == 0){
|
if (result == 0){
|
||||||
sysshared_partition_grow(part, size + part->max);
|
sysshared_partition_grow(part, size + part->max);
|
||||||
result = push_block(part, size);
|
result = push_array(part, i8, size);
|
||||||
}
|
}
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ struct File_Data{
|
||||||
u32 size;
|
u32 size;
|
||||||
b32 got_file;
|
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)
|
#define Sys_File_Can_Be_Made_Sig(name) b32 name(u8 *filename)
|
||||||
internal Sys_File_Can_Be_Made_Sig(system_file_can_be_made);
|
internal Sys_File_Can_Be_Made_Sig(system_file_can_be_made);
|
||||||
|
|
|
@ -258,7 +258,7 @@ Sys_Post_Job_Sig(system_post_job){
|
||||||
queue->max = new_max;
|
queue->max = new_max;
|
||||||
}
|
}
|
||||||
|
|
||||||
Full_Job_Data full_job = {0};
|
Full_Job_Data full_job = {};
|
||||||
full_job.job = job;
|
full_job.job = job;
|
||||||
full_job.running_thread = THREAD_NOT_ASSIGNED;
|
full_job.running_thread = THREAD_NOT_ASSIGNED;
|
||||||
full_job.id = result;
|
full_job.id = result;
|
||||||
|
|
|
@ -466,7 +466,7 @@ Sys_Font_Path(name, parameters){
|
||||||
fc_config = FcInitLoadConfigAndFonts();
|
fc_config = FcInitLoadConfigAndFonts();
|
||||||
}
|
}
|
||||||
|
|
||||||
Font_Path path = {0};
|
Font_Path path = {};
|
||||||
|
|
||||||
FcPattern *pattern_regular = FcPatternBuild(
|
FcPattern *pattern_regular = FcPatternBuild(
|
||||||
0,
|
0,
|
||||||
|
@ -833,7 +833,7 @@ struct glx_config_result{
|
||||||
internal glx_config_result
|
internal glx_config_result
|
||||||
ChooseGLXConfig(Display *XDisplay, int XScreenIndex)
|
ChooseGLXConfig(Display *XDisplay, int XScreenIndex)
|
||||||
{
|
{
|
||||||
glx_config_result Result = {0};
|
glx_config_result Result = {};
|
||||||
|
|
||||||
int DesiredAttributes[] = {
|
int DesiredAttributes[] = {
|
||||||
GLX_X_RENDERABLE , True,
|
GLX_X_RENDERABLE , True,
|
||||||
|
@ -881,7 +881,7 @@ struct Init_Input_Result{
|
||||||
XIMStyle best_style;
|
XIMStyle best_style;
|
||||||
XIC xic;
|
XIC xic;
|
||||||
};
|
};
|
||||||
static Init_Input_Result null_init_input_result = {0};
|
static Init_Input_Result null_init_input_result = {};
|
||||||
|
|
||||||
internal Init_Input_Result
|
internal Init_Input_Result
|
||||||
LinuxInputInit(Display *dpy, Window XWindow){
|
LinuxInputInit(Display *dpy, Window XWindow){
|
||||||
|
@ -1385,7 +1385,7 @@ LinuxHandleX11Events(void)
|
||||||
u32 key_no_caps = key;
|
u32 key_no_caps = key;
|
||||||
|
|
||||||
if (mods[MDFR_CAPS_INDEX] && status == XLookupBoth && event.xkey.keycode){
|
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);
|
event.xkey.state &= ~(LockMask);
|
||||||
|
|
||||||
Xutf8LookupString(linuxvars.input_context, &event.xkey, (char*)buff_no_caps, sizeof(buff_no_caps) - 1, NULL, &status);
|
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
|
// NOTE(allen): Application Core Update
|
||||||
target.buffer.pos = 0;
|
target.buffer.pos = 0;
|
||||||
Application_Step_Result result = {0};
|
Application_Step_Result result = {};
|
||||||
if (app.step != 0){
|
if (app.step != 0){
|
||||||
result = app.step(&sysfunc, &target, &memory_vars, &frame_input);
|
result = app.step(&sysfunc, &target, &memory_vars, &frame_input);
|
||||||
}
|
}
|
||||||
|
|
|
@ -358,7 +358,7 @@ Sys_Font_Path(name, parameters){
|
||||||
|
|
||||||
OSX_Font_Match match = osx_get_font_match(name, pt_size, italic, bold);
|
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;
|
Partition *part = &shared_vars.font_scratch;
|
||||||
path.temp = begin_temp_memory(part);
|
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;
|
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.shift) mods[MDFR_SHIFT_INDEX] = true;
|
||||||
if (modifier_flags.control) mods[MDFR_CONTROL_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){
|
if (osx_objc.has_clipboard_item){
|
||||||
clipboard_string = make_string(osx_objc.clipboard_data, osx_objc.clipboard_size);
|
clipboard_string = make_string(osx_objc.clipboard_data, osx_objc.clipboard_size);
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,7 +96,7 @@ static DISPLINK_SIG(osx_display_link);
|
||||||
is_dead_key = true;
|
is_dead_key = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
OSX_Keyboard_Modifiers mods = {0};
|
OSX_Keyboard_Modifiers mods = {};
|
||||||
NSEventModifierFlags flags = [NSEvent modifierFlags];
|
NSEventModifierFlags flags = [NSEvent modifierFlags];
|
||||||
mods.shift = ((flags & NSEventModifierFlagShift) != 0);
|
mods.shift = ((flags & NSEventModifierFlagShift) != 0);
|
||||||
mods.command = ((flags & NSEventModifierFlagCommand) != 0);
|
mods.command = ((flags & NSEventModifierFlagCommand) != 0);
|
||||||
|
@ -334,7 +334,7 @@ typedef struct{
|
||||||
volatile i64 lock;
|
volatile i64 lock;
|
||||||
} File_Change_Queue;
|
} File_Change_Queue;
|
||||||
|
|
||||||
static File_Change_Queue file_queue = {0};
|
static File_Change_Queue file_queue = {};
|
||||||
|
|
||||||
File_Change_Node*
|
File_Change_Node*
|
||||||
file_change_node(char *name){
|
file_change_node(char *name){
|
||||||
|
@ -376,7 +376,7 @@ typedef struct{
|
||||||
|
|
||||||
File_Watching_Handle
|
File_Watching_Handle
|
||||||
schedule_file_watching(char *f){
|
schedule_file_watching(char *f){
|
||||||
File_Watching_Handle handle = {0};
|
File_Watching_Handle handle = {};
|
||||||
|
|
||||||
CFStringRef arg = CFStringCreateWithCString(0, f, kCFStringEncodingUTF8);
|
CFStringRef arg = CFStringCreateWithCString(0, f, kCFStringEncodingUTF8);
|
||||||
|
|
||||||
|
@ -416,7 +416,7 @@ typedef struct File_Change_Table{
|
||||||
i32 size;
|
i32 size;
|
||||||
} File_Change_Table;
|
} File_Change_Table;
|
||||||
|
|
||||||
static File_Change_Table file_change_table = {0};
|
static File_Change_Table file_change_table = {};
|
||||||
|
|
||||||
void*
|
void*
|
||||||
osx_file_name_prefixed_length(char *name){
|
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;
|
used_base_file = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
OSX_Font_Match match = {0};
|
OSX_Font_Match match = {};
|
||||||
if (font != nil){
|
if (font != nil){
|
||||||
NSString *path = get_font_path(font);
|
NSString *path = get_font_path(font);
|
||||||
char *path_c = 0;
|
char *path_c = 0;
|
||||||
|
@ -798,7 +798,7 @@ osx_list_loadable_fonts(void){
|
||||||
|
|
||||||
NSArray<NSString*> *fonts = [font_manager availableFontFamilies];
|
NSArray<NSString*> *fonts = [font_manager availableFontFamilies];
|
||||||
|
|
||||||
OSX_Loadable_Fonts result = {0};
|
OSX_Loadable_Fonts result = {};
|
||||||
NSUInteger count_u = [fonts count];
|
NSUInteger count_u = [fonts count];
|
||||||
int count = (int)count_u;
|
int count = (int)count_u;
|
||||||
|
|
||||||
|
|
|
@ -329,7 +329,7 @@ Sys_Load_Size_Sig(system_load_size){
|
||||||
u32 result = 0;
|
u32 result = 0;
|
||||||
|
|
||||||
i32 fd = *(i32*)&handle;
|
i32 fd = *(i32*)&handle;
|
||||||
struct stat st = {0};
|
struct stat st = {};
|
||||||
|
|
||||||
if (fstat(fd, &st) == -1){
|
if (fstat(fd, &st) == -1){
|
||||||
LOGF("unable to stat a file\n");
|
LOGF("unable to stat a file\n");
|
||||||
|
|
|
@ -84,7 +84,7 @@ struct Control_Keys{
|
||||||
b8 l_alt;
|
b8 l_alt;
|
||||||
b8 r_alt;
|
b8 r_alt;
|
||||||
};
|
};
|
||||||
global Control_Keys null_control_keys = {0};
|
global Control_Keys null_control_keys = {};
|
||||||
|
|
||||||
struct Win32_Input_Chunk_Transient{
|
struct Win32_Input_Chunk_Transient{
|
||||||
Key_Input_Data key_data;
|
Key_Input_Data key_data;
|
||||||
|
@ -94,7 +94,7 @@ struct Win32_Input_Chunk_Transient{
|
||||||
i8 mouse_wheel;
|
i8 mouse_wheel;
|
||||||
b8 trying_to_kill;
|
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{
|
struct Win32_Input_Chunk_Persistent{
|
||||||
i32 mouse_x, mouse_y;
|
i32 mouse_x, mouse_y;
|
||||||
|
@ -207,7 +207,7 @@ handle_type(Plat_Handle h){
|
||||||
|
|
||||||
internal Plat_Handle
|
internal Plat_Handle
|
||||||
handle_type(HANDLE h){
|
handle_type(HANDLE h){
|
||||||
Plat_Handle result = {0};
|
Plat_Handle result = {};
|
||||||
memcpy(&result, &h, sizeof(h));
|
memcpy(&result, &h, sizeof(h));
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
@ -563,7 +563,7 @@ Sys_Font_Path_Not_Used;
|
||||||
|
|
||||||
internal
|
internal
|
||||||
Sys_Font_Data(name, parameters){
|
Sys_Font_Data(name, parameters){
|
||||||
Font_Raw_Data data = {0};
|
Font_Raw_Data data = {};
|
||||||
|
|
||||||
int weight = FW_REGULAR;
|
int weight = FW_REGULAR;
|
||||||
if (parameters->bold){
|
if (parameters->bold){
|
||||||
|
@ -678,11 +678,11 @@ internal void
|
||||||
win32_get_loadable_fonts(Partition *part, Font_Setup_List *list){
|
win32_get_loadable_fonts(Partition *part, Font_Setup_List *list){
|
||||||
HDC hdc= GetDC(0);
|
HDC hdc= GetDC(0);
|
||||||
|
|
||||||
LOGFONT log_font = {0};
|
LOGFONT log_font = {};
|
||||||
log_font.lfCharSet = ANSI_CHARSET;
|
log_font.lfCharSet = ANSI_CHARSET;
|
||||||
log_font.lfFaceName[0] = 0;
|
log_font.lfFaceName[0] = 0;
|
||||||
|
|
||||||
Win32_Font_Enum p = {0};
|
Win32_Font_Enum p = {};
|
||||||
p.part = part;
|
p.part = part;
|
||||||
p.list = list;
|
p.list = list;
|
||||||
|
|
||||||
|
@ -762,7 +762,7 @@ win32_init_gl(HDC hdc){
|
||||||
#define GLInitFail(s) system_error_box(FNLN "\nOpenGL init fail - " s )
|
#define GLInitFail(s) system_error_box(FNLN "\nOpenGL init fail - " s )
|
||||||
|
|
||||||
// Init First Context
|
// Init First Context
|
||||||
WNDCLASSA wglclass = {0};
|
WNDCLASSA wglclass = {};
|
||||||
wglclass.lpfnWndProc = DefWindowProcA;
|
wglclass.lpfnWndProc = DefWindowProcA;
|
||||||
wglclass.hInstance = GetModuleHandle(0);
|
wglclass.hInstance = GetModuleHandle(0);
|
||||||
wglclass.lpszClassName = "4ed-wgl-loader";
|
wglclass.lpszClassName = "4ed-wgl-loader";
|
||||||
|
@ -777,7 +777,7 @@ win32_init_gl(HDC hdc){
|
||||||
|
|
||||||
HDC hwgldc = GetDC(hwglwnd);
|
HDC hwgldc = GetDC(hwglwnd);
|
||||||
|
|
||||||
PIXELFORMATDESCRIPTOR format = {0};
|
PIXELFORMATDESCRIPTOR format = {};
|
||||||
format.nSize = sizeof(format);
|
format.nSize = sizeof(format);
|
||||||
format.nVersion = 1;
|
format.nVersion = 1;
|
||||||
//format.dwFlags = PFD_SUPPORT_OPENGL | PFD_DRAW_TO_WINDOW | PFD_DOUBLEBUFFER;
|
//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
|
// Window and GL Initialization
|
||||||
//
|
//
|
||||||
|
|
||||||
WNDCLASS window_class = {0};
|
WNDCLASS window_class = {};
|
||||||
window_class.style = CS_HREDRAW|CS_VREDRAW;
|
window_class.style = CS_HREDRAW|CS_VREDRAW;
|
||||||
window_class.lpfnWndProc = (WNDPROC)(win32_proc);
|
window_class.lpfnWndProc = (WNDPROC)(win32_proc);
|
||||||
window_class.hInstance = hInstance;
|
window_class.hInstance = hInstance;
|
||||||
|
@ -1253,7 +1253,7 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdS
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
RECT window_rect = {0};
|
RECT window_rect = {};
|
||||||
if (plat_settings.set_window_size){
|
if (plat_settings.set_window_size){
|
||||||
window_rect.right = plat_settings.window_w;
|
window_rect.right = plat_settings.window_w;
|
||||||
window_rect.bottom = plat_settings.window_h;
|
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;
|
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.first_step = win32vars.first;
|
||||||
input.dt = frame_useconds/1000000.f;
|
input.dt = frame_useconds/1000000.f;
|
||||||
|
@ -1588,7 +1588,7 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdS
|
||||||
|
|
||||||
// NOTE(allen): Application Core Update
|
// NOTE(allen): Application Core Update
|
||||||
target.buffer.pos = 0;
|
target.buffer.pos = 0;
|
||||||
Application_Step_Result result = {0};
|
Application_Step_Result result = {};
|
||||||
if (app.step != 0){
|
if (app.step != 0){
|
||||||
result = app.step(&sysfunc, &target, &memory_vars, &input);
|
result = app.step(&sysfunc, &target, &memory_vars, &input);
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ struct Win32_Directory_Listener{
|
||||||
HANDLE dir;
|
HANDLE dir;
|
||||||
i32 user_count;
|
i32 user_count;
|
||||||
};
|
};
|
||||||
global_const OVERLAPPED null_overlapped = {0};
|
global_const OVERLAPPED null_overlapped = {};
|
||||||
|
|
||||||
struct Win32_Directory_Listener_Node{
|
struct Win32_Directory_Listener_Node{
|
||||||
DLL_Node 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);
|
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){
|
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);
|
DWORD getinfo_result = GetFileInformationByHandle(dir, &dir_info);
|
||||||
|
|
||||||
if (getinfo_result){
|
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);
|
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){
|
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);
|
DWORD getinfo_result = GetFileInformationByHandle(dir, &dir_info);
|
||||||
|
|
||||||
if (getinfo_result){
|
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 i32 has_buffered_event = 0;
|
||||||
local_persist DWORD offset = 0;
|
local_persist DWORD offset = 0;
|
||||||
local_persist Win32_Directory_Listener listener = {0};
|
local_persist Win32_Directory_Listener listener = {};
|
||||||
|
|
||||||
EnterCriticalSection(&vars->table_lock);
|
EnterCriticalSection(&vars->table_lock);
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
internal Win32_UTF16
|
internal Win32_UTF16
|
||||||
input_8_to_16(Partition *scratch, u8 *in){
|
input_8_to_16(Partition *scratch, u8 *in){
|
||||||
Win32_UTF16 r = {0};
|
Win32_UTF16 r = {};
|
||||||
|
|
||||||
u32 utf8_len = 0;
|
u32 utf8_len = 0;
|
||||||
for (;in[utf8_len];++utf8_len);
|
for (;in[utf8_len];++utf8_len);
|
||||||
|
|
|
@ -35,7 +35,7 @@ struct Enriched_Text{
|
||||||
|
|
||||||
internal Enriched_Text
|
internal Enriched_Text
|
||||||
load_enriched_text(char *directory, char *filename){
|
load_enriched_text(char *directory, char *filename){
|
||||||
Enriched_Text result = {0};
|
Enriched_Text result = {};
|
||||||
char *fname = fm_str(directory, "/", filename);
|
char *fname = fm_str(directory, "/", filename);
|
||||||
result.fname = str_alloc(str_size(fname) + 1);
|
result.fname = str_alloc(str_size(fname) + 1);
|
||||||
fm_align();
|
fm_align();
|
||||||
|
@ -68,7 +68,7 @@ get_mangle_rule(String mangle){
|
||||||
|
|
||||||
internal String
|
internal String
|
||||||
apply_mangle_rule(String name, u32 mangle_rule){
|
apply_mangle_rule(String name, u32 mangle_rule){
|
||||||
String result = {0};
|
String result = {};
|
||||||
switch (mangle_rule){
|
switch (mangle_rule){
|
||||||
case MangleRule_MacroSig:
|
case MangleRule_MacroSig:
|
||||||
{
|
{
|
||||||
|
@ -154,7 +154,7 @@ struct Document_Item{
|
||||||
} include;
|
} 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 parse members
|
||||||
Meta_Unit *unit;
|
Meta_Unit *unit;
|
||||||
};
|
};
|
||||||
global Abstract_Item null_abstract_item = {0};
|
global Abstract_Item null_abstract_item = {};
|
||||||
|
|
||||||
internal Abstract_Item*
|
internal Abstract_Item*
|
||||||
get_item_by_name(Basic_List list, String name){
|
get_item_by_name(Basic_List list, String name){
|
||||||
|
@ -271,7 +271,7 @@ struct Abstract_Item_Array{
|
||||||
|
|
||||||
internal Abstract_Item_Array
|
internal Abstract_Item_Array
|
||||||
get_abstract_item_array(Basic_List *list){
|
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.items = (Abstract_Item**)fm_push_array(Abstract_Item*, list->count);
|
||||||
result.count = list->count;
|
result.count = list->count;
|
||||||
|
@ -303,7 +303,7 @@ struct Document_System{
|
||||||
|
|
||||||
internal Document_System
|
internal Document_System
|
||||||
create_document_system(char *code_dir, char *asset_dir, char *src_dir){
|
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.code_dir = code_dir;
|
||||||
system.asset_dir = asset_dir;
|
system.asset_dir = asset_dir;
|
||||||
system.src_dir = src_dir;
|
system.src_dir = src_dir;
|
||||||
|
@ -434,7 +434,7 @@ struct Document_Builder{
|
||||||
|
|
||||||
internal Document_Builder
|
internal Document_Builder
|
||||||
begin_document_description(Document_System *system, char *title, char *name, b32 show_title){
|
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);
|
Abstract_Item *doc = create_abstract_item(&system->doc_list, name);
|
||||||
if (doc != 0){
|
if (doc != 0){
|
||||||
builder.doc = doc;
|
builder.doc = doc;
|
||||||
|
@ -753,9 +753,9 @@ make_document_from_text(Document_System *doc_system, char *title, char *name, En
|
||||||
|
|
||||||
case Cmd_Section:
|
case Cmd_Section:
|
||||||
{
|
{
|
||||||
String body_text = {0};
|
String body_text = {};
|
||||||
if (extract_command_body(l, &i, &body_text)){
|
if (extract_command_body(l, &i, &body_text)){
|
||||||
String extra_text = {0};
|
String extra_text = {};
|
||||||
extract_command_body(l, &i, &extra_text);
|
extract_command_body(l, &i, &extra_text);
|
||||||
|
|
||||||
char *title = get_null_terminated_version(body_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:
|
case Cmd_Style:
|
||||||
{
|
{
|
||||||
String body_text = {0};
|
String body_text = {};
|
||||||
if (extract_command_body(l, &i, &body_text)){
|
if (extract_command_body(l, &i, &body_text)){
|
||||||
begin_style(&builder, 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:
|
case Cmd_Link:
|
||||||
{
|
{
|
||||||
String body_text = {0};
|
String body_text = {};
|
||||||
if (extract_command_body(l, &i, &body_text)){
|
if (extract_command_body(l, &i, &body_text)){
|
||||||
begin_link(&builder, 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
|
// TODO(allen): upgrade this bs
|
||||||
case Cmd_DocumentLink:
|
case Cmd_DocumentLink:
|
||||||
{
|
{
|
||||||
String body_text = {0};
|
String body_text = {};
|
||||||
if (extract_command_body(l, &i, &body_text)){
|
if (extract_command_body(l, &i, &body_text)){
|
||||||
add_document_link(&builder, 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:
|
case Cmd_Image:
|
||||||
{
|
{
|
||||||
String body_text = {0};
|
String body_text = {};
|
||||||
if (extract_command_body(l, &i, &body_text)){
|
if (extract_command_body(l, &i, &body_text)){
|
||||||
String size_parameter = {0};
|
String size_parameter = {};
|
||||||
extract_command_body(l, &i, &size_parameter);
|
extract_command_body(l, &i, &size_parameter);
|
||||||
add_image(&builder, body_text, 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:
|
case Cmd_Video:
|
||||||
{
|
{
|
||||||
String body_text = {0};
|
String body_text = {};
|
||||||
if (extract_command_body(l, &i, &body_text)){
|
if (extract_command_body(l, &i, &body_text)){
|
||||||
add_video(&builder, 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:
|
case Cmd_Include:
|
||||||
{
|
{
|
||||||
String body_text = {0};
|
String body_text = {};
|
||||||
if (extract_command_body(l, &i, &body_text)){
|
if (extract_command_body(l, &i, &body_text)){
|
||||||
add_include(doc_system, &builder, 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:
|
case Cmd_MetaParse:
|
||||||
{
|
{
|
||||||
String name = {0};
|
String name = {};
|
||||||
String file = {0};
|
String file = {};
|
||||||
if (extract_command_body(l, &i, &name)){
|
if (extract_command_body(l, &i, &name)){
|
||||||
if (extract_command_body(l, &i, &file)){
|
if (extract_command_body(l, &i, &file)){
|
||||||
u32 result = create_meta_unit(doc_system, name, 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_DocList:
|
||||||
case Cmd_DocFull:
|
case Cmd_DocFull:
|
||||||
{
|
{
|
||||||
String name = {0};
|
String name = {};
|
||||||
if (extract_command_body(l, &i, &name)){
|
if (extract_command_body(l, &i, &name)){
|
||||||
String mangle = {0};
|
String mangle = {};
|
||||||
extract_command_body(l, &i, &mangle);
|
extract_command_body(l, &i, &mangle);
|
||||||
|
|
||||||
u32 mangle_rule = MangleRule_None;
|
u32 mangle_rule = MangleRule_None;
|
||||||
|
@ -953,7 +953,7 @@ struct Unresolved_Include_Array{
|
||||||
|
|
||||||
internal Unresolved_Include_Array
|
internal Unresolved_Include_Array
|
||||||
get_unresolved_includes(Document_System *doc_system){
|
get_unresolved_includes(Document_System *doc_system){
|
||||||
Unresolved_Include_Array result = {0};
|
Unresolved_Include_Array result = {};
|
||||||
|
|
||||||
Basic_List *list = &doc_system->unresolved_includes;
|
Basic_List *list = &doc_system->unresolved_includes;
|
||||||
result.items = (Document_Item**)fm_push_array(Document_Item*, list->count);
|
result.items = (Document_Item**)fm_push_array(Document_Item*, list->count);
|
||||||
|
@ -1460,8 +1460,8 @@ global String doc_chunk_headers[] = {
|
||||||
|
|
||||||
internal String
|
internal String
|
||||||
get_next_doc_chunk(String source, String prev_chunk, Doc_Chunk_Type *type){
|
get_next_doc_chunk(String source, String prev_chunk, Doc_Chunk_Type *type){
|
||||||
String chunk = {0};
|
String chunk = {};
|
||||||
String word = {0};
|
String word = {};
|
||||||
i32 pos = source.size;
|
i32 pos = source.size;
|
||||||
i32 word_index = 0;
|
i32 word_index = 0;
|
||||||
Doc_Chunk_Type t = DocChunk_PlainText;
|
Doc_Chunk_Type t = DocChunk_PlainText;
|
||||||
|
@ -1604,7 +1604,7 @@ print_struct_docs(String *out, Item_Node *member){
|
||||||
print_struct_docs(out, member_iter);
|
print_struct_docs(out, member_iter);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
Documentation doc = {0};
|
Documentation doc = {};
|
||||||
perform_doc_parse(member_iter->doc_string, &doc);
|
perform_doc_parse(member_iter->doc_string, &doc);
|
||||||
|
|
||||||
append(out, "<div>");
|
append(out, "<div>");
|
||||||
|
@ -1648,7 +1648,7 @@ print_function_docs(String *out, String name, String doc_string){
|
||||||
|
|
||||||
Temp temp = fm_begin_temp();
|
Temp temp = fm_begin_temp();
|
||||||
|
|
||||||
Documentation doc = {0};
|
Documentation doc = {};
|
||||||
|
|
||||||
perform_doc_parse(doc_string, &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
|
// NOTE(allen): Descriptive section
|
||||||
String doc_string = item->doc_string;
|
String doc_string = item->doc_string;
|
||||||
Documentation doc = {0};
|
Documentation doc = {};
|
||||||
perform_doc_parse(doc_string, &doc);
|
perform_doc_parse(doc_string, &doc);
|
||||||
|
|
||||||
String main_doc = doc.main_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
|
// NOTE(allen): Descriptive section
|
||||||
String doc_string = item->doc_string;
|
String doc_string = item->doc_string;
|
||||||
Documentation doc = {0};
|
Documentation doc = {};
|
||||||
perform_doc_parse(doc_string, &doc);
|
perform_doc_parse(doc_string, &doc);
|
||||||
|
|
||||||
String main_doc = doc.main_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;
|
for (Item_Node *member = item->first_child;
|
||||||
member;
|
member;
|
||||||
member = member->next_sibling){
|
member = member->next_sibling){
|
||||||
Documentation doc = {0};
|
Documentation doc = {};
|
||||||
perform_doc_parse(member->doc_string, &doc);
|
perform_doc_parse(member->doc_string, &doc);
|
||||||
|
|
||||||
append(out, "<div>");
|
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
|
// NOTE(allen): Descriptive section
|
||||||
{
|
{
|
||||||
Documentation doc = {0};
|
Documentation doc = {};
|
||||||
perform_doc_parse(doc_string, &doc);
|
perform_doc_parse(doc_string, &doc);
|
||||||
|
|
||||||
String main_doc = doc.main_doc;
|
String main_doc = doc.main_doc;
|
||||||
|
@ -1973,7 +1973,7 @@ struct Document_Output_System{
|
||||||
|
|
||||||
internal 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){
|
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.out = out;
|
||||||
sys.doc_system = doc_system;
|
sys.doc_system = doc_system;
|
||||||
sys.used_links = used_links;
|
sys.used_links = used_links;
|
||||||
|
@ -2239,7 +2239,7 @@ generate_item_html(Document_Output_System sys, Document_Item *item){
|
||||||
|
|
||||||
if (duplicate){
|
if (duplicate){
|
||||||
String error = make_lit_string("recursive inclusion, halted here");
|
String error = make_lit_string("recursive inclusion, halted here");
|
||||||
Document_Item temp_item = {0};
|
Document_Item temp_item = {};
|
||||||
temp_item.type = Doc_Error;
|
temp_item.type = Doc_Error;
|
||||||
set_item_string(&temp_item.string.string, error);
|
set_item_string(&temp_item.string.string, error);
|
||||||
generate_item_html(sys, &temp_item);
|
generate_item_html(sys, &temp_item);
|
||||||
|
@ -2265,13 +2265,13 @@ internal void
|
||||||
generate_document_html(String *out, Document_System *doc_system, Abstract_Item *doc){
|
generate_document_html(String *out, Document_System *doc_system, Abstract_Item *doc){
|
||||||
Assert(doc->root_item != 0);
|
Assert(doc->root_item != 0);
|
||||||
|
|
||||||
Used_Links used_links = {0};
|
Used_Links used_links = {};
|
||||||
init_used_links(&used_links, 4000);
|
init_used_links(&used_links, 4000);
|
||||||
|
|
||||||
Section_Counter section_counter = {0};
|
Section_Counter section_counter = {};
|
||||||
section_counter.counter[section_counter.nest_level] = 1;
|
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, §ion_counter, &inc_stack);
|
Document_Output_System sys = make_output_system(out, doc_system, &used_links, §ion_counter, &inc_stack);
|
||||||
|
|
||||||
|
|
|
@ -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 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 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} <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
|
||||||
\END
|
\END
|
||||||
\SECTION{default-lister-ui-map}
|
\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 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 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} <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
|
||||||
\END
|
\END
|
||||||
\SECTION{default-lister-ui-map}
|
\SECTION{default-lister-ui-map}
|
||||||
|
|
|
@ -96,7 +96,7 @@ save_build_number(char *file_name, i32 major, i32 minor, i32 build){
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
print_function_body_code(String *out, Parse_Context *context, i32 start){
|
print_function_body_code(String *out, Parse_Context *context, i32 start){
|
||||||
String pstr = {0}, lexeme = {0};
|
String pstr = {}, lexeme = {};
|
||||||
Cpp_Token *token = 0;
|
Cpp_Token *token = 0;
|
||||||
|
|
||||||
i32 do_print = 0;
|
i32 do_print = 0;
|
||||||
|
@ -223,7 +223,7 @@ int main(){
|
||||||
|
|
||||||
append(&out, "*/\n");
|
append(&out, "*/\n");
|
||||||
|
|
||||||
String pstr = {0};
|
String pstr = {};
|
||||||
i32 do_whitespace_print = true;
|
i32 do_whitespace_print = true;
|
||||||
|
|
||||||
for(;(token = get_next_token(&pcontext)) != 0;){
|
for(;(token = get_next_token(&pcontext)) != 0;){
|
||||||
|
|
|
@ -42,7 +42,7 @@ typedef struct String{
|
||||||
i32_4tech memory_size;
|
i32_4tech memory_size;
|
||||||
} String;
|
} String;
|
||||||
|
|
||||||
static String null_string = {0};
|
static String null_string = {};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
FSTRING_DECLS
|
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.
|
/* 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
|
Like other substr calls, the new string uses the underlying memory and so should usually be
|
||||||
considered immutable.) DOC_SEE(substr) */{
|
considered immutable.) DOC_SEE(substr) */{
|
||||||
String result = {0};
|
String result = {};
|
||||||
i32_4tech i = 0;
|
i32_4tech i = 0;
|
||||||
for (; i < str.size && char_is_whitespace(str.str[i]); ++i);
|
for (; i < str.size && char_is_whitespace(str.str[i]); ++i);
|
||||||
result = substr(str, i, str.size - 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.
|
/* 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
|
Like other substr calls, the new string uses the underlying memory and so should usually be
|
||||||
considered immutable.) DOC_SEE(substr) */{
|
considered immutable.) DOC_SEE(substr) */{
|
||||||
String result = {0};
|
String result = {};
|
||||||
i32_4tech i = 0;
|
i32_4tech i = 0;
|
||||||
for (; i < str.size && char_is_whitespace(str.str[i]); ++i);
|
for (; i < str.size && char_is_whitespace(str.str[i]); ++i);
|
||||||
result = substr(str, i, str.size - 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.
|
/* 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
|
Like other substr calls, the new string uses the underlying memory and so should usually be
|
||||||
considered immutable.) DOC_SEE(substr) */{
|
considered immutable.) DOC_SEE(substr) */{
|
||||||
String result = {0};
|
String result = {};
|
||||||
i32_4tech i = str.size;
|
i32_4tech i = str.size;
|
||||||
for (; i > 0 && char_is_whitespace(str.str[i-1]); --i);
|
for (; i > 0 && char_is_whitespace(str.str[i-1]); --i);
|
||||||
result = substr(str, 0, i);
|
result = substr(str, 0, i);
|
||||||
|
@ -1674,7 +1674,7 @@ typedef struct Float_To_Str_Variables{
|
||||||
|
|
||||||
static Float_To_Str_Variables
|
static Float_To_Str_Variables
|
||||||
get_float_vars(float x){
|
get_float_vars(float x){
|
||||||
Float_To_Str_Variables vars = {0};
|
Float_To_Str_Variables vars = {};
|
||||||
|
|
||||||
if (x < 0){
|
if (x < 0){
|
||||||
vars.negative = 1;
|
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(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)
|
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 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"));
|
i32_4tech pos1 = find_substr_s(source, 0, make_lit_string("\r\n\r\n"));
|
||||||
if (pos1 < pos0){
|
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_RETURN(The returned value is the first 'double line' in the source string.)
|
||||||
DOC_SEE(get_first_double_line)
|
DOC_SEE(get_first_double_line)
|
||||||
*/{
|
*/{
|
||||||
String next = {0};
|
String next = {};
|
||||||
i32_4tech pos = (i32_4tech)(line.str - source.str) + line.size;
|
i32_4tech pos = (i32_4tech)(line.str - source.str) + line.size;
|
||||||
i32_4tech start = 0, pos0 = 0, pos1 = 0;
|
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)
|
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 pos0 = (i32_4tech)(prev_word.str - source.str) + prev_word.size;
|
||||||
i32_4tech pos1 = 0;
|
i32_4tech pos1 = 0;
|
||||||
char c = 0;
|
char c = 0;
|
||||||
|
|
Loading…
Reference in New Issue