Fix mysterious regression of project conversion path (???)
							parent
							
								
									ff8b39f4b7
								
							
						
					
					
						commit
						aa9004e92b
					
				|  | @ -1497,6 +1497,7 @@ load_config_and_apply(Application_Links *app, Arena *out_arena, i32 override_fon | ||||||
|             // TODO(allen): this always applies to "def_config" need to get "usr_config" working too
 |             // TODO(allen): this always applies to "def_config" need to get "usr_config" working too
 | ||||||
|             Variable_Handle config_var = def_fill_var_from_config(app, vars_get_root(), vars_save_string_lit("def_config"), parsed); |             Variable_Handle config_var = def_fill_var_from_config(app, vars_get_root(), vars_save_string_lit("def_config"), parsed); | ||||||
| 			vars_print(app, config_var); | 			vars_print(app, config_var); | ||||||
|  |             print_message(app, string_u8_litexpr("\n")); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     else{ |     else{ | ||||||
|  |  | ||||||
|  | @ -14,7 +14,9 @@ get_pattern_array_from_string_array(Arena *arena, String_Const_u8_Array list){ | ||||||
|     Project_File_Pattern_Array array = {}; |     Project_File_Pattern_Array array = {}; | ||||||
|     array.count = list.count; |     array.count = list.count; | ||||||
|     array.patterns = push_array(arena, Project_File_Pattern, list.count); |     array.patterns = push_array(arena, Project_File_Pattern, list.count); | ||||||
|     for (i32 i = 0; i < list.count; ++i){ |     for (i32 i = 0; | ||||||
|  |          i < list.count; | ||||||
|  |          ++i){ | ||||||
|         String_Const_u8 str = push_u8_stringf(arena, "*.%.*s", string_expand(list.strings[i])); |         String_Const_u8 str = push_u8_stringf(arena, "*.%.*s", string_expand(list.strings[i])); | ||||||
|         array.patterns[i].absolutes = string_split_wildcards(arena, str); |         array.patterns[i].absolutes = string_split_wildcards(arena, str); | ||||||
|     } |     } | ||||||
|  | @ -648,78 +650,10 @@ prj_join_pattern_string(Arena *arena, List_String_Const_u8 list){ | ||||||
|     return(pattern_string); |     return(pattern_string); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function void | function Variable_Handle | ||||||
| set_current_project(Application_Links *app, Project *project, Config *parsed){ | prj_version_1_to_version_2(Application_Links *app, Config *parsed, Project *project){ | ||||||
|     b32 print_feedback = false; |  | ||||||
|     Scratch_Block scratch(app); |     Scratch_Block scratch(app); | ||||||
|      |      | ||||||
|     if (parsed != 0 && project != 0){ |  | ||||||
|         if (current_project_arena.base_allocator == 0){ |  | ||||||
|             current_project_arena = make_arena_system(); |  | ||||||
|         } |  | ||||||
|          |  | ||||||
|         // Copy project to current_project
 |  | ||||||
|         linalloc_clear(¤t_project_arena); |  | ||||||
|         Project new_project = project_deep_copy(¤t_project_arena, project); |  | ||||||
|         if (new_project.loaded){ |  | ||||||
|             current_project = new_project; |  | ||||||
|              |  | ||||||
|             print_feedback = true; |  | ||||||
|              |  | ||||||
|             // NOTE(allen): Set the normal search list's project slot
 |  | ||||||
|             def_search_project_path = current_project.dir; |  | ||||||
|              |  | ||||||
|             // Open all project files
 |  | ||||||
|             for (i32 i = 0; i < current_project.load_path_array.count; ++i){ |  | ||||||
|                 Project_File_Load_Path *load_path = ¤t_project.load_path_array.paths[i]; |  | ||||||
|                 u32 flags = 0; |  | ||||||
|                 if (load_path->recursive){ |  | ||||||
|                     flags |= OpenAllFilesFlag_Recursive; |  | ||||||
|                 } |  | ||||||
|                  |  | ||||||
|                 Temp_Memory temp = begin_temp(scratch); |  | ||||||
|                 String_Const_u8 path_str = load_path->path; |  | ||||||
|                 String_Const_u8 file_dir = path_str; |  | ||||||
|                 if (load_path->relative){ |  | ||||||
|                     String_Const_u8 project_dir = current_project.dir; |  | ||||||
|                     List_String_Const_u8 file_dir_list = {}; |  | ||||||
|                     string_list_push(scratch, &file_dir_list, project_dir); |  | ||||||
|                     string_list_push_overlap(scratch, &file_dir_list, '/', path_str); |  | ||||||
|                     string_list_push_overlap(scratch, &file_dir_list, '/', SCu8()); |  | ||||||
|                     file_dir = string_list_flatten(scratch, file_dir_list, StringFill_NullTerminate); |  | ||||||
|                 } |  | ||||||
|                  |  | ||||||
|                 Project_File_Pattern_Array whitelist = current_project.pattern_array; |  | ||||||
|                 Project_File_Pattern_Array blacklist = current_project.blacklist_pattern_array; |  | ||||||
|                 open_files_pattern_match(app, file_dir, whitelist, blacklist, flags); |  | ||||||
|                 end_temp(temp); |  | ||||||
|             } |  | ||||||
|              |  | ||||||
|             // Set window title
 |  | ||||||
|             if (project->name.size > 0){ |  | ||||||
|                 Temp_Memory temp = begin_temp(scratch); |  | ||||||
|                 String_Const_u8 builder = push_u8_stringf(scratch, "4coder project: %.*s", |  | ||||||
|                                                           string_expand(project->name)); |  | ||||||
|                 set_window_title(app, builder); |  | ||||||
|                 end_temp(temp); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         else{ |  | ||||||
| #define M "Failed to initialize new project; need more memory dedicated to the project system.\n" |  | ||||||
|             print_message(app, string_u8_litexpr(M)); |  | ||||||
| #undef M |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|     else if (parsed != 0){ |  | ||||||
|         print_feedback = true; |  | ||||||
|     } |  | ||||||
|      |  | ||||||
|     if (project != 0){ |  | ||||||
|         Variable_Handle proj_var = {}; |  | ||||||
|          |  | ||||||
|         if (parsed->version == 0 || *parsed->version < 2){ |  | ||||||
|             print_message(app, string_u8_litexpr("Project variables converted from version 1 to version 2\n")); |  | ||||||
|              |  | ||||||
|     String_ID project_id = vars_save_string_lit("prj_config"); |     String_ID project_id = vars_save_string_lit("prj_config"); | ||||||
|     String_ID version_id = vars_save_string(string_litinit("version")); |     String_ID version_id = vars_save_string(string_litinit("version")); | ||||||
|     String_ID project_name_id = vars_save_string(string_litinit("project_name")); |     String_ID project_name_id = vars_save_string(string_litinit("project_name")); | ||||||
|  | @ -744,7 +678,7 @@ set_current_project(Application_Links *app, Project *project, Config *parsed){ | ||||||
|     // TODO(allen): linux, mac
 |     // TODO(allen): linux, mac
 | ||||||
|     String_ID os_id = vars_save_string(string_litinit("win"));; |     String_ID os_id = vars_save_string(string_litinit("win"));; | ||||||
|      |      | ||||||
|             proj_var = vars_new_variable(vars_get_root(), project_id, vars_save_string(parsed->file_name)); |     Variable_Handle proj_var = vars_new_variable(vars_get_root(), project_id, vars_save_string(parsed->file_name)); | ||||||
|      |      | ||||||
|     if (parsed->version != 0){ |     if (parsed->version != 0){ | ||||||
|         String_Const_u8 version_str = push_stringf(scratch, "%d", *parsed->version); |         String_Const_u8 version_str = push_stringf(scratch, "%d", *parsed->version); | ||||||
|  | @ -822,12 +756,90 @@ set_current_project(Application_Links *app, Project *project, Config *parsed){ | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  | 	return(proj_var); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | function void | ||||||
|  | set_current_project(Application_Links *app, Project *project, Config *parsed){ | ||||||
|  |     b32 print_feedback = false; | ||||||
|  |     Scratch_Block scratch(app); | ||||||
|  |      | ||||||
|  |     if (parsed != 0 && project != 0){ | ||||||
|  |         if (current_project_arena.base_allocator == 0){ | ||||||
|  |             current_project_arena = make_arena_system(); | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |         // Copy project to current_project
 | ||||||
|  |         linalloc_clear(¤t_project_arena); | ||||||
|  |         Project new_project = project_deep_copy(¤t_project_arena, project); | ||||||
|  |         if (new_project.loaded){ | ||||||
|  |             current_project = new_project; | ||||||
|  |              | ||||||
|  |             print_feedback = true; | ||||||
|  |              | ||||||
|  |             // NOTE(allen): Set the normal search list's project slot
 | ||||||
|  |             def_search_project_path = current_project.dir; | ||||||
|  |              | ||||||
|  |             // Open all project files
 | ||||||
|  |             for (i32 i = 0; i < current_project.load_path_array.count; ++i){ | ||||||
|  |                 Project_File_Load_Path *load_path = ¤t_project.load_path_array.paths[i]; | ||||||
|  |                 u32 flags = 0; | ||||||
|  |                 if (load_path->recursive){ | ||||||
|  |                     flags |= OpenAllFilesFlag_Recursive; | ||||||
|  |                 } | ||||||
|  |                  | ||||||
|  |                 Temp_Memory temp = begin_temp(scratch); | ||||||
|  |                 String_Const_u8 path_str = load_path->path; | ||||||
|  |                 String_Const_u8 file_dir = path_str; | ||||||
|  |                 if (load_path->relative){ | ||||||
|  |                     String_Const_u8 project_dir = current_project.dir; | ||||||
|  |                     List_String_Const_u8 file_dir_list = {}; | ||||||
|  |                     string_list_push(scratch, &file_dir_list, project_dir); | ||||||
|  |                     string_list_push_overlap(scratch, &file_dir_list, '/', path_str); | ||||||
|  |                     string_list_push_overlap(scratch, &file_dir_list, '/', SCu8()); | ||||||
|  |                     file_dir = string_list_flatten(scratch, file_dir_list, StringFill_NullTerminate); | ||||||
|  |                 } | ||||||
|  |                  | ||||||
|  |                 Project_File_Pattern_Array whitelist = current_project.pattern_array; | ||||||
|  |                 Project_File_Pattern_Array blacklist = current_project.blacklist_pattern_array; | ||||||
|  |                 open_files_pattern_match(app, file_dir, whitelist, blacklist, flags); | ||||||
|  |                 end_temp(temp); | ||||||
|  |             } | ||||||
|  |              | ||||||
|  |             // Set window title
 | ||||||
|  |             if (project->name.size > 0){ | ||||||
|  |                 Temp_Memory temp = begin_temp(scratch); | ||||||
|  |                 String_Const_u8 builder = push_u8_stringf(scratch, "4coder project: %.*s", | ||||||
|  |                                                           string_expand(project->name)); | ||||||
|  |                 set_window_title(app, builder); | ||||||
|  |                 end_temp(temp); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         else{ | ||||||
|  | #define M "Failed to initialize new project; need more memory dedicated to the project system.\n" | ||||||
|  |             print_message(app, string_u8_litexpr(M)); | ||||||
|  | #undef M | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     else if (parsed != 0){ | ||||||
|  |         print_feedback = true; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     if (project != 0){ | ||||||
|  |         Variable_Handle proj_var = {}; | ||||||
|  |          | ||||||
|  |         if (parsed->version == 0 || *parsed->version < 2){ | ||||||
|  |             print_message(app, string_u8_litexpr("Project variables converted from version 1 to version 2\n")); | ||||||
|  | 			proj_var = prj_version_1_to_version_2(app, parsed, project); | ||||||
|         } |         } | ||||||
|         else{ |         else{ | ||||||
|             proj_var = def_fill_var_from_config(app, vars_get_root(), vars_save_string_lit("prj_config"), parsed); |             proj_var = def_fill_var_from_config(app, vars_get_root(), vars_save_string_lit("prj_config"), parsed); | ||||||
|         } |         } | ||||||
|          |          | ||||||
|         vars_print(app, proj_var); |         vars_print(app, proj_var); | ||||||
|  |         print_message(app, string_u8_litexpr("\n")); | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     if (print_feedback){ |     if (print_feedback){ | ||||||
|  |  | ||||||
|  | @ -295,7 +295,7 @@ static Command_Metadata fcoder_metacmd_table[250] = { | ||||||
| { PROC_LINKS(click_set_cursor_if_lbutton, 0), false, "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\\custom\\4coder_base_commands.cpp", 43, 243 }, | { PROC_LINKS(click_set_cursor_if_lbutton, 0), false, "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\\custom\\4coder_base_commands.cpp", 43, 243 }, | ||||||
| { PROC_LINKS(click_set_mark, 0), false, "click_set_mark", 14, "Sets the mark position to the mouse position.", 45, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 256 }, | { PROC_LINKS(click_set_mark, 0), false, "click_set_mark", 14, "Sets the mark position to the mouse position.", 45, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 256 }, | ||||||
| { PROC_LINKS(clipboard_record_clip, 0), false, "clipboard_record_clip", 21, "In response to a new clipboard contents events, saves the new clip onto the clipboard history", 93, "W:\\4ed\\code\\custom\\4coder_clipboard.cpp", 39, 7 }, | { PROC_LINKS(clipboard_record_clip, 0), false, "clipboard_record_clip", 21, "In response to a new clipboard contents events, saves the new clip onto the clipboard history", 93, "W:\\4ed\\code\\custom\\4coder_clipboard.cpp", 39, 7 }, | ||||||
| { PROC_LINKS(close_all_code, 0), false, "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\\custom\\4coder_project_commands.cpp", 46, 965 }, | { PROC_LINKS(close_all_code, 0), false, "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\\custom\\4coder_project_commands.cpp", 46, 977 }, | ||||||
| { PROC_LINKS(close_build_panel, 0), false, "close_build_panel", 17, "If the special build panel is open, closes it.", 46, "W:\\4ed\\code\\custom\\4coder_build_commands.cpp", 44, 175 }, | { PROC_LINKS(close_build_panel, 0), false, "close_build_panel", 17, "If the special build panel is open, closes it.", 46, "W:\\4ed\\code\\custom\\4coder_build_commands.cpp", 44, 175 }, | ||||||
| { PROC_LINKS(close_panel, 0), false, "close_panel", 11, "Closes the currently active panel if it is not the only panel open.", 67, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 674 }, | { PROC_LINKS(close_panel, 0), false, "close_panel", 11, "Closes the currently active panel if it is not the only panel open.", 67, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 674 }, | ||||||
| { PROC_LINKS(command_documentation, 0), true, "command_documentation", 21, "Prompts the user to select a command then loads a doc buffer for that item", 74, "W:\\4ed\\code\\custom\\4coder_docs.cpp", 34, 190 }, | { PROC_LINKS(command_documentation, 0), true, "command_documentation", 21, "Prompts the user to select a command then loads a doc buffer for that item", 74, "W:\\4ed\\code\\custom\\4coder_docs.cpp", 34, 190 }, | ||||||
|  | @ -371,8 +371,8 @@ static Command_Metadata fcoder_metacmd_table[250] = { | ||||||
| { PROC_LINKS(list_all_locations_of_type_definition_of_identifier, 0), false, "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\\custom\\4coder_search.cpp", 36, 224 }, | { PROC_LINKS(list_all_locations_of_type_definition_of_identifier, 0), false, "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\\custom\\4coder_search.cpp", 36, 224 }, | ||||||
| { PROC_LINKS(list_all_substring_locations, 0), false, "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, 174 }, | { PROC_LINKS(list_all_substring_locations, 0), false, "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, 174 }, | ||||||
| { PROC_LINKS(list_all_substring_locations_case_insensitive, 0), false, "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\\custom\\4coder_search.cpp", 36, 186 }, | { PROC_LINKS(list_all_substring_locations_case_insensitive, 0), false, "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\\custom\\4coder_search.cpp", 36, 186 }, | ||||||
| { PROC_LINKS(load_project, 0), false, "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\\custom\\4coder_project_commands.cpp", 46, 994 }, | { PROC_LINKS(load_project, 0), false, "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\\custom\\4coder_project_commands.cpp", 46, 1006 }, | ||||||
| { PROC_LINKS(load_theme_current_buffer, 0), false, "load_theme_current_buffer", 25, "Parse the current buffer as a theme file and add the theme to the theme list. If the buffer has a .4coder postfix in it's name, it is removed when the name is saved.", 165, "W:\\4ed\\code\\custom\\4coder_config.cpp", 36, 1573 }, | { PROC_LINKS(load_theme_current_buffer, 0), false, "load_theme_current_buffer", 25, "Parse the current buffer as a theme file and add the theme to the theme list. If the buffer has a .4coder postfix in it's name, it is removed when the name is saved.", 165, "W:\\4ed\\code\\custom\\4coder_config.cpp", 36, 1574 }, | ||||||
| { PROC_LINKS(load_themes_default_folder, 0), false, "load_themes_default_folder", 26, "Loads all the theme files in the default theme folder.", 54, "W:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 535 }, | { PROC_LINKS(load_themes_default_folder, 0), false, "load_themes_default_folder", 26, "Loads all the theme files in the default theme folder.", 54, "W:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 535 }, | ||||||
| { PROC_LINKS(load_themes_hot_directory, 0), false, "load_themes_hot_directory", 25, "Loads all the theme files in the current hot directory.", 55, "W:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 547 }, | { PROC_LINKS(load_themes_hot_directory, 0), false, "load_themes_hot_directory", 25, "Loads all the theme files in the current hot directory.", 55, "W:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 547 }, | ||||||
| { PROC_LINKS(make_directory_query, 0), false, "make_directory_query", 20, "Queries the user for a name and creates a new directory with the given name.", 76, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1495 }, | { PROC_LINKS(make_directory_query, 0), false, "make_directory_query", 20, "Queries the user for a name and creates a new directory with the given name.", 76, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1495 }, | ||||||
|  | @ -414,8 +414,8 @@ static Command_Metadata fcoder_metacmd_table[250] = { | ||||||
| { PROC_LINKS(multi_paste_interactive_quick, 0), false, "multi_paste_interactive_quick", 29, "Paste multiple lines from the clipboard history, controlled by inputing the number of lines to paste", 100, "W:\\4ed\\code\\custom\\4coder_clipboard.cpp", 39, 380 }, | { PROC_LINKS(multi_paste_interactive_quick, 0), false, "multi_paste_interactive_quick", 29, "Paste multiple lines from the clipboard history, controlled by inputing the number of lines to paste", 100, "W:\\4ed\\code\\custom\\4coder_clipboard.cpp", 39, 380 }, | ||||||
| { PROC_LINKS(music_start, 0), false, "music_start", 11, "Starts the music.", 17, "W:\\4ed\\code\\custom\\4coder_examples.cpp", 38, 213 }, | { PROC_LINKS(music_start, 0), false, "music_start", 11, "Starts the music.", 17, "W:\\4ed\\code\\custom\\4coder_examples.cpp", 38, 213 }, | ||||||
| { PROC_LINKS(music_stop, 0), false, "music_stop", 10, "Stops the music.", 16, "W:\\4ed\\code\\custom\\4coder_examples.cpp", 38, 232 }, | { PROC_LINKS(music_stop, 0), false, "music_stop", 10, "Stops the music.", 16, "W:\\4ed\\code\\custom\\4coder_examples.cpp", 38, 232 }, | ||||||
| { PROC_LINKS(open_all_code, 0), false, "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\\custom\\4coder_project_commands.cpp", 46, 974 }, | { PROC_LINKS(open_all_code, 0), false, "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\\custom\\4coder_project_commands.cpp", 46, 986 }, | ||||||
| { PROC_LINKS(open_all_code_recursive, 0), false, "open_all_code_recursive", 23, "Works as open_all_code but also runs in all subdirectories.", 59, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 983 }, | { PROC_LINKS(open_all_code_recursive, 0), false, "open_all_code_recursive", 23, "Works as open_all_code but also runs in all subdirectories.", 59, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 995 }, | ||||||
| { PROC_LINKS(open_file_in_quotes, 0), false, "open_file_in_quotes", 19, "Reads a filename from surrounding '\"' characters and attempts to open the corresponding file.", 94, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1576 }, | { PROC_LINKS(open_file_in_quotes, 0), false, "open_file_in_quotes", 19, "Reads a filename from surrounding '\"' characters and attempts to open the corresponding file.", 94, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1576 }, | ||||||
| { PROC_LINKS(open_in_other, 0), false, "open_in_other", 13, "Interactively opens a file in the other panel.", 46, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 2059 }, | { PROC_LINKS(open_in_other, 0), false, "open_in_other", 13, "Interactively opens a file in the other panel.", 46, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 2059 }, | ||||||
| { PROC_LINKS(open_long_braces, 0), false, "open_long_braces", 16, "At the cursor, insert a '{' and '}' separated by a blank line.", 62, "W:\\4ed\\code\\custom\\4coder_combined_write_commands.cpp", 53, 46 }, | { PROC_LINKS(open_long_braces, 0), false, "open_long_braces", 16, "At the cursor, insert a '{' and '}' separated by a blank line.", 62, "W:\\4ed\\code\\custom\\4coder_combined_write_commands.cpp", 53, 46 }, | ||||||
|  | @ -436,9 +436,9 @@ static Command_Metadata fcoder_metacmd_table[250] = { | ||||||
| { PROC_LINKS(profile_disable, 0), false, "profile_disable", 15, "Prevent 4coder's self profiler from gathering new profiling information.", 72, "W:\\4ed\\code\\custom\\4coder_profile.cpp", 37, 219 }, | { PROC_LINKS(profile_disable, 0), false, "profile_disable", 15, "Prevent 4coder's self profiler from gathering new profiling information.", 72, "W:\\4ed\\code\\custom\\4coder_profile.cpp", 37, 219 }, | ||||||
| { PROC_LINKS(profile_enable, 0), false, "profile_enable", 14, "Allow 4coder's self profiler to gather new profiling information.", 65, "W:\\4ed\\code\\custom\\4coder_profile.cpp", 37, 212 }, | { PROC_LINKS(profile_enable, 0), false, "profile_enable", 14, "Allow 4coder's self profiler to gather new profiling information.", 65, "W:\\4ed\\code\\custom\\4coder_profile.cpp", 37, 212 }, | ||||||
| { PROC_LINKS(profile_inspect, 0), true, "profile_inspect", 15, "Inspect all currently collected profiling information in 4coder's self profiler.", 80, "W:\\4ed\\code\\custom\\4coder_profile_inspect.cpp", 45, 886 }, | { PROC_LINKS(profile_inspect, 0), true, "profile_inspect", 15, "Inspect all currently collected profiling information in 4coder's self profiler.", 80, "W:\\4ed\\code\\custom\\4coder_profile_inspect.cpp", 45, 886 }, | ||||||
| { PROC_LINKS(project_command_lister, 0), false, "project_command_lister", 22, "Open a lister of all commands in the currently loaded project.", 62, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 1421 }, | { PROC_LINKS(project_command_lister, 0), false, "project_command_lister", 22, "Open a lister of all commands in the currently loaded project.", 62, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 1433 }, | ||||||
| { PROC_LINKS(project_fkey_command, 0), false, "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\\custom\\4coder_project_commands.cpp", 46, 1002 }, | { PROC_LINKS(project_fkey_command, 0), false, "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\\custom\\4coder_project_commands.cpp", 46, 1014 }, | ||||||
| { PROC_LINKS(project_go_to_root_directory, 0), false, "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\\custom\\4coder_project_commands.cpp", 46, 1028 }, | { PROC_LINKS(project_go_to_root_directory, 0), false, "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\\custom\\4coder_project_commands.cpp", 46, 1040 }, | ||||||
| { PROC_LINKS(query_replace, 0), false, "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\\custom\\4coder_base_commands.cpp", 43, 1282 }, | { PROC_LINKS(query_replace, 0), false, "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\\custom\\4coder_base_commands.cpp", 43, 1282 }, | ||||||
| { PROC_LINKS(query_replace_identifier, 0), false, "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\\custom\\4coder_base_commands.cpp", 43, 1303 }, | { PROC_LINKS(query_replace_identifier, 0), false, "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\\custom\\4coder_base_commands.cpp", 43, 1303 }, | ||||||
| { PROC_LINKS(query_replace_selection, 0), false, "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\\custom\\4coder_base_commands.cpp", 43, 1319 }, | { PROC_LINKS(query_replace_selection, 0), false, "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\\custom\\4coder_base_commands.cpp", 43, 1319 }, | ||||||
|  | @ -477,10 +477,10 @@ static Command_Metadata fcoder_metacmd_table[250] = { | ||||||
| { PROC_LINKS(set_mark, 0), false, "set_mark", 8, "Sets the mark to the current position of the cursor.", 52, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 115 }, | { PROC_LINKS(set_mark, 0), false, "set_mark", 8, "Sets the mark to the current position of the cursor.", 52, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 115 }, | ||||||
| { PROC_LINKS(set_mode_to_notepad_like, 0), false, "set_mode_to_notepad_like", 24, "Sets the edit mode to Notepad like.", 35, "W:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 499 }, | { PROC_LINKS(set_mode_to_notepad_like, 0), false, "set_mode_to_notepad_like", 24, "Sets the edit mode to Notepad like.", 35, "W:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 499 }, | ||||||
| { PROC_LINKS(set_mode_to_original, 0), false, "set_mode_to_original", 20, "Sets the edit mode to 4coder original.", 38, "W:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 493 }, | { PROC_LINKS(set_mode_to_original, 0), false, "set_mode_to_original", 20, "Sets the edit mode to 4coder original.", 38, "W:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 493 }, | ||||||
| { PROC_LINKS(setup_build_bat, 0), false, "setup_build_bat", 15, "Queries the user for several configuration options and initializes a new build batch script.", 92, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 1370 }, | { PROC_LINKS(setup_build_bat, 0), false, "setup_build_bat", 15, "Queries the user for several configuration options and initializes a new build batch script.", 92, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 1382 }, | ||||||
| { PROC_LINKS(setup_build_bat_and_sh, 0), false, "setup_build_bat_and_sh", 22, "Queries the user for several configuration options and initializes a new build batch script.", 92, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 1382 }, | { PROC_LINKS(setup_build_bat_and_sh, 0), false, "setup_build_bat_and_sh", 22, "Queries the user for several configuration options and initializes a new build batch script.", 92, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 1394 }, | ||||||
| { PROC_LINKS(setup_build_sh, 0), false, "setup_build_sh", 14, "Queries the user for several configuration options and initializes a new build shell script.", 92, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 1376 }, | { PROC_LINKS(setup_build_sh, 0), false, "setup_build_sh", 14, "Queries the user for several configuration options and initializes a new build shell script.", 92, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 1388 }, | ||||||
| { PROC_LINKS(setup_new_project, 0), false, "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\\custom\\4coder_project_commands.cpp", 46, 1363 }, | { PROC_LINKS(setup_new_project, 0), false, "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\\custom\\4coder_project_commands.cpp", 46, 1375 }, | ||||||
| { PROC_LINKS(show_filebar, 0), false, "show_filebar", 12, "Sets the current view to show it's filebar.", 43, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 697 }, | { PROC_LINKS(show_filebar, 0), false, "show_filebar", 12, "Sets the current view to show it's filebar.", 43, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 697 }, | ||||||
| { PROC_LINKS(show_scrollbar, 0), false, "show_scrollbar", 14, "Sets the current view to show it's scrollbar.", 45, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 683 }, | { PROC_LINKS(show_scrollbar, 0), false, "show_scrollbar", 14, "Sets the current view to show it's scrollbar.", 45, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 683 }, | ||||||
| { PROC_LINKS(show_the_log_graph, 0), true, "show_the_log_graph", 18, "Parses *log* and displays the 'log graph' UI", 44, "W:\\4ed\\code\\custom\\4coder_log_parser.cpp", 40, 993 }, | { PROC_LINKS(show_the_log_graph, 0), true, "show_the_log_graph", 18, "Parses *log* and displays the 'log graph' UI", 44, "W:\\4ed\\code\\custom\\4coder_log_parser.cpp", 40, 993 }, | ||||||
|  |  | ||||||
							
								
								
									
										211
									
								
								todo.txt
								
								
								
								
							
							
						
						
									
										211
									
								
								todo.txt
								
								
								
								
							|  | @ -1,211 +0,0 @@ | ||||||
| 
 |  | ||||||
| usability: |  | ||||||
| [] paste-next broken |  | ||||||
| [] select scope broken |  | ||||||
| [] auto-indent broken |  | ||||||
| [] cursor in wrong spot after build |  | ||||||
| 
 |  | ||||||
| Long Term |  | ||||||
| { |  | ||||||
|     Foo; |  | ||||||
|     Features |  | ||||||
|     { |  | ||||||
|         [] Project FKey Remapper |  | ||||||
|         [] Project Mode Lister |  | ||||||
|         [] Turbo-Word-Complete Lister |  | ||||||
|         [] Renderer Modularity |  | ||||||
|         [] Software Renderer |  | ||||||
|         [] Undo Upgrade |  | ||||||
|         [] Meta Buffer |  | ||||||
|         [] Multi Cursor |  | ||||||
|         [] Commands in Input Bar |  | ||||||
|         [] Declarative system for keyword direct coloring |  | ||||||
|         [] Reload all out of sync files |  | ||||||
|         [] Jump to Command Definition (useful for 4coder customization developers only) |  | ||||||
|         [] Recover scroll bars |  | ||||||
|         [] Cold scroll |  | ||||||
|     } |  | ||||||
|      |  | ||||||
|     Bugs |  | ||||||
|     { |  | ||||||
|         [] Remote Desktop Doesn't Work -> Need Renderer Modularity & Software Renderer |  | ||||||
|         [] Graphics problem (fonts not rendering) -> need more info |  | ||||||
|         [] Jim's file is blank even though it tries to load a real file (wtf) |  | ||||||
|         [] Texture binding changes too often problem |  | ||||||
|         [] saving to removable media -> need more info |  | ||||||
|         [] crash on obj file (san-miguel-low-poly.obj) -> need more info |  | ||||||
|         [] Can we prevent creation of Buffer_Render_Items that are off the top? |  | ||||||
|         [] Mac german keyboard layout |  | ||||||
|         [] Linux animate bug? (Lister lag) |  | ||||||
|         [] SSHFS segfault on linux |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| Change Log |  | ||||||
| { |  | ||||||
|     4.0.30 |  | ||||||
|     { |  | ||||||
|         Features |  | ||||||
|         { |  | ||||||
|             [x] Fill Key_Input_Data's modifiers field |  | ||||||
|             [x] Optimize lookup in file track data structures |  | ||||||
|             [x] Comment line/Uncomment line |  | ||||||
|         } |  | ||||||
|          |  | ||||||
|         Bugs |  | ||||||
|         { |  | ||||||
|             [x] Crash when freeing marker object without visuals |  | ||||||
|             [x] High CPU usage in listers (endless animation bug) |  | ||||||
|             [x] Panel resizing doesn't work |  | ||||||
|             [x] On windows file lister: /foo/bar.txt |  | ||||||
|             [?] Press Tab in Open File Lister With Text "C:"/Tab when no valid completions in open file lister |  | ||||||
|             [x] Notepad like mode clicking to new view doesn't snap the mark |  | ||||||
|             [x] Notepad like mode replacing text with cursor at end of selection in middle of long file |  | ||||||
|             [x] Renaming a file to a case-insensitively-equivalent name on windows deletes the file |  | ||||||
|             [x] Start from windows start menu and open file |  | ||||||
|             [?] opening large projects |  | ||||||
|             [x] Make lots of new files |  | ||||||
|             [x] Modifiers on scroll wheels not working? |  | ||||||
|             [x] Lexing Scientific Notation " 3.402823466e+38F " |  | ||||||
|             [x] really long single line wrapped (300,000?) |  | ||||||
|             [x] scope coloring when scrolled to the right problem |  | ||||||
|             [x] Open file when lister hot directory doesn't match lister current directory |  | ||||||
|             Repro Needed |  | ||||||
|             { |  | ||||||
|                 [?] pasting long comment at top of code files doesn't always parse right away??? |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|      |  | ||||||
|     4.0.29 |  | ||||||
|     { |  | ||||||
|         [x] Lister API |  | ||||||
|         [x] Managed Cooperative Memory API |  | ||||||
|         [x] Visible Markers |  | ||||||
|         { |  | ||||||
|             [x] Line Highlight |  | ||||||
|             [x] Cursor Block |  | ||||||
|             [x] Cursor Bar |  | ||||||
|             [x] Wire Cursor Block |  | ||||||
|             [x] Highlight Range |  | ||||||
|         } |  | ||||||
|         [x] Quit UI events |  | ||||||
|         [x] Cool Listers |  | ||||||
|         { |  | ||||||
|             [x] Command Lister |  | ||||||
|             [x] Convert Jump List to Lister |  | ||||||
|             [x] Function Lister |  | ||||||
|             [x] Snippet Lister |  | ||||||
|             [x] Project Command Lister |  | ||||||
|         } |  | ||||||
|         [x] Exact Matches Sort to Top Always ALWAYS ALWAYS ALWAYS |  | ||||||
|         [x] If no results put message explaining that fact (search buffer) |  | ||||||
|         [x] Separate distinct buffer groups by newline |  | ||||||
|          |  | ||||||
|         [x] Finalize visualizations API |  | ||||||
|         { |  | ||||||
|             [x] Add and remove visualizations, allow more than one on a single markers object |  | ||||||
|             [x] Iterate visualizations |  | ||||||
|             [x] Take rule |  | ||||||
|             [x] Priority |  | ||||||
|             [x] View key |  | ||||||
|         } |  | ||||||
|         [x] Better range handling (range contained inside range) |  | ||||||
|         [x] Range of line highlights |  | ||||||
|         [x] text color in marker highlights |  | ||||||
|         [x] symbolic colors |  | ||||||
|         [x] When clearing all dependent scopes, don't delete them, just clear them |  | ||||||
|          |  | ||||||
|         [x] I-Bar and Highlight Mode |  | ||||||
|         { |  | ||||||
|             [x] Cursor navigation commands |  | ||||||
|             [x] Insert character |  | ||||||
|             [x] Paste |  | ||||||
|             [x] Backspace and delete |  | ||||||
|             [x] config options |  | ||||||
|             [x] toggle commands |  | ||||||
|         } |  | ||||||
|         [x] Highlight target in Query Replace |  | ||||||
|         [x] Color Pallette Expansion For Keywords |  | ||||||
|         [x] TODO Bright red |  | ||||||
|         [x] NOTE Bright green |  | ||||||
|         [x] New Features with Visible Markers |  | ||||||
|         { |  | ||||||
|             [x] Customizable Highlight Line at Cursor All the Time |  | ||||||
|             [x] Customizable Highlight Token at Cursor All the Time |  | ||||||
|             [] Paren/Brace Matching (with color pallette expansion) |  | ||||||
|             { |  | ||||||
|                 [x] Get ranges to mark and mark them |  | ||||||
|                 [x] Works on parentheses |  | ||||||
|                 [x] Optional modes: Off, Mark Delimters, Cover Ranges |  | ||||||
|                 [x] Colors pulled from color pallette |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|          |  | ||||||
|         [x] Cleanup names in Marker_Visuals API |  | ||||||
|          |  | ||||||
|         [x] set_command_input |  | ||||||
|     } |  | ||||||
|      |  | ||||||
|     NEW THINGS |  | ||||||
|     { |  | ||||||
|         [x] buffer_get_managed_scope |  | ||||||
|         [x] view_get_managed_scope |  | ||||||
|         [x] view_start_ui_mode |  | ||||||
|         [x] view_end_ui_mode |  | ||||||
|         [x] view_set_ui |  | ||||||
|         [x] view_get_ui_copy |  | ||||||
|         [x] create_user_managed_scope |  | ||||||
|         [x] destroy_user_managed_scope |  | ||||||
|         [x] get_global_managed_scope |  | ||||||
|         [x] get_managed_scope_with_multiple_dependencies |  | ||||||
|         [x] managed_scope_clear_contents |  | ||||||
|         [x] clear_managed_scope_and_all_dependent_scopes |  | ||||||
|         [x] managed_variable_create |  | ||||||
|         [x] managed_variable_get_id |  | ||||||
|         [x] managed_variable_create_or_get_id |  | ||||||
|         [x] managed_variable_set |  | ||||||
|         [x] managed_variable_get |  | ||||||
|         [x] alloc_managed_memory_in_scope |  | ||||||
|         [x] alloc_buffer_markers_on_buffer |  | ||||||
|         [x] create_marker_visuals |  | ||||||
|         [x] marker_visuals_set_look |  | ||||||
|         [x] marker_visuals_set_take_rule |  | ||||||
|         [x] marker_visuals_set_priority |  | ||||||
|         [x] marker_visuals_set_view_key |  | ||||||
|         [x] destroy_marker_visuals |  | ||||||
|         [x] buffer_markers_get_attached_visuals_count |  | ||||||
|         [x] buffer_markers_get_attached_visuals |  | ||||||
|         [x] managed_object_get_item_size |  | ||||||
|         [x] managed_object_get_item_count |  | ||||||
|         [x] managed_object_get_type |  | ||||||
|         [x] managed_object_get_containing_scope |  | ||||||
|         [x] managed_object_free |  | ||||||
|         [x] managed_object_store_data |  | ||||||
|         [x] managed_object_load_data |  | ||||||
|         [x] get_theme_count |  | ||||||
|         [x] get_theme_name |  | ||||||
|         [x] change_theme_by_index |  | ||||||
|         [x] Buffer_Kill_Result |  | ||||||
|         [x] Range_Array |  | ||||||
|         [x] Managed_Object_Type |  | ||||||
|         [x] Managed_Scope |  | ||||||
|         [x] Managed_Variable_ID |  | ||||||
|         [x] Managed_Object |  | ||||||
|         [x] Marker_Visuals |  | ||||||
|         [x] Marker_Visuals_Type |  | ||||||
|         [x] Marker_Visuals_Symbolic_Color |  | ||||||
|         [x] Marker_Visuals_Text_Style |  | ||||||
|         [x] Marker_Visuals_Take_Rule |  | ||||||
|         [x] Marker_Visuals_Priority_Level |  | ||||||
|         [x] UI_Item_Type |  | ||||||
|         [x] UI_Activation_Level |  | ||||||
|         [x] UI_Coordinate_System |  | ||||||
|         [x] UI_Item |  | ||||||
|         [x] UI_Item_Node |  | ||||||
|         [x] UI_List |  | ||||||
|         [x] UI_Control |  | ||||||
|         [x] string_interpret_escapes |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
		Loading…
	
		Reference in New Issue