Fixed auto-indent crash bug; also progress on whatever
This commit is contained in:
parent
7a507ee6e4
commit
7af92c4b56
|
@ -73,11 +73,11 @@ api_get_api(Arena *arena, API_Definition_List *list, String_Const_u8 name){
|
||||||
|
|
||||||
function void
|
function void
|
||||||
generate_api_master_list(Arena *scratch, API_Definition *api, FILE *out){
|
generate_api_master_list(Arena *scratch, API_Definition *api, FILE *out){
|
||||||
fprintf(out, "// %.*s\n", string_expand(api->name));
|
|
||||||
for (API_Call *call = api->first;
|
for (API_Call *call = api->first;
|
||||||
call != 0;
|
call != 0;
|
||||||
call = call->next){
|
call = call->next){
|
||||||
fprintf(out, "%.*s %.*s(",
|
fprintf(out, "api(%.*s) function %.*s %.*s(",
|
||||||
|
string_expand(api->name),
|
||||||
string_expand(call->return_type),
|
string_expand(call->return_type),
|
||||||
string_expand(call->name));
|
string_expand(call->name));
|
||||||
if (call->params.count == 0){
|
if (call->params.count == 0){
|
||||||
|
|
|
@ -212,13 +212,6 @@ int
|
||||||
main(int argc, char **argv){
|
main(int argc, char **argv){
|
||||||
Arena arena = make_arena_malloc();
|
Arena arena = make_arena_malloc();
|
||||||
|
|
||||||
char *hack[] = {
|
|
||||||
"nothing",
|
|
||||||
"../code/4ed_api_implementation.cpp"
|
|
||||||
};
|
|
||||||
argv = hack;
|
|
||||||
argc = 2;
|
|
||||||
|
|
||||||
if (argc < 2){
|
if (argc < 2){
|
||||||
printf("usage: <script> <source> {<source>}\n"
|
printf("usage: <script> <source> {<source>}\n"
|
||||||
" source : file to load and parse into the output list\n");
|
" source : file to load and parse into the output list\n");
|
||||||
|
|
|
@ -63,42 +63,46 @@ set_line_indents(Application_Links *app, Arena *arena, Buffer_ID buffer, Range_i
|
||||||
|
|
||||||
internal Token*
|
internal Token*
|
||||||
find_anchor_token(Application_Links *app, Buffer_ID buffer, Token_Array *tokens, i64 invalid_line){
|
find_anchor_token(Application_Links *app, Buffer_ID buffer, Token_Array *tokens, i64 invalid_line){
|
||||||
Token *result = tokens->tokens;
|
Token *result = 0;
|
||||||
i64 invalid_pos = get_line_start_pos(app, buffer, invalid_line);
|
|
||||||
|
|
||||||
i32 scope_counter = 0;
|
if (tokens != 0 && tokens->tokens != 0){
|
||||||
i32 paren_counter = 0;
|
result = tokens->tokens;
|
||||||
Token *token = tokens->tokens;
|
i64 invalid_pos = get_line_start_pos(app, buffer, invalid_line);
|
||||||
for (;;token += 1){
|
|
||||||
if (token->pos + token->size > invalid_pos){
|
i32 scope_counter = 0;
|
||||||
break;
|
i32 paren_counter = 0;
|
||||||
}
|
Token *token = tokens->tokens;
|
||||||
if (!HasFlag(token->flags, TokenBaseFlag_PreprocessorBody)){
|
for (;;token += 1){
|
||||||
if (scope_counter == 0 && paren_counter == 0){
|
if (token->pos + token->size > invalid_pos){
|
||||||
result = token;
|
break;
|
||||||
}
|
}
|
||||||
switch (token->kind){
|
if (!HasFlag(token->flags, TokenBaseFlag_PreprocessorBody)){
|
||||||
case TokenBaseKind_ScopeOpen:
|
if (scope_counter == 0 && paren_counter == 0){
|
||||||
{
|
result = token;
|
||||||
scope_counter += 1;
|
}
|
||||||
}break;
|
switch (token->kind){
|
||||||
case TokenBaseKind_ScopeClose:
|
case TokenBaseKind_ScopeOpen:
|
||||||
{
|
{
|
||||||
paren_counter = 0;
|
scope_counter += 1;
|
||||||
if (scope_counter > 0){
|
}break;
|
||||||
scope_counter -= 1;
|
case TokenBaseKind_ScopeClose:
|
||||||
}
|
{
|
||||||
}break;
|
paren_counter = 0;
|
||||||
case TokenBaseKind_ParentheticalOpen:
|
if (scope_counter > 0){
|
||||||
{
|
scope_counter -= 1;
|
||||||
paren_counter += 1;
|
}
|
||||||
}break;
|
}break;
|
||||||
case TokenBaseKind_ParentheticalClose:
|
case TokenBaseKind_ParentheticalOpen:
|
||||||
{
|
{
|
||||||
if (paren_counter > 0){
|
paren_counter += 1;
|
||||||
paren_counter -= 1;
|
}break;
|
||||||
}
|
case TokenBaseKind_ParentheticalClose:
|
||||||
}break;
|
{
|
||||||
|
if (paren_counter > 0){
|
||||||
|
paren_counter -= 1;
|
||||||
|
}
|
||||||
|
}break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -257,7 +261,7 @@ auto_indent_buffer(Application_Links *app, Buffer_ID buffer, Range_i64 pos, Inde
|
||||||
Token_Array *tokens = scope_attachment(app, scope, attachment_tokens, Token_Array);
|
Token_Array *tokens = scope_attachment(app, scope, attachment_tokens, Token_Array);
|
||||||
|
|
||||||
b32 result = false;
|
b32 result = false;
|
||||||
if (tokens != 0){
|
if (tokens != 0 && tokens->tokens != 0){
|
||||||
result = true;
|
result = true;
|
||||||
|
|
||||||
Scratch_Block scratch(app);
|
Scratch_Block scratch(app);
|
||||||
|
|
|
@ -387,10 +387,10 @@ static Command_Metadata fcoder_metacmd_table[226] = {
|
||||||
{ PROC_LINKS(interactive_new, 0), "interactive_new", 15, "Interactively creates a new file.", 33, "w:\\4ed\\code\\custom\\4coder_lists.cpp", 35, 847 },
|
{ PROC_LINKS(interactive_new, 0), "interactive_new", 15, "Interactively creates a new file.", 33, "w:\\4ed\\code\\custom\\4coder_lists.cpp", 35, 847 },
|
||||||
{ PROC_LINKS(interactive_open, 0), "interactive_open", 16, "Interactively opens a file.", 27, "w:\\4ed\\code\\custom\\4coder_lists.cpp", 35, 880 },
|
{ PROC_LINKS(interactive_open, 0), "interactive_open", 16, "Interactively opens a file.", 27, "w:\\4ed\\code\\custom\\4coder_lists.cpp", 35, 880 },
|
||||||
{ PROC_LINKS(command_lister, 0), "command_lister", 14, "Opens an interactive list of all registered commands.", 53, "w:\\4ed\\code\\custom\\4coder_lists.cpp", 35, 960 },
|
{ PROC_LINKS(command_lister, 0), "command_lister", 14, "Opens an interactive list of all registered commands.", 53, "w:\\4ed\\code\\custom\\4coder_lists.cpp", 35, 960 },
|
||||||
{ PROC_LINKS(auto_tab_whole_file, 0), "auto_tab_whole_file", 19, "Audo-indents the entire current buffer.", 39, "w:\\4ed\\code\\custom\\4coder_auto_indent.cpp", 41, 309 },
|
{ PROC_LINKS(auto_tab_whole_file, 0), "auto_tab_whole_file", 19, "Audo-indents the entire current buffer.", 39, "w:\\4ed\\code\\custom\\4coder_auto_indent.cpp", 41, 313 },
|
||||||
{ 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\\custom\\4coder_auto_indent.cpp", 41, 318 },
|
{ 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\\custom\\4coder_auto_indent.cpp", 41, 322 },
|
||||||
{ PROC_LINKS(auto_tab_range, 0), "auto_tab_range", 14, "Auto-indents the range between the cursor and the mark.", 55, "w:\\4ed\\code\\custom\\4coder_auto_indent.cpp", 41, 328 },
|
{ PROC_LINKS(auto_tab_range, 0), "auto_tab_range", 14, "Auto-indents the range between the cursor and the mark.", 55, "w:\\4ed\\code\\custom\\4coder_auto_indent.cpp", 41, 332 },
|
||||||
{ 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\\custom\\4coder_auto_indent.cpp", 41, 338 },
|
{ 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\\custom\\4coder_auto_indent.cpp", 41, 342 },
|
||||||
{ 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\\custom\\4coder_search.cpp", 36, 166 },
|
{ 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\\custom\\4coder_search.cpp", 36, 166 },
|
||||||
{ 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\\custom\\4coder_search.cpp", 36, 172 },
|
{ 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\\custom\\4coder_search.cpp", 36, 172 },
|
||||||
{ 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\\custom\\4coder_search.cpp", 36, 178 },
|
{ 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\\custom\\4coder_search.cpp", 36, 178 },
|
||||||
|
|
|
@ -59,7 +59,7 @@ command_list = {
|
||||||
|
|
||||||
{ .name = "build api parser",
|
{ .name = "build api parser",
|
||||||
.out = "*compilation*", .footer_panel = true, .save_dirty_files = true,
|
.out = "*compilation*", .footer_panel = true, .save_dirty_files = true,
|
||||||
.cmd = { { "custom\\bin\\build_one_time 4ed_api_parser.cpp ..\\build", .os = "win" }, }, },
|
.cmd = { { "custom\\bin\\build_one_time 4ed_api_parser.cpp ..\\build & copy /B one_time.exe api_parser.exe", .os = "win" }, }, },
|
||||||
};
|
};
|
||||||
|
|
||||||
fkey_command[1] = "build x64";
|
fkey_command[1] = "build x64";
|
||||||
|
|
Loading…
Reference in New Issue