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
|
||||
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);
|
||||
print_message(app, string_u8_litexpr("\n"));
|
||||
}
|
||||
}
|
||||
else{
|
||||
|
|
|
@ -14,7 +14,9 @@ get_pattern_array_from_string_array(Arena *arena, String_Const_u8_Array list){
|
|||
Project_File_Pattern_Array array = {};
|
||||
array.count = 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]));
|
||||
array.patterns[i].absolutes = string_split_wildcards(arena, str);
|
||||
}
|
||||
|
@ -648,6 +650,117 @@ prj_join_pattern_string(Arena *arena, List_String_Const_u8 list){
|
|||
return(pattern_string);
|
||||
}
|
||||
|
||||
function Variable_Handle
|
||||
prj_version_1_to_version_2(Application_Links *app, Config *parsed, Project *project){
|
||||
Scratch_Block scratch(app);
|
||||
|
||||
String_ID project_id = vars_save_string_lit("prj_config");
|
||||
String_ID version_id = vars_save_string(string_litinit("version"));
|
||||
String_ID project_name_id = vars_save_string(string_litinit("project_name"));
|
||||
String_ID patterns_id = vars_save_string(string_litinit("patterns"));
|
||||
String_ID blacklist_patterns_id = vars_save_string(string_litinit("blacklist_patterns"));
|
||||
|
||||
String_ID load_paths_id = vars_save_string(string_litinit("load_paths"));
|
||||
String_ID path_id = vars_save_string(string_litinit("path"));
|
||||
String_ID recursive_id = vars_save_string(string_litinit("recursive"));
|
||||
String_ID relative_id = vars_save_string(string_litinit("relative"));
|
||||
String_ID true_id = vars_save_string(string_litinit("true"));
|
||||
String_ID false_id = vars_save_string(string_litinit("false"));
|
||||
|
||||
String_ID command_list_id = vars_save_string(string_litinit("command_list"));
|
||||
String_ID out_id = vars_save_string(string_litinit("out"));
|
||||
String_ID footer_panel_id = vars_save_string(string_litinit("footer_panel"));
|
||||
String_ID save_dirty_files_id = vars_save_string(string_litinit("save_dirty_files"));
|
||||
String_ID cursor_at_end_id = vars_save_string(string_litinit("cursor_at_end"));
|
||||
|
||||
String_ID fkey_command_id = vars_save_string(string_litinit("fkey_command"));
|
||||
|
||||
// TODO(allen): linux, mac
|
||||
String_ID os_id = vars_save_string(string_litinit("win"));;
|
||||
|
||||
Variable_Handle proj_var = vars_new_variable(vars_get_root(), project_id, vars_save_string(parsed->file_name));
|
||||
|
||||
if (parsed->version != 0){
|
||||
String_Const_u8 version_str = push_stringf(scratch, "%d", *parsed->version);
|
||||
vars_new_variable(proj_var, version_id, vars_save_string(version_str));
|
||||
}
|
||||
|
||||
vars_new_variable(proj_var, project_name_id, vars_save_string(project->name));
|
||||
|
||||
// load paterns
|
||||
struct PatternVars{
|
||||
String_ID id;
|
||||
Project_File_Pattern_Array array;
|
||||
};
|
||||
PatternVars pattern_vars[] = {
|
||||
{ patterns_id, project-> pattern_array},
|
||||
{blacklist_patterns_id, project->blacklist_pattern_array},
|
||||
};
|
||||
|
||||
PatternVars *pattern_var = pattern_vars;
|
||||
PatternVars *opl = pattern_vars + ArrayCount(pattern_vars);
|
||||
for (; pattern_var < opl; pattern_var += 1){
|
||||
Variable_Handle patterns = vars_new_variable(proj_var, pattern_var->id);
|
||||
i32 count = pattern_var->array.count;
|
||||
Project_File_Pattern *pattern = pattern_var->array.patterns;
|
||||
for (i32 i = 0; i < count; i += 1, pattern += 1){
|
||||
String_Const_u8 pattern_string = prj_join_pattern_string(scratch, pattern->absolutes);
|
||||
String_ID key = vars_save_string(push_stringf(scratch, "%d", i));
|
||||
String_ID pattern_id = vars_save_string(pattern_string);
|
||||
vars_new_variable(patterns, key, pattern_id);
|
||||
}
|
||||
}
|
||||
|
||||
// load paths
|
||||
{
|
||||
Variable_Handle load_paths = vars_new_variable(proj_var, load_paths_id);
|
||||
Variable_Handle os_var = vars_new_variable(load_paths, os_id);
|
||||
i32 count = project->load_path_array.count;
|
||||
Project_File_Load_Path *load_path = project->load_path_array.paths;
|
||||
for (i32 i = 0; i < count; i += 1, load_path += 1){
|
||||
String_ID key = vars_save_string(push_stringf(scratch, "%d", i));
|
||||
Variable_Handle path_var = vars_new_variable(os_var, key);
|
||||
vars_new_variable(path_var, path_id, vars_save_string(load_path->path));
|
||||
vars_new_variable(path_var, recursive_id, load_path->recursive?true_id:false_id);
|
||||
vars_new_variable(path_var, relative_id, load_path->recursive?true_id:false_id);
|
||||
}
|
||||
}
|
||||
|
||||
// commands
|
||||
{
|
||||
Variable_Handle cmds_var = vars_new_variable(proj_var, command_list_id);
|
||||
i32 count = project->command_array.count;
|
||||
Project_Command *cmd = project->command_array.commands;
|
||||
for (i32 i = 0; i < count; i += 1, cmd += 1){
|
||||
Variable_Handle cmd_var = vars_new_variable(cmds_var, vars_save_string(cmd->name));
|
||||
vars_new_variable(cmd_var, os_id, vars_save_string(cmd->cmd));
|
||||
vars_new_variable(cmd_var, out_id, vars_save_string(cmd->out));
|
||||
vars_new_variable(cmd_var, footer_panel_id, cmd->footer_panel?true_id:false_id);
|
||||
vars_new_variable(cmd_var, save_dirty_files_id, cmd->save_dirty_files?true_id:false_id);
|
||||
vars_new_variable(cmd_var, cursor_at_end_id, cmd->cursor_at_end?true_id:false_id);
|
||||
}
|
||||
}
|
||||
|
||||
// fkey_commands
|
||||
{
|
||||
Variable_Handle fkeys_var = vars_new_variable(proj_var, fkey_command_id);
|
||||
for (i32 i = 0; i < 16; i += 1){
|
||||
i32 cmd_index = project->fkey_commands[i];
|
||||
if (0 <= cmd_index && cmd_index < project->command_array.count){
|
||||
Project_Command *cmd = project->command_array.commands + cmd_index;
|
||||
if (cmd->name.size > 0){
|
||||
String_ID key = vars_save_string(push_stringf(scratch, "%d", i));
|
||||
String_ID val = vars_save_string(cmd->name);
|
||||
vars_new_variable(fkeys_var, key, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return(proj_var);
|
||||
}
|
||||
|
||||
|
||||
function void
|
||||
set_current_project(Application_Links *app, Project *project, Config *parsed){
|
||||
b32 print_feedback = false;
|
||||
|
@ -719,115 +832,14 @@ set_current_project(Application_Links *app, Project *project, Config *parsed){
|
|||
|
||||
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 version_id = vars_save_string(string_litinit("version"));
|
||||
String_ID project_name_id = vars_save_string(string_litinit("project_name"));
|
||||
String_ID patterns_id = vars_save_string(string_litinit("patterns"));
|
||||
String_ID blacklist_patterns_id = vars_save_string(string_litinit("blacklist_patterns"));
|
||||
|
||||
String_ID load_paths_id = vars_save_string(string_litinit("load_paths"));
|
||||
String_ID path_id = vars_save_string(string_litinit("path"));
|
||||
String_ID recursive_id = vars_save_string(string_litinit("recursive"));
|
||||
String_ID relative_id = vars_save_string(string_litinit("relative"));
|
||||
String_ID true_id = vars_save_string(string_litinit("true"));
|
||||
String_ID false_id = vars_save_string(string_litinit("false"));
|
||||
|
||||
String_ID command_list_id = vars_save_string(string_litinit("command_list"));
|
||||
String_ID out_id = vars_save_string(string_litinit("out"));
|
||||
String_ID footer_panel_id = vars_save_string(string_litinit("footer_panel"));
|
||||
String_ID save_dirty_files_id = vars_save_string(string_litinit("save_dirty_files"));
|
||||
String_ID cursor_at_end_id = vars_save_string(string_litinit("cursor_at_end"));
|
||||
|
||||
String_ID fkey_command_id = vars_save_string(string_litinit("fkey_command"));
|
||||
|
||||
// TODO(allen): linux, mac
|
||||
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));
|
||||
|
||||
if (parsed->version != 0){
|
||||
String_Const_u8 version_str = push_stringf(scratch, "%d", *parsed->version);
|
||||
vars_new_variable(proj_var, version_id, vars_save_string(version_str));
|
||||
}
|
||||
|
||||
vars_new_variable(proj_var, project_name_id, vars_save_string(project->name));
|
||||
|
||||
// load paterns
|
||||
struct PatternVars{
|
||||
String_ID id;
|
||||
Project_File_Pattern_Array array;
|
||||
};
|
||||
PatternVars pattern_vars[] = {
|
||||
{ patterns_id, project-> pattern_array},
|
||||
{blacklist_patterns_id, project->blacklist_pattern_array},
|
||||
};
|
||||
|
||||
PatternVars *pattern_var = pattern_vars;
|
||||
PatternVars *opl = pattern_vars + ArrayCount(pattern_vars);
|
||||
for (; pattern_var < opl; pattern_var += 1){
|
||||
Variable_Handle patterns = vars_new_variable(proj_var, pattern_var->id);
|
||||
i32 count = pattern_var->array.count;
|
||||
Project_File_Pattern *pattern = pattern_var->array.patterns;
|
||||
for (i32 i = 0; i < count; i += 1, pattern += 1){
|
||||
String_Const_u8 pattern_string = prj_join_pattern_string(scratch, pattern->absolutes);
|
||||
String_ID key = vars_save_string(push_stringf(scratch, "%d", i));
|
||||
String_ID pattern_id = vars_save_string(pattern_string);
|
||||
vars_new_variable(patterns, key, pattern_id);
|
||||
}
|
||||
}
|
||||
|
||||
// load paths
|
||||
{
|
||||
Variable_Handle load_paths = vars_new_variable(proj_var, load_paths_id);
|
||||
Variable_Handle os_var = vars_new_variable(load_paths, os_id);
|
||||
i32 count = project->load_path_array.count;
|
||||
Project_File_Load_Path *load_path = project->load_path_array.paths;
|
||||
for (i32 i = 0; i < count; i += 1, load_path += 1){
|
||||
String_ID key = vars_save_string(push_stringf(scratch, "%d", i));
|
||||
Variable_Handle path_var = vars_new_variable(os_var, key);
|
||||
vars_new_variable(path_var, path_id, vars_save_string(load_path->path));
|
||||
vars_new_variable(path_var, recursive_id, load_path->recursive?true_id:false_id);
|
||||
vars_new_variable(path_var, relative_id, load_path->recursive?true_id:false_id);
|
||||
}
|
||||
}
|
||||
|
||||
// commands
|
||||
{
|
||||
Variable_Handle cmds_var = vars_new_variable(proj_var, command_list_id);
|
||||
i32 count = project->command_array.count;
|
||||
Project_Command *cmd = project->command_array.commands;
|
||||
for (i32 i = 0; i < count; i += 1, cmd += 1){
|
||||
Variable_Handle cmd_var = vars_new_variable(cmds_var, vars_save_string(cmd->name));
|
||||
vars_new_variable(cmd_var, os_id, vars_save_string(cmd->cmd));
|
||||
vars_new_variable(cmd_var, out_id, vars_save_string(cmd->out));
|
||||
vars_new_variable(cmd_var, footer_panel_id, cmd->footer_panel?true_id:false_id);
|
||||
vars_new_variable(cmd_var, save_dirty_files_id, cmd->save_dirty_files?true_id:false_id);
|
||||
vars_new_variable(cmd_var, cursor_at_end_id, cmd->cursor_at_end?true_id:false_id);
|
||||
}
|
||||
}
|
||||
|
||||
// fkey_commands
|
||||
{
|
||||
Variable_Handle fkeys_var = vars_new_variable(proj_var, fkey_command_id);
|
||||
for (i32 i = 0; i < 16; i += 1){
|
||||
i32 cmd_index = project->fkey_commands[i];
|
||||
if (0 <= cmd_index && cmd_index < project->command_array.count){
|
||||
Project_Command *cmd = project->command_array.commands + cmd_index;
|
||||
if (cmd->name.size > 0){
|
||||
String_ID key = vars_save_string(push_stringf(scratch, "%d", i));
|
||||
String_ID val = vars_save_string(cmd->name);
|
||||
vars_new_variable(fkeys_var, key, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
proj_var = prj_version_1_to_version_2(app, parsed, project);
|
||||
}
|
||||
else{
|
||||
proj_var = def_fill_var_from_config(app, vars_get_root(), vars_save_string_lit("prj_config"), parsed);
|
||||
}
|
||||
|
||||
vars_print(app, proj_var);
|
||||
print_message(app, string_u8_litexpr("\n"));
|
||||
}
|
||||
|
||||
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_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(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_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 },
|
||||
|
@ -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_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(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_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_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, 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_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 },
|
||||
|
@ -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(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(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_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, 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, 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_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 },
|
||||
|
@ -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_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(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_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_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_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, 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, 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_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 },
|
||||
|
@ -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_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(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_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_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_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_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, 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, 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, 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_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 },
|
||||
|
|
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