Lots of good work, also half assed shitty poop sauce of a buffer uniquifier
parent
5f2119cbd6
commit
65e794f9d3
|
@ -73,8 +73,6 @@ ENUM(uint64_t, Command_ID){
|
||||||
cmdid_interactive_open,
|
cmdid_interactive_open,
|
||||||
/* DOC(cmdid_interactive_open_or_new begins an interactive dialogue to open a file into a buffer, if the name specified does not match any existing buffer, a new buffer is created instead.) */
|
/* DOC(cmdid_interactive_open_or_new begins an interactive dialogue to open a file into a buffer, if the name specified does not match any existing buffer, a new buffer is created instead.) */
|
||||||
cmdid_interactive_open_or_new,
|
cmdid_interactive_open_or_new,
|
||||||
/* DOC(cmdid_save_as does not currently work and is likely to be removed rather that fixed.) */
|
|
||||||
cmdid_save_as,
|
|
||||||
/* DOC(cmdid_interactive_switch_buffer begins an interactive dialogue to choose an open buffer to swap into the active view.) */
|
/* DOC(cmdid_interactive_switch_buffer begins an interactive dialogue to choose an open buffer to swap into the active view.) */
|
||||||
cmdid_interactive_switch_buffer,
|
cmdid_interactive_switch_buffer,
|
||||||
/* DOC(cmdid_interactive_kill_buffer begins an interactive dialogue to choose an open buffer to kill.) */
|
/* DOC(cmdid_interactive_kill_buffer begins an interactive dialogue to choose an open buffer to kill.) */
|
||||||
|
@ -827,7 +825,7 @@ STRUCT User_Input{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* DOC(Hook_IDs name the various hooks into 4coder, these hooks use the Hook_Function signature.)
|
/* DOC(Hook_IDs name the various hooks in 4coder, these hooks use the Hook_Function signature.)
|
||||||
DOC_SEE(Hook_Function) */
|
DOC_SEE(Hook_Function) */
|
||||||
ENUM(int32_t, Hook_ID){
|
ENUM(int32_t, Hook_ID){
|
||||||
/* DOC(TODO) */
|
/* DOC(TODO) */
|
||||||
|
@ -858,6 +856,8 @@ ENUM(int32_t, Special_Hook_ID){
|
||||||
special_hook_input_filter,
|
special_hook_input_filter,
|
||||||
/* DOC(TODO) */
|
/* DOC(TODO) */
|
||||||
special_hook_start,
|
special_hook_start,
|
||||||
|
/* DOC(TODO) */
|
||||||
|
special_hook_buffer_name_resolver,
|
||||||
};
|
};
|
||||||
|
|
||||||
TYPEDEF_FUNC int32_t Command_Caller_Hook_Function(struct Application_Links *app, Generic_Command cmd);
|
TYPEDEF_FUNC int32_t Command_Caller_Hook_Function(struct Application_Links *app, Generic_Command cmd);
|
||||||
|
@ -866,8 +866,8 @@ TYPEDEF_FUNC int32_t Command_Caller_Hook_Function(struct Application_Links *app,
|
||||||
TYPEDEF_FUNC int32_t Hook_Function(struct Application_Links *app);
|
TYPEDEF_FUNC int32_t Hook_Function(struct Application_Links *app);
|
||||||
#define HOOK_SIG(name) int32_t name(struct Application_Links *app)
|
#define HOOK_SIG(name) int32_t name(struct Application_Links *app)
|
||||||
|
|
||||||
TYPEDEF_FUNC int32_t Open_File_Hook_Function(struct Application_Links *app, int32_t buffer_id);
|
TYPEDEF_FUNC int32_t Open_File_Hook_Function(struct Application_Links *app, Buffer_ID buffer_id);
|
||||||
#define OPEN_FILE_HOOK_SIG(name) int32_t name(struct Application_Links *app, int32_t buffer_id)
|
#define OPEN_FILE_HOOK_SIG(name) int32_t name(struct Application_Links *app, Buffer_ID buffer_id)
|
||||||
|
|
||||||
TYPEDEF_FUNC void Input_Filter_Function(Mouse_State *mouse);
|
TYPEDEF_FUNC void Input_Filter_Function(Mouse_State *mouse);
|
||||||
#define INPUT_FILTER_SIG(name) void name(Mouse_State *mouse)
|
#define INPUT_FILTER_SIG(name) void name(Mouse_State *mouse)
|
||||||
|
@ -876,6 +876,10 @@ TYPEDEF_FUNC int32_t Scroll_Rule_Function(float target_x, float target_y, float
|
||||||
#define SCROLL_RULE_SIG(name) \
|
#define SCROLL_RULE_SIG(name) \
|
||||||
int32_t name(float target_x, float target_y, float *scroll_x, float *scroll_y, int32_t view_id, int32_t is_new_target, float dt)
|
int32_t name(float target_x, float target_y, float *scroll_x, float *scroll_y, int32_t view_id, int32_t is_new_target, float dt)
|
||||||
|
|
||||||
|
TYPEDEF_FUNC void Buffer_Name_Resolver_Function(struct Application_Links *app, char *file_name, int32_t file_name_len, char *name, int32_t *size, int32_t capacity);
|
||||||
|
#define BUFFER_NAME_RESOLVER_SIG(n) \
|
||||||
|
void n(struct Application_Links *app, char *file_name, int32_t file_name_len, char *name, int32_t *size, int32_t capacity)
|
||||||
|
|
||||||
TYPEDEF_FUNC int32_t Start_Hook_Function(struct Application_Links *app, char **files, int32_t file_count, char **flags, int32_t flag_count);
|
TYPEDEF_FUNC int32_t Start_Hook_Function(struct Application_Links *app, char **files, int32_t file_count, char **flags, int32_t flag_count);
|
||||||
#define START_HOOK_SIG(name) \
|
#define START_HOOK_SIG(name) \
|
||||||
int32_t name(struct Application_Links *app, char **files, int32_t file_count, char **flags, int32_t flag_count)
|
int32_t name(struct Application_Links *app, char **files, int32_t file_count, char **flags, int32_t flag_count)
|
||||||
|
|
|
@ -88,7 +88,46 @@ HOOK_SIG(default_view_adjust){
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(allen): Eliminate this hook if you can.
|
BUFFER_NAME_RESOLVER_SIG(default_buffer_name_resolution){
|
||||||
|
String s = make_string_cap(name, *size, capacity);
|
||||||
|
int32_t original_size = *size;
|
||||||
|
int32_t x = 0;
|
||||||
|
for (;;){
|
||||||
|
Buffer_Summary conflicting_buffer = get_buffer_by_name(app, s.str, s.size, AccessAll);
|
||||||
|
if (!conflicting_buffer.exists){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
s.size = original_size;
|
||||||
|
|
||||||
|
// Get the uniquifier string
|
||||||
|
x += 1;
|
||||||
|
|
||||||
|
String s_file_name = path_of_directory(make_string(file_name, file_name_len));
|
||||||
|
s_file_name.size -= 1;
|
||||||
|
char *end = s_file_name.str + s_file_name.size;
|
||||||
|
|
||||||
|
for (int32_t i = 0; i < x; ++i){
|
||||||
|
s_file_name = path_of_directory(s_file_name);
|
||||||
|
if (i + 1 < x){
|
||||||
|
s_file_name.size -= 1;
|
||||||
|
}
|
||||||
|
if (s_file_name.size <= 0){
|
||||||
|
s_file_name.size = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char *start = s_file_name.str + s_file_name.size;
|
||||||
|
|
||||||
|
String uniquifier = make_string(start, (int32_t)(end - start));
|
||||||
|
|
||||||
|
append(&s, " <");
|
||||||
|
append(&s, uniquifier);
|
||||||
|
append(&s, ">");
|
||||||
|
}
|
||||||
|
*size = s.size;
|
||||||
|
}
|
||||||
|
|
||||||
OPEN_FILE_HOOK_SIG(default_file_settings){
|
OPEN_FILE_HOOK_SIG(default_file_settings){
|
||||||
// NOTE(allen|a4.0.8): The get_parameter_buffer was eliminated
|
// NOTE(allen|a4.0.8): The get_parameter_buffer was eliminated
|
||||||
// and instead the buffer is passed as an explicit parameter through
|
// and instead the buffer is passed as an explicit parameter through
|
||||||
|
@ -207,8 +246,6 @@ OPEN_FILE_HOOK_SIG(default_file_settings){
|
||||||
buffer_set_setting(app, &buffer, BufferSetting_Lex, treat_as_code);
|
buffer_set_setting(app, &buffer, BufferSetting_Lex, treat_as_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
set_title(app, "TESTINGGGG!!!!!!! BOOOYYAAA!!!!!");
|
|
||||||
|
|
||||||
// no meaning for return
|
// no meaning for return
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
@ -374,6 +411,7 @@ set_all_default_hooks(Bind_Helper *context){
|
||||||
set_command_caller(context, default_command_caller);
|
set_command_caller(context, default_command_caller);
|
||||||
set_input_filter(context, default_suppress_mouse_filter);
|
set_input_filter(context, default_suppress_mouse_filter);
|
||||||
set_scroll_rule(context, smooth_scroll_rule);
|
set_scroll_rule(context, smooth_scroll_rule);
|
||||||
|
set_buffer_name_resolver(context, default_buffer_name_resolution);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -83,7 +83,7 @@ struct Application_Links;
|
||||||
#define SET_FULLSCREEN_SIG(n) bool32 n(Application_Links *app, bool32 full_screen)
|
#define SET_FULLSCREEN_SIG(n) bool32 n(Application_Links *app, bool32 full_screen)
|
||||||
#define IS_FULLSCREEN_SIG(n) bool32 n(Application_Links *app)
|
#define IS_FULLSCREEN_SIG(n) bool32 n(Application_Links *app)
|
||||||
#define SEND_EXIT_SIGNAL_SIG(n) void n(Application_Links *app)
|
#define SEND_EXIT_SIGNAL_SIG(n) void n(Application_Links *app)
|
||||||
#define SET_TITLE_SIG(n) void n(Application_Links *app, char *title)
|
#define SET_WINDOW_TITLE_SIG(n) void n(Application_Links *app, char *title)
|
||||||
typedef GLOBAL_SET_SETTING_SIG(Global_Set_Setting_Function);
|
typedef GLOBAL_SET_SETTING_SIG(Global_Set_Setting_Function);
|
||||||
typedef GLOBAL_SET_MAPPING_SIG(Global_Set_Mapping_Function);
|
typedef GLOBAL_SET_MAPPING_SIG(Global_Set_Mapping_Function);
|
||||||
typedef EXEC_COMMAND_SIG(Exec_Command_Function);
|
typedef EXEC_COMMAND_SIG(Exec_Command_Function);
|
||||||
|
@ -168,7 +168,7 @@ typedef SHOW_MOUSE_CURSOR_SIG(Show_Mouse_Cursor_Function);
|
||||||
typedef SET_FULLSCREEN_SIG(Set_Fullscreen_Function);
|
typedef SET_FULLSCREEN_SIG(Set_Fullscreen_Function);
|
||||||
typedef IS_FULLSCREEN_SIG(Is_Fullscreen_Function);
|
typedef IS_FULLSCREEN_SIG(Is_Fullscreen_Function);
|
||||||
typedef SEND_EXIT_SIGNAL_SIG(Send_Exit_Signal_Function);
|
typedef SEND_EXIT_SIGNAL_SIG(Send_Exit_Signal_Function);
|
||||||
typedef SET_TITLE_SIG(Set_Title_Function);
|
typedef SET_WINDOW_TITLE_SIG(Set_Window_Title_Function);
|
||||||
struct Application_Links{
|
struct Application_Links{
|
||||||
#if defined(ALLOW_DEP_4CODER)
|
#if defined(ALLOW_DEP_4CODER)
|
||||||
Global_Set_Setting_Function *global_set_setting;
|
Global_Set_Setting_Function *global_set_setting;
|
||||||
|
@ -255,7 +255,7 @@ Show_Mouse_Cursor_Function *show_mouse_cursor;
|
||||||
Set_Fullscreen_Function *set_fullscreen;
|
Set_Fullscreen_Function *set_fullscreen;
|
||||||
Is_Fullscreen_Function *is_fullscreen;
|
Is_Fullscreen_Function *is_fullscreen;
|
||||||
Send_Exit_Signal_Function *send_exit_signal;
|
Send_Exit_Signal_Function *send_exit_signal;
|
||||||
Set_Title_Function *set_title;
|
Set_Window_Title_Function *set_window_title;
|
||||||
#else
|
#else
|
||||||
Global_Set_Setting_Function *global_set_setting_;
|
Global_Set_Setting_Function *global_set_setting_;
|
||||||
Global_Set_Mapping_Function *global_set_mapping_;
|
Global_Set_Mapping_Function *global_set_mapping_;
|
||||||
|
@ -341,7 +341,7 @@ Show_Mouse_Cursor_Function *show_mouse_cursor_;
|
||||||
Set_Fullscreen_Function *set_fullscreen_;
|
Set_Fullscreen_Function *set_fullscreen_;
|
||||||
Is_Fullscreen_Function *is_fullscreen_;
|
Is_Fullscreen_Function *is_fullscreen_;
|
||||||
Send_Exit_Signal_Function *send_exit_signal_;
|
Send_Exit_Signal_Function *send_exit_signal_;
|
||||||
Set_Title_Function *set_title_;
|
Set_Window_Title_Function *set_window_title_;
|
||||||
#endif
|
#endif
|
||||||
void *memory;
|
void *memory;
|
||||||
int32_t memory_size;
|
int32_t memory_size;
|
||||||
|
@ -435,7 +435,7 @@ app_links->show_mouse_cursor_ = Show_Mouse_Cursor;\
|
||||||
app_links->set_fullscreen_ = Set_Fullscreen;\
|
app_links->set_fullscreen_ = Set_Fullscreen;\
|
||||||
app_links->is_fullscreen_ = Is_Fullscreen;\
|
app_links->is_fullscreen_ = Is_Fullscreen;\
|
||||||
app_links->send_exit_signal_ = Send_Exit_Signal;\
|
app_links->send_exit_signal_ = Send_Exit_Signal;\
|
||||||
app_links->set_title_ = Set_Title;} while(false)
|
app_links->set_window_title_ = Set_Window_Title;} while(false)
|
||||||
#if defined(ALLOW_DEP_4CODER)
|
#if defined(ALLOW_DEP_4CODER)
|
||||||
static inline bool32 global_set_setting(Application_Links *app, Global_Setting_ID setting, int32_t value){return(app->global_set_setting(app, setting, value));}
|
static inline bool32 global_set_setting(Application_Links *app, Global_Setting_ID setting, int32_t value){return(app->global_set_setting(app, setting, value));}
|
||||||
static inline bool32 global_set_mapping(Application_Links *app, void *data, int32_t size){return(app->global_set_mapping(app, data, size));}
|
static inline bool32 global_set_mapping(Application_Links *app, void *data, int32_t size){return(app->global_set_mapping(app, data, size));}
|
||||||
|
@ -521,7 +521,7 @@ static inline void show_mouse_cursor(Application_Links *app, Mouse_Cursor_Show_T
|
||||||
static inline bool32 set_fullscreen(Application_Links *app, bool32 full_screen){return(app->set_fullscreen(app, full_screen));}
|
static inline bool32 set_fullscreen(Application_Links *app, bool32 full_screen){return(app->set_fullscreen(app, full_screen));}
|
||||||
static inline bool32 is_fullscreen(Application_Links *app){return(app->is_fullscreen(app));}
|
static inline bool32 is_fullscreen(Application_Links *app){return(app->is_fullscreen(app));}
|
||||||
static inline void send_exit_signal(Application_Links *app){(app->send_exit_signal(app));}
|
static inline void send_exit_signal(Application_Links *app){(app->send_exit_signal(app));}
|
||||||
static inline void set_title(Application_Links *app, char *title){(app->set_title(app, title));}
|
static inline void set_window_title(Application_Links *app, char *title){(app->set_window_title(app, title));}
|
||||||
#else
|
#else
|
||||||
static inline bool32 global_set_setting(Application_Links *app, Global_Setting_ID setting, int32_t value){return(app->global_set_setting_(app, setting, value));}
|
static inline bool32 global_set_setting(Application_Links *app, Global_Setting_ID setting, int32_t value){return(app->global_set_setting_(app, setting, value));}
|
||||||
static inline bool32 global_set_mapping(Application_Links *app, void *data, int32_t size){return(app->global_set_mapping_(app, data, size));}
|
static inline bool32 global_set_mapping(Application_Links *app, void *data, int32_t size){return(app->global_set_mapping_(app, data, size));}
|
||||||
|
@ -607,5 +607,5 @@ static inline void show_mouse_cursor(Application_Links *app, Mouse_Cursor_Show_T
|
||||||
static inline bool32 set_fullscreen(Application_Links *app, bool32 full_screen){return(app->set_fullscreen_(app, full_screen));}
|
static inline bool32 set_fullscreen(Application_Links *app, bool32 full_screen){return(app->set_fullscreen_(app, full_screen));}
|
||||||
static inline bool32 is_fullscreen(Application_Links *app){return(app->is_fullscreen_(app));}
|
static inline bool32 is_fullscreen(Application_Links *app){return(app->is_fullscreen_(app));}
|
||||||
static inline void send_exit_signal(Application_Links *app){(app->send_exit_signal_(app));}
|
static inline void send_exit_signal(Application_Links *app){(app->send_exit_signal_(app));}
|
||||||
static inline void set_title(Application_Links *app, char *title){(app->set_title_(app, title));}
|
static inline void set_window_title(Application_Links *app, char *title){(app->set_window_title_(app, title));}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -212,198 +212,198 @@ int32_t source_name_len;
|
||||||
int32_t line_number;
|
int32_t line_number;
|
||||||
};
|
};
|
||||||
static Command_Metadata fcoder_metacmd_table[192] = {
|
static Command_Metadata fcoder_metacmd_table[192] = {
|
||||||
{ PROC_LINKS(allow_mouse, 0), "allow_mouse", 11, "Shows the mouse and causes all mouse input to be processed normally.", 68, "/home/allen/4ed/code/4coder_default_framework.h", 47, 232 },
|
{ PROC_LINKS(allow_mouse, 0), "allow_mouse", 11, "Shows the mouse and causes all mouse input to be processed normally.", 68, "C:\\work\\4ed\\code\\4coder_default_framework.h", 47, 232 },
|
||||||
{ PROC_LINKS(auto_tab_line_at_cursor, 0), "auto_tab_line_at_cursor", 23, "Auto-indents the line on which the cursor sits.", 47, "/home/allen/4ed/code/4coder_auto_indent.cpp", 43, 660 },
|
{ 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:\\work\\4ed\\code\\4coder_auto_indent.cpp", 43, 660 },
|
||||||
{ PROC_LINKS(auto_tab_range, 0), "auto_tab_range", 14, "Auto-indents the range between the cursor and the mark.", 55, "/home/allen/4ed/code/4coder_auto_indent.cpp", 43, 671 },
|
{ PROC_LINKS(auto_tab_range, 0), "auto_tab_range", 14, "Auto-indents the range between the cursor and the mark.", 55, "C:\\work\\4ed\\code\\4coder_auto_indent.cpp", 43, 671 },
|
||||||
{ PROC_LINKS(auto_tab_whole_file, 0), "auto_tab_whole_file", 19, "Audo-indents the entire current buffer.", 39, "/home/allen/4ed/code/4coder_auto_indent.cpp", 43, 650 },
|
{ PROC_LINKS(auto_tab_whole_file, 0), "auto_tab_whole_file", 19, "Audo-indents the entire current buffer.", 39, "C:\\work\\4ed\\code\\4coder_auto_indent.cpp", 43, 650 },
|
||||||
{ PROC_LINKS(backspace_char, 0), "backspace_char", 14, "Deletes the character to the left of the cursor.", 48, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 81 },
|
{ PROC_LINKS(backspace_char, 0), "backspace_char", 14, "Deletes the character to the left of the cursor.", 48, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 81 },
|
||||||
{ PROC_LINKS(backspace_word, 0), "backspace_word", 14, "Delete characters between the cursor position and the first alphanumeric boundary to the left.", 94, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 147 },
|
{ PROC_LINKS(backspace_word, 0), "backspace_word", 14, "Delete characters between the cursor position and the first alphanumeric boundary to the left.", 94, "C:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 147 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 514 },
|
{ 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:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 514 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_build_commands.cpp", 46, 203 },
|
{ 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:\\work\\4ed\\code\\4coder_build_commands.cpp", 46, 203 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_build_commands.cpp", 46, 169 },
|
{ 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:\\work\\4ed\\code\\4coder_build_commands.cpp", 46, 169 },
|
||||||
{ PROC_LINKS(center_view, 0), "center_view", 11, "Centers the view vertically on the line on which the cursor sits.", 65, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 136 },
|
{ PROC_LINKS(center_view, 0), "center_view", 11, "Centers the view vertically on the line on which the cursor sits.", 65, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 136 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_framework.h", 47, 125 },
|
{ 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:\\work\\4ed\\code\\4coder_default_framework.h", 47, 125 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_framework.h", 47, 143 },
|
{ 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:\\work\\4ed\\code\\4coder_default_framework.h", 47, 143 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_build_commands.cpp", 46, 225 },
|
{ 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:\\work\\4ed\\code\\4coder_build_commands.cpp", 46, 225 },
|
||||||
{ PROC_LINKS(clean_all_lines, 0), "clean_all_lines", 15, "Removes trailing whitespace from all lines in the current buffer.", 65, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 446 },
|
{ PROC_LINKS(clean_all_lines, 0), "clean_all_lines", 15, "Removes trailing whitespace from all lines in the current buffer.", 65, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 446 },
|
||||||
{ PROC_LINKS(click_set_cursor, 0), "click_set_cursor", 16, "Sets the cursor position to the mouse position.", 47, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 190 },
|
{ PROC_LINKS(click_set_cursor, 0), "click_set_cursor", 16, "Sets the cursor position to the mouse position.", 47, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 190 },
|
||||||
{ PROC_LINKS(click_set_mark, 0), "click_set_mark", 14, "Sets the mark position to the mouse position.", 45, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 203 },
|
{ PROC_LINKS(click_set_mark, 0), "click_set_mark", 14, "Sets the mark position to the mouse position.", 45, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 203 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_project_commands.cpp", 48, 188 },
|
{ 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:\\work\\4ed\\code\\4coder_project_commands.cpp", 48, 188 },
|
||||||
{ PROC_LINKS(close_build_panel, 0), "close_build_panel", 17, "If the special build panel is open, closes it.", 46, "/home/allen/4ed/code/4coder_build_commands.cpp", 46, 219 },
|
{ PROC_LINKS(close_build_panel, 0), "close_build_panel", 17, "If the special build panel is open, closes it.", 46, "C:\\work\\4ed\\code\\4coder_build_commands.cpp", 46, 219 },
|
||||||
{ PROC_LINKS(close_panel, 0), "close_panel", 11, "Closes the currently active panel if it is not the only panel open.", 67, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 522 },
|
{ PROC_LINKS(close_panel, 0), "close_panel", 11, "Closes the currently active panel if it is not the only panel open.", 67, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 522 },
|
||||||
{ PROC_LINKS(copy, 0), "copy", 4, "Copy the text in the range from the cursor to the mark onto the clipboard.", 74, "/home/allen/4ed/code/4coder_clipboard.cpp", 41, 52 },
|
{ PROC_LINKS(copy, 0), "copy", 4, "Copy the text in the range from the cursor to the mark onto the clipboard.", 74, "C:\\work\\4ed\\code\\4coder_clipboard.cpp", 41, 52 },
|
||||||
{ PROC_LINKS(cursor_mark_swap, 0), "cursor_mark_swap", 16, "Swaps the position of the cursor and the mark.", 46, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 109 },
|
{ PROC_LINKS(cursor_mark_swap, 0), "cursor_mark_swap", 16, "Swaps the position of the cursor and the mark.", 46, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 109 },
|
||||||
{ PROC_LINKS(cut, 0), "cut", 3, "Cut the text in the range from the cursor to the mark onto the clipboard.", 73, "/home/allen/4ed/code/4coder_clipboard.cpp", 41, 61 },
|
{ PROC_LINKS(cut, 0), "cut", 3, "Cut the text in the range from the cursor to the mark onto the clipboard.", 73, "C:\\work\\4ed\\code\\4coder_clipboard.cpp", 41, 61 },
|
||||||
{ PROC_LINKS(decrease_face_size, 0), "decrease_face_size", 18, "Decrease the size of the face used by the current buffer.", 57, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 615 },
|
{ PROC_LINKS(decrease_face_size, 0), "decrease_face_size", 18, "Decrease the size of the face used by the current buffer.", 57, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 615 },
|
||||||
{ PROC_LINKS(decrease_line_wrap, 0), "decrease_line_wrap", 18, "Decrases the current buffer's width for line wrapping.", 54, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 592 },
|
{ PROC_LINKS(decrease_line_wrap, 0), "decrease_line_wrap", 18, "Decrases the current buffer's width for line wrapping.", 54, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 592 },
|
||||||
{ PROC_LINKS(delete_char, 0), "delete_char", 11, "Deletes the character to the right of the cursor.", 49, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 63 },
|
{ PROC_LINKS(delete_char, 0), "delete_char", 11, "Deletes the character to the right of the cursor.", 49, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 63 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_scope_commands.cpp", 46, 492 },
|
{ 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:\\work\\4ed\\code\\4coder_scope_commands.cpp", 46, 492 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 1062 },
|
{ 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:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 1062 },
|
||||||
{ PROC_LINKS(delete_line, 0), "delete_line", 11, "Delete the line the on which the cursor sits.", 45, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 369 },
|
{ PROC_LINKS(delete_line, 0), "delete_line", 11, "Delete the line the on which the cursor sits.", 45, "C:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 369 },
|
||||||
{ PROC_LINKS(delete_range, 0), "delete_range", 12, "Deletes the text in the range between the cursor and the mark.", 62, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 121 },
|
{ PROC_LINKS(delete_range, 0), "delete_range", 12, "Deletes the text in the range between the cursor and the mark.", 62, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 121 },
|
||||||
{ PROC_LINKS(delete_word, 0), "delete_word", 11, "Delete characters between the cursor position and the first alphanumeric boundary to the right.", 95, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 167 },
|
{ PROC_LINKS(delete_word, 0), "delete_word", 11, "Delete characters between the cursor position and the first alphanumeric boundary to the right.", 95, "C:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 167 },
|
||||||
{ PROC_LINKS(duplicate_line, 0), "duplicate_line", 14, "Create a copy of the line on which the cursor sits.", 51, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 347 },
|
{ PROC_LINKS(duplicate_line, 0), "duplicate_line", 14, "Create a copy of the line on which the cursor sits.", 51, "C:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 347 },
|
||||||
{ PROC_LINKS(eol_dosify, 0), "eol_dosify", 10, "Puts the buffer in DOS line ending mode.", 40, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 645 },
|
{ PROC_LINKS(eol_dosify, 0), "eol_dosify", 10, "Puts the buffer in DOS line ending mode.", 40, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 645 },
|
||||||
{ PROC_LINKS(eol_nixify, 0), "eol_nixify", 10, "Puts the buffer in NIX line ending mode.", 40, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 653 },
|
{ PROC_LINKS(eol_nixify, 0), "eol_nixify", 10, "Puts the buffer in NIX line ending mode.", 40, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 653 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_system_command.cpp", 46, 30 },
|
{ 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:\\work\\4ed\\code\\4coder_system_command.cpp", 46, 30 },
|
||||||
{ PROC_LINKS(execute_arbitrary_command, 0), "execute_arbitrary_command", 25, "Execute a 'long form' command.", 30, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 750 },
|
{ PROC_LINKS(execute_arbitrary_command, 0), "execute_arbitrary_command", 25, "Execute a 'long form' command.", 30, "C:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 750 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_system_command.cpp", 46, 14 },
|
{ 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:\\work\\4ed\\code\\4coder_system_command.cpp", 46, 14 },
|
||||||
{ PROC_LINKS(exit_4coder, 0), "exit_4coder", 11, "Attempts to close 4coder.", 25, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 661 },
|
{ PROC_LINKS(exit_4coder, 0), "exit_4coder", 11, "Attempts to close 4coder.", 25, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 661 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_jump_direct.cpp", 43, 100 },
|
{ 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:\\work\\4ed\\code\\4coder_jump_direct.cpp", 43, 100 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_jump_sticky.cpp", 43, 562 },
|
{ 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:\\work\\4ed\\code\\4coder_jump_sticky.cpp", 43, 562 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_jump_sticky.cpp", 43, 544 },
|
{ 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:\\work\\4ed\\code\\4coder_jump_sticky.cpp", 43, 544 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_jump_direct.cpp", 43, 24 },
|
{ 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:\\work\\4ed\\code\\4coder_jump_direct.cpp", 43, 24 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_jump_direct.cpp", 43, 45 },
|
{ 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:\\work\\4ed\\code\\4coder_jump_direct.cpp", 43, 45 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_jump_sticky.cpp", 43, 388 },
|
{ 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:\\work\\4ed\\code\\4coder_jump_sticky.cpp", 43, 388 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_jump_sticky.cpp", 43, 360 },
|
{ 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:\\work\\4ed\\code\\4coder_jump_sticky.cpp", 43, 360 },
|
||||||
{ PROC_LINKS(goto_line, 0), "goto_line", 9, "Queries the user for a number, and jumps the cursor to the corresponding line.", 78, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 671 },
|
{ PROC_LINKS(goto_line, 0), "goto_line", 9, "Queries the user for a number, and jumps the cursor to the corresponding line.", 78, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 671 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_jump_direct.cpp", 43, 64 },
|
{ 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:\\work\\4ed\\code\\4coder_jump_direct.cpp", 43, 64 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_jump_direct.cpp", 43, 82 },
|
{ 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:\\work\\4ed\\code\\4coder_jump_direct.cpp", 43, 82 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_jump_sticky.cpp", 43, 513 },
|
{ 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:\\work\\4ed\\code\\4coder_jump_sticky.cpp", 43, 513 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_jump_sticky.cpp", 43, 483 },
|
{ 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:\\work\\4ed\\code\\4coder_jump_sticky.cpp", 43, 483 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_jump_direct.cpp", 43, 73 },
|
{ 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:\\work\\4ed\\code\\4coder_jump_direct.cpp", 43, 73 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_jump_direct.cpp", 43, 91 },
|
{ 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:\\work\\4ed\\code\\4coder_jump_direct.cpp", 43, 91 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_jump_sticky.cpp", 43, 529 },
|
{ 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:\\work\\4ed\\code\\4coder_jump_sticky.cpp", 43, 529 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_jump_sticky.cpp", 43, 499 },
|
{ 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:\\work\\4ed\\code\\4coder_jump_sticky.cpp", 43, 499 },
|
||||||
{ PROC_LINKS(hide_filebar, 0), "hide_filebar", 12, "Sets the current view to hide it's filebar.", 43, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 555 },
|
{ PROC_LINKS(hide_filebar, 0), "hide_filebar", 12, "Sets the current view to hide it's filebar.", 43, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 555 },
|
||||||
{ PROC_LINKS(hide_scrollbar, 0), "hide_scrollbar", 14, "Sets the current view to hide it's scrollbar.", 45, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 541 },
|
{ PROC_LINKS(hide_scrollbar, 0), "hide_scrollbar", 14, "Sets the current view to hide it's scrollbar.", 45, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 541 },
|
||||||
{ PROC_LINKS(highlight_next_scope_absolute, 0), "highlight_next_scope_absolute", 29, "Finds the first scope started by '{' after the cursor and puts the cursor and mark on the '{' and '}'.", 102, "/home/allen/4ed/code/4coder_scope_commands.cpp", 46, 368 },
|
{ PROC_LINKS(highlight_next_scope_absolute, 0), "highlight_next_scope_absolute", 29, "Finds the first scope started by '{' after the cursor and puts the cursor and mark on the '{' and '}'.", 102, "C:\\work\\4ed\\code\\4coder_scope_commands.cpp", 46, 368 },
|
||||||
{ PROC_LINKS(highlight_prev_scope_absolute, 0), "highlight_prev_scope_absolute", 29, "Finds the first scope started by '{' before the cursor and puts the cursor and mark on the '{' and '}'.", 103, "/home/allen/4ed/code/4coder_scope_commands.cpp", 46, 387 },
|
{ PROC_LINKS(highlight_prev_scope_absolute, 0), "highlight_prev_scope_absolute", 29, "Finds the first scope started by '{' before the cursor and puts the cursor and mark on the '{' and '}'.", 103, "C:\\work\\4ed\\code\\4coder_scope_commands.cpp", 46, 387 },
|
||||||
{ PROC_LINKS(highlight_surrounding_scope, 0), "highlight_surrounding_scope", 27, "Finds the scope enclosed by '{' '}' surrounding the cursor and puts the cursor and mark on the '{' and '}'.", 107, "/home/allen/4ed/code/4coder_scope_commands.cpp", 46, 346 },
|
{ PROC_LINKS(highlight_surrounding_scope, 0), "highlight_surrounding_scope", 27, "Finds the scope enclosed by '{' '}' surrounding the cursor and puts the cursor and mark on the '{' and '}'.", 107, "C:\\work\\4ed\\code\\4coder_scope_commands.cpp", 46, 346 },
|
||||||
{ PROC_LINKS(if0_off, 0), "if0_off", 7, "Surround the range between the cursor and mark with an '#if 0' and an '#endif'", 78, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 537 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 537 },
|
||||||
{ PROC_LINKS(increase_face_size, 0), "increase_face_size", 18, "Increase the size of the face used by the current buffer.", 57, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 603 },
|
{ PROC_LINKS(increase_face_size, 0), "increase_face_size", 18, "Increase the size of the face used by the current buffer.", 57, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 603 },
|
||||||
{ PROC_LINKS(increase_line_wrap, 0), "increase_line_wrap", 18, "Increases the current buffer's width for line wrapping.", 55, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 581 },
|
{ PROC_LINKS(increase_line_wrap, 0), "increase_line_wrap", 18, "Increases the current buffer's width for line wrapping.", 55, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 581 },
|
||||||
{ PROC_LINKS(interactive_kill_buffer, 0), "interactive_kill_buffer", 23, "Interactively kill an open buffer.", 34, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 1201 },
|
{ PROC_LINKS(interactive_kill_buffer, 0), "interactive_kill_buffer", 23, "Interactively kill an open buffer.", 34, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 1201 },
|
||||||
{ PROC_LINKS(interactive_new, 0), "interactive_new", 15, "Interactively creates a new file.", 33, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 1177 },
|
{ PROC_LINKS(interactive_new, 0), "interactive_new", 15, "Interactively creates a new file.", 33, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 1177 },
|
||||||
{ PROC_LINKS(interactive_open, 0), "interactive_open", 16, "Interactively opens a file.", 27, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 1183 },
|
{ PROC_LINKS(interactive_open, 0), "interactive_open", 16, "Interactively opens a file.", 27, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 1183 },
|
||||||
{ PROC_LINKS(interactive_open_or_new, 0), "interactive_open_or_new", 23, "Interactively opens or creates a new file.", 42, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 1189 },
|
{ PROC_LINKS(interactive_open_or_new, 0), "interactive_open_or_new", 23, "Interactively opens or creates a new file.", 42, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 1189 },
|
||||||
{ PROC_LINKS(interactive_switch_buffer, 0), "interactive_switch_buffer", 25, "Interactively switch to an open buffer.", 39, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 1195 },
|
{ PROC_LINKS(interactive_switch_buffer, 0), "interactive_switch_buffer", 25, "Interactively switch to an open buffer.", 39, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 1195 },
|
||||||
{ PROC_LINKS(kill_buffer, 0), "kill_buffer", 11, "Kills the current buffer.", 25, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 1219 },
|
{ PROC_LINKS(kill_buffer, 0), "kill_buffer", 11, "Kills the current buffer.", 25, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 1219 },
|
||||||
{ PROC_LINKS(kill_rect, 0), "kill_rect", 9, "Delete characters in a rectangular region. Range testing is done by unwrapped-xy coordinates.", 93, "/home/allen/4ed/code/power/4coder_experiments.cpp", 49, 31 },
|
{ PROC_LINKS(kill_rect, 0), "kill_rect", 9, "Delete characters in a rectangular region. Range testing is done by unwrapped-xy coordinates.", 93, "C:\\work\\4ed\\code\\power\\4coder_experiments.cpp", 50, 31 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 151 },
|
{ 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:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 151 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_function_list.cpp", 45, 348 },
|
{ 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:\\work\\4ed\\code\\4coder_function_list.cpp", 45, 348 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_search.cpp", 38, 698 },
|
{ 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:\\work\\4ed\\code\\4coder_search.cpp", 38, 698 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_search.cpp", 38, 718 },
|
{ 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:\\work\\4ed\\code\\4coder_search.cpp", 38, 718 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_search.cpp", 38, 782 },
|
{ 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:\\work\\4ed\\code\\4coder_search.cpp", 38, 782 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_search.cpp", 38, 788 },
|
{ 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:\\work\\4ed\\code\\4coder_search.cpp", 38, 788 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_search.cpp", 38, 830 },
|
{ 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:\\work\\4ed\\code\\4coder_search.cpp", 38, 830 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_search.cpp", 38, 836 },
|
{ 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:\\work\\4ed\\code\\4coder_search.cpp", 38, 836 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 454 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 454 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 466 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 466 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_search.cpp", 38, 708 },
|
{ 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:\\work\\4ed\\code\\4coder_search.cpp", 38, 708 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_search.cpp", 38, 728 },
|
{ 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:\\work\\4ed\\code\\4coder_search.cpp", 38, 728 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_project_commands.cpp", 48, 408 },
|
{ 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:\\work\\4ed\\code\\4coder_project_commands.cpp", 48, 408 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 1130 },
|
{ 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:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 1130 },
|
||||||
{ PROC_LINKS(miblo_decrement_basic, 0), "miblo_decrement_basic", 21, "Decrement an integer under the cursor by one.", 45, "/home/allen/4ed/code/power/4coder_miblo_numbers.cpp", 51, 119 },
|
{ PROC_LINKS(miblo_decrement_basic, 0), "miblo_decrement_basic", 21, "Decrement an integer under the cursor by one.", 45, "C:\\work\\4ed\\code\\power\\4coder_miblo_numbers.cpp", 52, 119 },
|
||||||
{ PROC_LINKS(miblo_decrement_time_stamp, 0), "miblo_decrement_time_stamp", 26, "Decrement a time stamp under the cursor by one second. (format [m]m:ss or h:mm:ss", 81, "/home/allen/4ed/code/power/4coder_miblo_numbers.cpp", 51, 392 },
|
{ PROC_LINKS(miblo_decrement_time_stamp, 0), "miblo_decrement_time_stamp", 26, "Decrement a time stamp under the cursor by one second. (format [m]m:ss or h:mm:ss", 81, "C:\\work\\4ed\\code\\power\\4coder_miblo_numbers.cpp", 52, 392 },
|
||||||
{ PROC_LINKS(miblo_decrement_time_stamp_minute, 0), "miblo_decrement_time_stamp_minute", 33, "Decrement a time stamp under the cursor by one minute. (format [m]m:ss or h:mm:ss", 81, "/home/allen/4ed/code/power/4coder_miblo_numbers.cpp", 51, 404 },
|
{ PROC_LINKS(miblo_decrement_time_stamp_minute, 0), "miblo_decrement_time_stamp_minute", 33, "Decrement a time stamp under the cursor by one minute. (format [m]m:ss or h:mm:ss", 81, "C:\\work\\4ed\\code\\power\\4coder_miblo_numbers.cpp", 52, 404 },
|
||||||
{ PROC_LINKS(miblo_increment_basic, 0), "miblo_increment_basic", 21, "Increment an integer under the cursor by one.", 45, "/home/allen/4ed/code/power/4coder_miblo_numbers.cpp", 51, 103 },
|
{ PROC_LINKS(miblo_increment_basic, 0), "miblo_increment_basic", 21, "Increment an integer under the cursor by one.", 45, "C:\\work\\4ed\\code\\power\\4coder_miblo_numbers.cpp", 52, 103 },
|
||||||
{ PROC_LINKS(miblo_increment_time_stamp, 0), "miblo_increment_time_stamp", 26, "Increment a time stamp under the cursor by one second. (format [m]m:ss or h:mm:ss", 81, "/home/allen/4ed/code/power/4coder_miblo_numbers.cpp", 51, 386 },
|
{ PROC_LINKS(miblo_increment_time_stamp, 0), "miblo_increment_time_stamp", 26, "Increment a time stamp under the cursor by one second. (format [m]m:ss or h:mm:ss", 81, "C:\\work\\4ed\\code\\power\\4coder_miblo_numbers.cpp", 52, 386 },
|
||||||
{ PROC_LINKS(miblo_increment_time_stamp_minute, 0), "miblo_increment_time_stamp_minute", 33, "Increment a time stamp under the cursor by one minute. (format [m]m:ss or h:mm:ss", 81, "/home/allen/4ed/code/power/4coder_miblo_numbers.cpp", 51, 398 },
|
{ PROC_LINKS(miblo_increment_time_stamp_minute, 0), "miblo_increment_time_stamp_minute", 33, "Increment a time stamp under the cursor by one minute. (format [m]m:ss or h:mm:ss", 81, "C:\\work\\4ed\\code\\power\\4coder_miblo_numbers.cpp", 52, 398 },
|
||||||
{ PROC_LINKS(move_down, 0), "move_down", 9, "Moves the cursor down one line.", 31, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 233 },
|
{ PROC_LINKS(move_down, 0), "move_down", 9, "Moves the cursor down one line.", 31, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 233 },
|
||||||
{ PROC_LINKS(move_down_10, 0), "move_down_10", 12, "Moves the cursor down ten lines.", 32, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 245 },
|
{ PROC_LINKS(move_down_10, 0), "move_down_10", 12, "Moves the cursor down ten lines.", 32, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 245 },
|
||||||
{ PROC_LINKS(move_down_textual, 0), "move_down_textual", 17, "Moves down to the next line of actual text, regardless of line wrapping.", 72, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 318 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 318 },
|
||||||
{ PROC_LINKS(move_left, 0), "move_left", 9, "Moves the cursor one character to the left.", 43, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 286 },
|
{ PROC_LINKS(move_left, 0), "move_left", 9, "Moves the cursor one character to the left.", 43, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 286 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 330 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 330 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 271 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 271 },
|
||||||
{ PROC_LINKS(move_right, 0), "move_right", 10, "Moves the cursor one character to the right.", 44, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 295 },
|
{ PROC_LINKS(move_right, 0), "move_right", 10, "Moves the cursor one character to the right.", 44, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 295 },
|
||||||
{ PROC_LINKS(move_up, 0), "move_up", 7, "Moves the cursor up one line.", 29, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 227 },
|
{ PROC_LINKS(move_up, 0), "move_up", 7, "Moves the cursor up one line.", 29, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 227 },
|
||||||
{ PROC_LINKS(move_up_10, 0), "move_up_10", 10, "Moves the cursor up ten lines.", 30, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 239 },
|
{ PROC_LINKS(move_up_10, 0), "move_up_10", 10, "Moves the cursor up ten lines.", 30, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 239 },
|
||||||
{ PROC_LINKS(multi_line_edit, 0), "multi_line_edit", 15, "Begin multi-line mode. In multi-line mode characters are inserted at every line between the mark and cursor. All characters are inserted at the same character offset into the line. This mode uses line_char coordinates.", 221, "/home/allen/4ed/code/power/4coder_experiments.cpp", 49, 122 },
|
{ PROC_LINKS(multi_line_edit, 0), "multi_line_edit", 15, "Begin multi-line mode. In multi-line mode characters are inserted at every line between the mark and cursor. All characters are inserted at the same character offset into the line. This mode uses line_char coordinates.", 221, "C:\\work\\4ed\\code\\power\\4coder_experiments.cpp", 50, 122 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_jump_direct.cpp", 43, 117 },
|
{ 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:\\work\\4ed\\code\\4coder_jump_direct.cpp", 43, 117 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_jump_direct.cpp", 43, 132 },
|
{ 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:\\work\\4ed\\code\\4coder_jump_direct.cpp", 43, 132 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_jump_sticky.cpp", 43, 600 },
|
{ 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:\\work\\4ed\\code\\4coder_jump_sticky.cpp", 43, 600 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_jump_sticky.cpp", 43, 585 },
|
{ 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:\\work\\4ed\\code\\4coder_jump_sticky.cpp", 43, 585 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_project_commands.cpp", 48, 165 },
|
{ 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:\\work\\4ed\\code\\4coder_project_commands.cpp", 48, 165 },
|
||||||
{ PROC_LINKS(open_all_code_recursive, 0), "open_all_code_recursive", 23, "Works as open_all_code but also runs in all subdirectories.", 59, "/home/allen/4ed/code/4coder_project_commands.cpp", 48, 180 },
|
{ 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:\\work\\4ed\\code\\4coder_project_commands.cpp", 48, 180 },
|
||||||
{ PROC_LINKS(open_color_tweaker, 0), "open_color_tweaker", 18, "Opens the 4coder colors and fonts selector menu.", 48, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 1225 },
|
{ PROC_LINKS(open_color_tweaker, 0), "open_color_tweaker", 18, "Opens the 4coder colors and fonts selector menu.", 48, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 1225 },
|
||||||
{ PROC_LINKS(open_debug, 0), "open_debug", 10, "Opens a debug view for internal use.", 36, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 1231 },
|
{ PROC_LINKS(open_debug, 0), "open_debug", 10, "Opens a debug view for internal use.", 36, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 1231 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 634 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 634 },
|
||||||
{ PROC_LINKS(open_in_other, 0), "open_in_other", 13, "Reads a filename from surrounding '\"' characters and attempts to open the corresponding file, displaying it in the other view.", 127, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 651 },
|
{ PROC_LINKS(open_in_other, 0), "open_in_other", 13, "Reads a filename from surrounding '\"' characters and attempts to open the corresponding file, displaying it in the other view.", 127, "C:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 651 },
|
||||||
{ PROC_LINKS(open_long_braces, 0), "open_long_braces", 16, "At the cursor, insert a '{' and '}' separated by a blank line.", 62, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 513 },
|
{ PROC_LINKS(open_long_braces, 0), "open_long_braces", 16, "At the cursor, insert a '{' and '}' separated by a blank line.", 62, "C:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 513 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 529 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 529 },
|
||||||
{ PROC_LINKS(open_long_braces_semicolon, 0), "open_long_braces_semicolon", 26, "At the cursor, insert a '{' and '};' separated by a blank line.", 63, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 521 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 521 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 707 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 707 },
|
||||||
{ PROC_LINKS(open_panel_hsplit, 0), "open_panel_hsplit", 17, "Create a new panel by horizontally splitting the active panel.", 62, "/home/allen/4ed/code/4coder_default_framework.h", 47, 170 },
|
{ PROC_LINKS(open_panel_hsplit, 0), "open_panel_hsplit", 17, "Create a new panel by horizontally splitting the active panel.", 62, "C:\\work\\4ed\\code\\4coder_default_framework.h", 47, 170 },
|
||||||
{ PROC_LINKS(open_panel_vsplit, 0), "open_panel_vsplit", 17, "Create a new panel by vertically splitting the active panel.", 60, "/home/allen/4ed/code/4coder_default_framework.h", 47, 161 },
|
{ PROC_LINKS(open_panel_vsplit, 0), "open_panel_vsplit", 17, "Create a new panel by vertically splitting the active panel.", 60, "C:\\work\\4ed\\code\\4coder_default_framework.h", 47, 161 },
|
||||||
{ PROC_LINKS(page_down, 0), "page_down", 9, "Scrolls the view down one view height and moves the cursor down one view height.", 80, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 276 },
|
{ 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:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 276 },
|
||||||
{ PROC_LINKS(page_up, 0), "page_up", 7, "Scrolls the view up one view height and moves the cursor up one view height.", 76, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 267 },
|
{ 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:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 267 },
|
||||||
{ PROC_LINKS(paste, 0), "paste", 5, "At the cursor, insert the text at the top of the clipboard.", 59, "/home/allen/4ed/code/4coder_clipboard.cpp", 41, 70 },
|
{ PROC_LINKS(paste, 0), "paste", 5, "At the cursor, insert the text at the top of the clipboard.", 59, "C:\\work\\4ed\\code\\4coder_clipboard.cpp", 41, 70 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 391 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 391 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_clipboard.cpp", 41, 108 },
|
{ 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:\\work\\4ed\\code\\4coder_clipboard.cpp", 41, 108 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 398 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 398 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_scope_commands.cpp", 46, 486 },
|
{ 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:\\work\\4ed\\code\\4coder_scope_commands.cpp", 46, 486 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_project_commands.cpp", 48, 575 },
|
{ 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:\\work\\4ed\\code\\4coder_project_commands.cpp", 48, 575 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_project_commands.cpp", 48, 601 },
|
{ 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:\\work\\4ed\\code\\4coder_project_commands.cpp", 48, 601 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 983 },
|
{ 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:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 983 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 1004 },
|
{ 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:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 1004 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 240 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 240 },
|
||||||
{ PROC_LINKS(redo, 0), "redo", 4, "Advances forewards through the undo history.", 44, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 1171 },
|
{ PROC_LINKS(redo, 0), "redo", 4, "Advances forewards through the undo history.", 44, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 1171 },
|
||||||
{ PROC_LINKS(reload_current_project, 0), "reload_current_project", 22, "If a project file has already been loaded, reloads the same file. Useful for when the project configuration is changed.", 120, "/home/allen/4ed/code/4coder_project_commands.cpp", 48, 479 },
|
{ PROC_LINKS(reload_current_project, 0), "reload_current_project", 22, "If a project file has already been loaded, reloads the same file. Useful for when the project configuration is changed.", 120, "C:\\work\\4ed\\code\\4coder_project_commands.cpp", 48, 479 },
|
||||||
{ PROC_LINKS(remap_interactive, 0), "remap_interactive", 17, "Switch to a named key binding map.", 34, "/home/allen/4ed/code/4coder_default_framework.h", 47, 743 },
|
{ PROC_LINKS(remap_interactive, 0), "remap_interactive", 17, "Switch to a named key binding map.", 34, "C:\\work\\4ed\\code\\4coder_default_framework.h", 47, 743 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 1088 },
|
{ 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:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 1088 },
|
||||||
{ PROC_LINKS(rename_parameter, 0), "rename_parameter", 16, "If the cursor is found to be on the name of a function parameter in the signature of a function definition, all occurences within the scope of the function will be replaced with a new provided string.", 200, "/home/allen/4ed/code/power/4coder_experiments.cpp", 49, 387 },
|
{ PROC_LINKS(rename_parameter, 0), "rename_parameter", 16, "If the cursor is found to be on the name of a function parameter in the signature of a function definition, all occurences within the scope of the function will be replaced with a new provided string.", 200, "C:\\work\\4ed\\code\\power\\4coder_experiments.cpp", 50, 387 },
|
||||||
{ PROC_LINKS(reopen, 0), "reopen", 6, "Reopen the current buffer from the hard drive.", 46, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 1207 },
|
{ PROC_LINKS(reopen, 0), "reopen", 6, "Reopen the current buffer from the hard drive.", 46, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 1207 },
|
||||||
{ PROC_LINKS(replace_all_occurrences, 0), "replace_all_occurrences", 23, "Queries the user for two strings, and replaces all occurrences of the first string with the second string in all open buffers.", 126, "/home/allen/4ed/code/power/4coder_experiments.cpp", 49, 773 },
|
{ PROC_LINKS(replace_all_occurrences, 0), "replace_all_occurrences", 23, "Queries the user for two strings, and replaces all occurrences of the first string with the second string in all open buffers.", 126, "C:\\work\\4ed\\code\\power\\4coder_experiments.cpp", 50, 773 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 880 },
|
{ 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:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 880 },
|
||||||
{ PROC_LINKS(reverse_search, 0), "reverse_search", 14, "Begins an incremental search up through the current buffer for a user specified string.", 87, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 851 },
|
{ PROC_LINKS(reverse_search, 0), "reverse_search", 14, "Begins an incremental search up through the current buffer for a user specified string.", 87, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 851 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 869 },
|
{ 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:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 869 },
|
||||||
{ PROC_LINKS(save, 0), "save", 4, "Saves the current buffer.", 25, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 1213 },
|
{ PROC_LINKS(save, 0), "save", 4, "Saves the current buffer.", 25, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 1213 },
|
||||||
{ PROC_LINKS(save_all_dirty_buffers, 0), "save_all_dirty_buffers", 22, "Saves all buffers marked dirty (showing the '*' indicator).", 59, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 1027 },
|
{ PROC_LINKS(save_all_dirty_buffers, 0), "save_all_dirty_buffers", 22, "Saves all buffers marked dirty (showing the '*' indicator).", 59, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 1027 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_scope_commands.cpp", 46, 751 },
|
{ 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:\\work\\4ed\\code\\4coder_scope_commands.cpp", 46, 751 },
|
||||||
{ PROC_LINKS(search, 0), "search", 6, "Begins an incremental search down through the current buffer for a user specified string.", 89, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 844 },
|
{ PROC_LINKS(search, 0), "search", 6, "Begins an incremental search down through the current buffer for a user specified string.", 89, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 844 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 858 },
|
{ 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:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 858 },
|
||||||
{ PROC_LINKS(seek_alphanumeric_left, 0), "seek_alphanumeric_left", 22, "Seek left for boundary between alphanumeric characters and non-alphanumeric characters.", 87, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 128 },
|
{ PROC_LINKS(seek_alphanumeric_left, 0), "seek_alphanumeric_left", 22, "Seek left for boundary between alphanumeric characters and non-alphanumeric characters.", 87, "C:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 128 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 136 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 136 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 132 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 132 },
|
||||||
{ PROC_LINKS(seek_alphanumeric_right, 0), "seek_alphanumeric_right", 23, "Seek right for boundary between alphanumeric characters and non-alphanumeric characters.", 88, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 124 },
|
{ PROC_LINKS(seek_alphanumeric_right, 0), "seek_alphanumeric_right", 23, "Seek right for boundary between alphanumeric characters and non-alphanumeric characters.", 88, "C:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 124 },
|
||||||
{ PROC_LINKS(seek_beginning_of_line, 0), "seek_beginning_of_line", 22, "Seeks the cursor to the beginning of the visual line.", 53, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 361 },
|
{ PROC_LINKS(seek_beginning_of_line, 0), "seek_beginning_of_line", 22, "Seeks the cursor to the beginning of the visual line.", 53, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 361 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 339 },
|
{ 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:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 339 },
|
||||||
{ PROC_LINKS(seek_end_of_line, 0), "seek_end_of_line", 16, "Seeks the cursor to the end of the visual line.", 47, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 374 },
|
{ PROC_LINKS(seek_end_of_line, 0), "seek_end_of_line", 16, "Seeks the cursor to the end of the visual line.", 47, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 374 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 350 },
|
{ 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:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 350 },
|
||||||
{ PROC_LINKS(seek_token_left, 0), "seek_token_left", 15, "Seek left for the next beginning of a token.", 44, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 112 },
|
{ PROC_LINKS(seek_token_left, 0), "seek_token_left", 15, "Seek left for the next beginning of a token.", 44, "C:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 112 },
|
||||||
{ PROC_LINKS(seek_token_right, 0), "seek_token_right", 16, "Seek right for the next end of a token.", 39, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 108 },
|
{ PROC_LINKS(seek_token_right, 0), "seek_token_right", 16, "Seek right for the next end of a token.", 39, "C:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 108 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 120 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 120 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 116 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 116 },
|
||||||
{ PROC_LINKS(seek_whitespace_down, 0), "seek_whitespace_down", 20, "Seeks the cursor down to the next blank line.", 45, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 328 },
|
{ PROC_LINKS(seek_whitespace_down, 0), "seek_whitespace_down", 20, "Seeks the cursor down to the next blank line.", 45, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 328 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 394 },
|
{ 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:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 394 },
|
||||||
{ PROC_LINKS(seek_whitespace_left, 0), "seek_whitespace_left", 20, "Seek left for the next boundary between whitespace and non-whitespace.", 70, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 104 },
|
{ PROC_LINKS(seek_whitespace_left, 0), "seek_whitespace_left", 20, "Seek left for the next boundary between whitespace and non-whitespace.", 70, "C:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 104 },
|
||||||
{ PROC_LINKS(seek_whitespace_right, 0), "seek_whitespace_right", 21, "Seek right for the next boundary between whitespace and non-whitespace.", 71, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 100 },
|
{ PROC_LINKS(seek_whitespace_right, 0), "seek_whitespace_right", 21, "Seek right for the next boundary between whitespace and non-whitespace.", 71, "C:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 100 },
|
||||||
{ PROC_LINKS(seek_whitespace_up, 0), "seek_whitespace_up", 18, "Seeks the cursor up to the next blank line.", 43, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 317 },
|
{ PROC_LINKS(seek_whitespace_up, 0), "seek_whitespace_up", 18, "Seeks the cursor up to the next blank line.", 43, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 317 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 387 },
|
{ 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:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 387 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 304 },
|
{ 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:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 304 },
|
||||||
{ PROC_LINKS(set_bindings_choose, 0), "set_bindings_choose", 19, "Remap keybindings using the 'choose' mapping rule.", 50, "/home/allen/4ed/code/4coder_remapping_commands.cpp", 50, 49 },
|
{ PROC_LINKS(set_bindings_choose, 0), "set_bindings_choose", 19, "Remap keybindings using the 'choose' mapping rule.", 50, "C:\\work\\4ed\\code\\4coder_remapping_commands.cpp", 50, 49 },
|
||||||
{ PROC_LINKS(set_bindings_default, 0), "set_bindings_default", 20, "Remap keybindings using the 'default' mapping rule.", 51, "/home/allen/4ed/code/4coder_remapping_commands.cpp", 50, 63 },
|
{ PROC_LINKS(set_bindings_default, 0), "set_bindings_default", 20, "Remap keybindings using the 'default' mapping rule.", 51, "C:\\work\\4ed\\code\\4coder_remapping_commands.cpp", 50, 63 },
|
||||||
{ PROC_LINKS(set_bindings_mac_default, 0), "set_bindings_mac_default", 24, "Remap keybindings using the 'mac-default' mapping rule.", 55, "/home/allen/4ed/code/4coder_remapping_commands.cpp", 50, 77 },
|
{ PROC_LINKS(set_bindings_mac_default, 0), "set_bindings_mac_default", 24, "Remap keybindings using the 'mac-default' mapping rule.", 55, "C:\\work\\4ed\\code\\4coder_remapping_commands.cpp", 50, 77 },
|
||||||
{ PROC_LINKS(set_mark, 0), "set_mark", 8, "Sets the mark to the current position of the cursor.", 52, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 100 },
|
{ PROC_LINKS(set_mark, 0), "set_mark", 8, "Sets the mark to the current position of the cursor.", 52, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 100 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_project_commands.cpp", 48, 658 },
|
{ 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:\\work\\4ed\\code\\4coder_project_commands.cpp", 48, 658 },
|
||||||
{ PROC_LINKS(show_filebar, 0), "show_filebar", 12, "Sets the current view to show it's filebar.", 43, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 548 },
|
{ PROC_LINKS(show_filebar, 0), "show_filebar", 12, "Sets the current view to show it's filebar.", 43, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 548 },
|
||||||
{ PROC_LINKS(show_scrollbar, 0), "show_scrollbar", 14, "Sets the current view to show it's scrollbar.", 45, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 534 },
|
{ PROC_LINKS(show_scrollbar, 0), "show_scrollbar", 14, "Sets the current view to show it's scrollbar.", 45, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 534 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 187 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 187 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 211 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 211 },
|
||||||
{ PROC_LINKS(suppress_mouse, 0), "suppress_mouse", 14, "Hides the mouse and causes all mosue input (clicks, position, wheel) to be ignored.", 83, "/home/allen/4ed/code/4coder_default_framework.h", 47, 226 },
|
{ PROC_LINKS(suppress_mouse, 0), "suppress_mouse", 14, "Hides the mouse and causes all mosue input (clicks, position, wheel) to be ignored.", 83, "C:\\work\\4ed\\code\\4coder_default_framework.h", 47, 226 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 731 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 731 },
|
||||||
{ PROC_LINKS(to_lowercase, 0), "to_lowercase", 12, "Converts all ascii text in the range between the cursor and the mark to lowercase.", 82, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 426 },
|
{ 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:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 426 },
|
||||||
{ PROC_LINKS(to_uppercase, 0), "to_uppercase", 12, "Converts all ascii text in the range between the cursor and the mark to uppercase.", 82, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 406 },
|
{ 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:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 406 },
|
||||||
{ PROC_LINKS(toggle_filebar, 0), "toggle_filebar", 14, "Toggles the visibility status of the current view's filebar.", 60, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 562 },
|
{ PROC_LINKS(toggle_filebar, 0), "toggle_filebar", 14, "Toggles the visibility status of the current view's filebar.", 60, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 562 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_framework.h", 47, 244 },
|
{ 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:\\work\\4ed\\code\\4coder_default_framework.h", 47, 244 },
|
||||||
{ PROC_LINKS(toggle_line_wrap, 0), "toggle_line_wrap", 16, "Toggles the current buffer's line wrapping status.", 50, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 571 },
|
{ PROC_LINKS(toggle_line_wrap, 0), "toggle_line_wrap", 16, "Toggles the current buffer's line wrapping status.", 50, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 571 },
|
||||||
{ PROC_LINKS(toggle_mouse, 0), "toggle_mouse", 12, "Toggles the mouse suppression mode, see suppress_mouse and allow_mouse.", 71, "/home/allen/4ed/code/4coder_default_framework.h", 47, 238 },
|
{ PROC_LINKS(toggle_mouse, 0), "toggle_mouse", 12, "Toggles the mouse suppression mode, see suppress_mouse and allow_mouse.", 71, "C:\\work\\4ed\\code\\4coder_default_framework.h", 47, 238 },
|
||||||
{ PROC_LINKS(toggle_show_whitespace, 0), "toggle_show_whitespace", 22, "Toggles the current buffer's whitespace visibility status.", 58, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 638 },
|
{ PROC_LINKS(toggle_show_whitespace, 0), "toggle_show_whitespace", 22, "Toggles the current buffer's whitespace visibility status.", 58, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 638 },
|
||||||
{ PROC_LINKS(toggle_virtual_whitespace, 0), "toggle_virtual_whitespace", 25, "Toggles the current buffer's virtual whitespace status.", 55, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 627 },
|
{ PROC_LINKS(toggle_virtual_whitespace, 0), "toggle_virtual_whitespace", 25, "Toggles the current buffer's virtual whitespace status.", 55, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 627 },
|
||||||
{ PROC_LINKS(undo, 0), "undo", 4, "Advances backwards through the undo history.", 44, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 1165 },
|
{ PROC_LINKS(undo, 0), "undo", 4, "Advances backwards through the undo history.", 44, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 1165 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 721 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 721 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_search.cpp", 38, 859 },
|
{ 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:\\work\\4ed\\code\\4coder_search.cpp", 38, 859 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_auto_indent.cpp", 43, 683 },
|
{ 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:\\work\\4ed\\code\\4coder_auto_indent.cpp", 43, 683 },
|
||||||
{ PROC_LINKS(write_block, 0), "write_block", 11, "At the cursor, insert a block comment.", 38, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 584 },
|
{ PROC_LINKS(write_block, 0), "write_block", 11, "At the cursor, insert a block comment.", 38, "C:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 584 },
|
||||||
{ PROC_LINKS(write_character, 0), "write_character", 15, "Inserts whatever character was used to trigger this command.", 60, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 47 },
|
{ PROC_LINKS(write_character, 0), "write_character", 15, "Inserts whatever character was used to trigger this command.", 60, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 47 },
|
||||||
{ PROC_LINKS(write_explicit_enum_flags, 0), "write_explicit_enum_flags", 25, "If the cursor is found to be on the '{' of an enum definition, the values of the enum will be filled in to give each a unique power of 2 value, starting from 1. Existing values are overwritten.", 194, "/home/allen/4ed/code/power/4coder_experiments.cpp", 49, 709 },
|
{ PROC_LINKS(write_explicit_enum_flags, 0), "write_explicit_enum_flags", 25, "If the cursor is found to be on the '{' of an enum definition, the values of the enum will be filled in to give each a unique power of 2 value, starting from 1. Existing values are overwritten.", 194, "C:\\work\\4ed\\code\\power\\4coder_experiments.cpp", 50, 709 },
|
||||||
{ PROC_LINKS(write_explicit_enum_values, 0), "write_explicit_enum_values", 26, "If the cursor is found to be on the '{' of an enum definition, the values of the enum will be filled in sequentially starting from zero. Existing values are overwritten.", 170, "/home/allen/4ed/code/power/4coder_experiments.cpp", 49, 703 },
|
{ PROC_LINKS(write_explicit_enum_values, 0), "write_explicit_enum_values", 26, "If the cursor is found to be on the '{' of an enum definition, the values of the enum will be filled in sequentially starting from zero. Existing values are overwritten.", 170, "C:\\work\\4ed\\code\\power\\4coder_experiments.cpp", 50, 703 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 572 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 572 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 578 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 578 },
|
||||||
{ 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, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 566 },
|
{ 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:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 566 },
|
||||||
{ PROC_LINKS(write_underscore, 0), "write_underscore", 16, "Inserts an underscore.", 22, "/home/allen/4ed/code/4coder_base_commands.cpp", 45, 56 },
|
{ PROC_LINKS(write_underscore, 0), "write_underscore", 16, "Inserts an underscore.", 22, "C:\\work\\4ed\\code\\4coder_base_commands.cpp", 45, 56 },
|
||||||
{ PROC_LINKS(write_zero_struct, 0), "write_zero_struct", 17, "At the cursor, insert a ' = {0};'.", 34, "/home/allen/4ed/code/4coder_default_include.cpp", 47, 590 },
|
{ PROC_LINKS(write_zero_struct, 0), "write_zero_struct", 17, "At the cursor, insert a ' = {0};'.", 34, "C:\\work\\4ed\\code\\4coder_default_include.cpp", 47, 590 },
|
||||||
};
|
};
|
||||||
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;
|
||||||
|
|
|
@ -148,7 +148,7 @@ 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;
|
Binding_Unit unit = {0};
|
||||||
unit.type = unit_inherit;
|
unit.type = unit_inherit;
|
||||||
unit.map_inherit.mapid = mapid;
|
unit.map_inherit.mapid = mapid;
|
||||||
|
|
||||||
|
@ -157,91 +157,91 @@ 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;
|
Binding_Unit unit = {0};
|
||||||
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;
|
||||||
|
|
||||||
write_unit(helper, unit);
|
write_unit(helper, unit);
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
Binding_Unit unit = {0};
|
||||||
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;
|
||||||
|
write_unit(helper, unit);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void
|
||||||
|
set_buffer_name_resolver(Bind_Helper *helper, Buffer_Name_Resolver_Function *func){
|
||||||
|
Binding_Unit unit = {0};
|
||||||
|
unit.type = unit_hook;
|
||||||
|
unit.hook.hook_id = special_hook_buffer_name_resolver;
|
||||||
|
unit.hook.func = (void*)func;
|
||||||
write_unit(helper, unit);
|
write_unit(helper, unit);
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
Binding_Unit unit = {0};
|
||||||
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;
|
||||||
|
|
||||||
write_unit(helper, unit);
|
write_unit(helper, unit);
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
Binding_Unit unit = {0};
|
||||||
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;
|
||||||
|
|
||||||
write_unit(helper, unit);
|
write_unit(helper, unit);
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
Binding_Unit unit = {0};
|
||||||
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;
|
||||||
|
|
||||||
write_unit(helper, unit);
|
write_unit(helper, unit);
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
Binding_Unit unit = {0};
|
||||||
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;
|
||||||
|
|
||||||
write_unit(helper, unit);
|
write_unit(helper, unit);
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
Binding_Unit unit = {0};
|
||||||
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;
|
||||||
|
|
||||||
write_unit(helper, unit);
|
write_unit(helper, unit);
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
Binding_Unit unit = {0};
|
||||||
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;
|
||||||
|
|
||||||
write_unit(helper, unit);
|
write_unit(helper, unit);
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
Binding_Unit unit = {0};
|
||||||
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;
|
||||||
|
|
||||||
write_unit(helper, unit);
|
write_unit(helper, unit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -399,7 +399,7 @@ load_project_from_config_data(Application_Links *app, Partition *part, char *con
|
||||||
append(&builder, "4coder: ");
|
append(&builder, "4coder: ");
|
||||||
append(&builder, project_dir);
|
append(&builder, project_dir);
|
||||||
terminate_with_null(&builder);
|
terminate_with_null(&builder);
|
||||||
set_title(app, builder.str);
|
set_window_title(app, builder.str);
|
||||||
}
|
}
|
||||||
|
|
||||||
end_temp_memory(temp);
|
end_temp_memory(temp);
|
||||||
|
|
|
@ -185,7 +185,7 @@ seek_potential_match(Application_Links *app, Search_Range *range, Search_Key key
|
||||||
| OptFlag(!forward, BufferSeekString_Backward);
|
| OptFlag(!forward, BufferSeekString_Backward);
|
||||||
result->buffer = get_buffer(app, range->buffer, AccessAll);
|
result->buffer = get_buffer(app, range->buffer, AccessAll);
|
||||||
|
|
||||||
int32_t best_pos = 0;
|
int32_t best_pos = -1;
|
||||||
if (forward){
|
if (forward){
|
||||||
best_pos = end_pos;
|
best_pos = end_pos;
|
||||||
}
|
}
|
||||||
|
@ -195,7 +195,7 @@ seek_potential_match(Application_Links *app, Search_Range *range, Search_Key key
|
||||||
int32_t new_pos = -1;
|
int32_t new_pos = -1;
|
||||||
buffer_seek_string(app, &result->buffer, start_pos, end_pos, range->start, word.str, word.size, &new_pos, flags);
|
buffer_seek_string(app, &result->buffer, start_pos, end_pos, range->start, word.str, word.size, &new_pos, flags);
|
||||||
|
|
||||||
if (new_pos >= 0){
|
if (new_pos >= 0 && new_pos < end_pos){
|
||||||
if (forward){
|
if (forward){
|
||||||
if (new_pos < best_pos){
|
if (new_pos < best_pos){
|
||||||
best_pos = new_pos;
|
best_pos = new_pos;
|
||||||
|
|
22
4ed.cpp
22
4ed.cpp
|
@ -549,14 +549,6 @@ COMMAND_DECL(save){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_DECL(save_as){
|
|
||||||
USE_MODELS(models);
|
|
||||||
USE_VIEW(view);
|
|
||||||
REQ_FILE(file, view);
|
|
||||||
|
|
||||||
view_show_interactive(system, view, models, IAct_Save_As, IInt_Sys_File_List, make_lit_string("Save As: "));
|
|
||||||
}
|
|
||||||
|
|
||||||
COMMAND_DECL(change_active_panel){
|
COMMAND_DECL(change_active_panel){
|
||||||
USE_MODELS(models);
|
USE_MODELS(models);
|
||||||
USE_PANEL(panel);
|
USE_PANEL(panel);
|
||||||
|
@ -937,6 +929,11 @@ interpret_binding_buffer(Models *models, void *buffer, i32 size){
|
||||||
models->scroll_rule = (Scroll_Rule_Function*)unit->hook.func;
|
models->scroll_rule = (Scroll_Rule_Function*)unit->hook.func;
|
||||||
}break;
|
}break;
|
||||||
|
|
||||||
|
case special_hook_buffer_name_resolver:
|
||||||
|
{
|
||||||
|
models->buffer_name_resolver = (Buffer_Name_Resolver_Function*)unit->hook.func;
|
||||||
|
}break;
|
||||||
|
|
||||||
case special_hook_input_filter:
|
case special_hook_input_filter:
|
||||||
{
|
{
|
||||||
models->input_filter = (Input_Filter_Function*)unit->hook.func;
|
models->input_filter = (Input_Filter_Function*)unit->hook.func;
|
||||||
|
@ -1031,7 +1028,6 @@ setup_command_table(){
|
||||||
SET(interactive_open_or_new);
|
SET(interactive_open_or_new);
|
||||||
SET(interactive_switch_buffer);
|
SET(interactive_switch_buffer);
|
||||||
SET(interactive_kill_buffer);
|
SET(interactive_kill_buffer);
|
||||||
SET(save_as);
|
|
||||||
|
|
||||||
SET(reopen);
|
SET(reopen);
|
||||||
SET(save);
|
SET(save);
|
||||||
|
@ -1455,7 +1451,7 @@ App_Init_Sig(app_init){
|
||||||
|
|
||||||
for (i32 i = 0; i < ArrayCount(init_files); ++i){
|
for (i32 i = 0; i < ArrayCount(init_files); ++i){
|
||||||
Editing_File *file = working_set_alloc_always(&models->working_set, general);
|
Editing_File *file = working_set_alloc_always(&models->working_set, general);
|
||||||
buffer_bind_name(general, &models->working_set, file, init_files[i].name);
|
buffer_bind_name(models, general, &models->working_set, file, init_files[i].name);
|
||||||
|
|
||||||
if (init_files[i].read_only){
|
if (init_files[i].read_only){
|
||||||
init_read_only_file(system, models, file);
|
init_read_only_file(system, models, file);
|
||||||
|
@ -1518,9 +1514,9 @@ 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_Canon_Name canon = {0};
|
Editing_File_Name canon = {0};
|
||||||
if (get_canon_name(system, &canon, make_string(buffer, size))){
|
if (get_canon_name(system, &canon, make_string(buffer, size))){
|
||||||
Editing_File *file = working_set_canon_contains(working_set, canon.name);
|
Editing_File *file = working_set_contains_canon(working_set, canon.name);
|
||||||
if (file != 0){
|
if (file != 0){
|
||||||
if (file->state.ignore_behind_os == 0){
|
if (file->state.ignore_behind_os == 0){
|
||||||
|
|
||||||
|
@ -1732,7 +1728,7 @@ App_Step_Sig(app_step){
|
||||||
cl_filename.size = cl_filename_len;
|
cl_filename.size = cl_filename_len;
|
||||||
|
|
||||||
String filename = {0};
|
String filename = {0};
|
||||||
Editing_File_Canon_Name canon_name;
|
Editing_File_Name canon_name = {0};
|
||||||
if (get_canon_name(system, &canon_name, make_string_slowly(models->settings.init_files[i]))){
|
if (get_canon_name(system, &canon_name, make_string_slowly(models->settings.init_files[i]))){
|
||||||
filename = canon_name.name;
|
filename = canon_name.name;
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,8 +36,8 @@ fill_buffer_summary(Buffer_Summary *buffer, Editing_File *file, Working_Set *wor
|
||||||
buffer->file_name_len = file->canon.name.size;
|
buffer->file_name_len = file->canon.name.size;
|
||||||
buffer->file_name = file->canon.name.str;
|
buffer->file_name = file->canon.name.str;
|
||||||
|
|
||||||
buffer->buffer_name_len = file->name.live_name.size;
|
buffer->buffer_name_len = file->name.name.size;
|
||||||
buffer->buffer_name = file->name.live_name.str;
|
buffer->buffer_name = file->name.name.str;
|
||||||
|
|
||||||
buffer->dirty = file->state.dirty;
|
buffer->dirty = file->state.dirty;
|
||||||
|
|
||||||
|
@ -114,7 +114,7 @@ get_file_from_identifier(System_Functions *system, Working_Set *working_set, Buf
|
||||||
}
|
}
|
||||||
else if (buffer.name){
|
else if (buffer.name){
|
||||||
String name = make_string(buffer.name, buffer.name_len);
|
String name = make_string(buffer.name, buffer.name_len);
|
||||||
file = working_set_name_contains(working_set, name);
|
file = working_set_contains_name(working_set, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
return(file);
|
return(file);
|
||||||
|
@ -276,14 +276,14 @@ DOC_SEE(Command_Line_Interface_Flag)
|
||||||
if (file != 0){
|
if (file != 0){
|
||||||
if (file->settings.read_only == 0){
|
if (file->settings.read_only == 0){
|
||||||
append(&feedback_str, make_lit_string("ERROR: "));
|
append(&feedback_str, make_lit_string("ERROR: "));
|
||||||
append(&feedback_str, file->name.live_name);
|
append(&feedback_str, file->name.name);
|
||||||
append(&feedback_str, make_lit_string(" is not a read-only buffer\n"));
|
append(&feedback_str, make_lit_string(" is not a read-only buffer\n"));
|
||||||
result = false;
|
result = false;
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if (file->settings.never_kill){
|
if (file->settings.never_kill){
|
||||||
append(&feedback_str, make_lit_string("ERROR: The buffer "));
|
append(&feedback_str, make_lit_string("ERROR: The buffer "));
|
||||||
append(&feedback_str, file->name.live_name);
|
append(&feedback_str, file->name.name);
|
||||||
append(&feedback_str, make_lit_string(" is not killable"));
|
append(&feedback_str, make_lit_string(" is not killable"));
|
||||||
result = false;
|
result = false;
|
||||||
goto done;
|
goto done;
|
||||||
|
@ -300,7 +300,7 @@ DOC_SEE(Command_Line_Interface_Flag)
|
||||||
}
|
}
|
||||||
|
|
||||||
String name = make_string_terminated(part, buffer_id.name, buffer_id.name_len);
|
String name = make_string_terminated(part, buffer_id.name, buffer_id.name_len);
|
||||||
buffer_bind_name(general, working_set, file, name);
|
buffer_bind_name(models, general, working_set, file, name);
|
||||||
init_read_only_file(system, models, file);
|
init_read_only_file(system, models, file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -595,7 +595,7 @@ DOC_SEE(Access_Flag)
|
||||||
Buffer_Summary buffer = {0};
|
Buffer_Summary buffer = {0};
|
||||||
Working_Set *working_set = &cmd->models->working_set;
|
Working_Set *working_set = &cmd->models->working_set;
|
||||||
|
|
||||||
Editing_File *file = working_set_name_contains(working_set, make_string(name, len));
|
Editing_File *file = working_set_contains_name(working_set, make_string(name, len));
|
||||||
if (file != 0 && !file->is_dummy){
|
if (file != 0 && !file->is_dummy){
|
||||||
fill_buffer_summary(&buffer, file, working_set);
|
fill_buffer_summary(&buffer, file, working_set);
|
||||||
if (!access_test(buffer.lock_flags, access)){
|
if (!access_test(buffer.lock_flags, access)){
|
||||||
|
@ -628,9 +628,9 @@ DOC_SEE(Access_Flag)
|
||||||
Working_Set *working_set = &models->working_set;
|
Working_Set *working_set = &models->working_set;
|
||||||
|
|
||||||
String fname = make_string(name, len);
|
String fname = make_string(name, len);
|
||||||
Editing_File_Canon_Name canon = {0};
|
Editing_File_Name canon = {0};
|
||||||
if (get_canon_name(system, &canon, fname)){
|
if (get_canon_name(system, &canon, fname)){
|
||||||
Editing_File *file = working_set_canon_contains(working_set, canon.name);
|
Editing_File *file = working_set_contains_canon(working_set, canon.name);
|
||||||
fill_buffer_summary(&buffer, file, working_set);
|
fill_buffer_summary(&buffer, file, working_set);
|
||||||
if (!access_test(buffer.lock_flags, access)){
|
if (!access_test(buffer.lock_flags, access)){
|
||||||
buffer = null_buffer_summary;
|
buffer = null_buffer_summary;
|
||||||
|
@ -1259,9 +1259,9 @@ 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_new_file = false;
|
b32 do_new_file = false;
|
||||||
Editing_File_Canon_Name canon = {0};
|
Editing_File_Name canon = {0};
|
||||||
if (get_canon_name(system, &canon, fname)){
|
if (get_canon_name(system, &canon, fname)){
|
||||||
file = working_set_canon_contains(working_set, canon.name);
|
file = working_set_contains_canon(working_set, canon.name);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
do_new_file = true;
|
do_new_file = true;
|
||||||
|
@ -1269,7 +1269,7 @@ DOC_SEE(Buffer_Create_Flag)
|
||||||
|
|
||||||
// NOTE(allen): Try to get the file by buffer name.
|
// NOTE(allen): Try to get the file by buffer name.
|
||||||
if (file == 0){
|
if (file == 0){
|
||||||
file = working_set_name_contains(working_set, fname);
|
file = working_set_contains_name(working_set, fname);
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE(allen): If there is still no file, create a new buffer.
|
// NOTE(allen): If there is still no file, create a new buffer.
|
||||||
|
@ -1292,7 +1292,7 @@ DOC_SEE(Buffer_Create_Flag)
|
||||||
if (!(flags & BufferCreate_NeverNew)){
|
if (!(flags & BufferCreate_NeverNew)){
|
||||||
file = working_set_alloc_always(working_set, general);
|
file = working_set_alloc_always(working_set, general);
|
||||||
if (file != 0){
|
if (file != 0){
|
||||||
buffer_bind_name(general, working_set, file, fname);
|
buffer_bind_name(models, general, working_set, file, fname);
|
||||||
init_normal_file(system, models, file, 0, 0);
|
init_normal_file(system, models, file, 0, 0);
|
||||||
fill_buffer_summary(&result, file, cmd);
|
fill_buffer_summary(&result, file, cmd);
|
||||||
}
|
}
|
||||||
|
@ -1316,7 +1316,7 @@ DOC_SEE(Buffer_Create_Flag)
|
||||||
file = working_set_alloc_always(working_set, general);
|
file = working_set_alloc_always(working_set, general);
|
||||||
if (file != 0){
|
if (file != 0){
|
||||||
buffer_bind_file(system, general, working_set, file, canon.name);
|
buffer_bind_file(system, general, working_set, file, canon.name);
|
||||||
buffer_bind_name(general, working_set, file, fname);
|
buffer_bind_name(models, general, working_set, file, fname);
|
||||||
init_normal_file(system, models, file, buffer, size);
|
init_normal_file(system, models, file, buffer, size);
|
||||||
fill_buffer_summary(&result, file, cmd);
|
fill_buffer_summary(&result, file, cmd);
|
||||||
}
|
}
|
||||||
|
@ -2827,7 +2827,7 @@ DOC(This call sends a signal to 4coder to attempt to exit. If there are unsaved
|
||||||
}
|
}
|
||||||
|
|
||||||
API_EXPORT void
|
API_EXPORT void
|
||||||
Set_Title(Application_Links *app, char *title)
|
Set_Window_Title(Application_Links *app, char *title)
|
||||||
/*
|
/*
|
||||||
DOC_PARAM(title, A null terminated string indicating the new title for the 4coder window.)
|
DOC_PARAM(title, A null terminated string indicating the new title for the 4coder window.)
|
||||||
DOC(Sets 4coder's window title to the specified title string.)
|
DOC(Sets 4coder's window title to the specified title string.)
|
||||||
|
|
|
@ -67,6 +67,7 @@ struct Models{
|
||||||
Command_Caller_Hook_Function *command_caller;
|
Command_Caller_Hook_Function *command_caller;
|
||||||
Input_Filter_Function *input_filter;
|
Input_Filter_Function *input_filter;
|
||||||
Scroll_Rule_Function *scroll_rule;
|
Scroll_Rule_Function *scroll_rule;
|
||||||
|
Buffer_Name_Resolver_Function *buffer_name_resolver;
|
||||||
|
|
||||||
Style_Library styles;
|
Style_Library styles;
|
||||||
u32 *palette;
|
u32 *palette;
|
||||||
|
|
15
4ed_file.cpp
15
4ed_file.cpp
|
@ -153,21 +153,13 @@ struct Editing_File_State{
|
||||||
global_const Editing_File_State null_editing_file_state = {0};
|
global_const Editing_File_State null_editing_file_state = {0};
|
||||||
|
|
||||||
struct Editing_File_Name{
|
struct Editing_File_Name{
|
||||||
char live_name_[256];
|
|
||||||
//char source_path_[256];
|
|
||||||
char extension_[16];
|
|
||||||
String live_name;
|
|
||||||
//String source_path;
|
|
||||||
String extension;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Editing_File_Canon_Name{
|
|
||||||
char name_[256];
|
char name_[256];
|
||||||
String name;
|
String name;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct File_Node{
|
struct File_Node{
|
||||||
File_Node *next, *prev;
|
File_Node *next;
|
||||||
|
File_Node *prev;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Editing_File{
|
struct Editing_File{
|
||||||
|
@ -179,9 +171,8 @@ struct Editing_File{
|
||||||
Editing_File_State state;
|
Editing_File_State state;
|
||||||
Editing_File_Markers markers;
|
Editing_File_Markers markers;
|
||||||
Editing_File_Name name;
|
Editing_File_Name name;
|
||||||
Editing_File_Canon_Name canon;
|
Editing_File_Name canon;
|
||||||
Buffer_Slot_ID id;
|
Buffer_Slot_ID id;
|
||||||
//u64 unique_buffer_id;
|
|
||||||
};
|
};
|
||||||
static Editing_File null_editing_file = {0};
|
static Editing_File null_editing_file = {0};
|
||||||
|
|
||||||
|
|
|
@ -568,34 +568,6 @@ save_file(System_Functions *system, Models *models, Editing_File *file){
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal b32
|
|
||||||
buffer_link_to_new_file(System_Functions *system, General_Memory *general, Working_Set *working_set,
|
|
||||||
Editing_File *file, String filename){
|
|
||||||
b32 result = 0;
|
|
||||||
|
|
||||||
Editing_File_Canon_Name canon_name;
|
|
||||||
if (get_canon_name(system, &canon_name, filename)){
|
|
||||||
buffer_unbind_name(working_set, file);
|
|
||||||
if (file->canon.name.size != 0){
|
|
||||||
buffer_unbind_file(system, working_set, file);
|
|
||||||
}
|
|
||||||
buffer_bind_file(system, general, working_set, file, canon_name.name);
|
|
||||||
buffer_bind_name(general, working_set, file, filename);
|
|
||||||
result = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline b32
|
|
||||||
file_save_and_set_names(System_Functions *system, Models *models, Editing_File *file, String filename){
|
|
||||||
b32 result = buffer_link_to_new_file(system, &models->mem.general, &models->working_set, file, filename);
|
|
||||||
if (result){
|
|
||||||
result = save_file(system, models, file);
|
|
||||||
}
|
|
||||||
return(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
enum{
|
enum{
|
||||||
GROW_FAILED,
|
GROW_FAILED,
|
||||||
GROW_NOT_NEEDED,
|
GROW_NOT_NEEDED,
|
||||||
|
@ -1757,8 +1729,12 @@ file_measure_wraps_and_fix_cursor(System_Functions *system, Models *models, Edit
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
|
|
||||||
|
enum{
|
||||||
|
FileCreateFlag_ReadOnly = 1,
|
||||||
|
};
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
file_create_from_string(System_Functions *system, Models *models, Editing_File *file, String val, b8 read_only = 0){
|
file_create_from_string(System_Functions *system, Models *models, Editing_File *file, String val, u32 flags){
|
||||||
PRFL_FUNC_GROUP();
|
PRFL_FUNC_GROUP();
|
||||||
|
|
||||||
General_Memory *general = &models->mem.general;
|
General_Memory *general = &models->mem.general;
|
||||||
|
@ -1802,8 +1778,8 @@ file_create_from_string(System_Functions *system, Models *models, Editing_File *
|
||||||
file_measure_wraps(system, models, file, font);
|
file_measure_wraps(system, models, file, font);
|
||||||
}
|
}
|
||||||
|
|
||||||
file->settings.read_only = read_only;
|
file->settings.read_only = ((flags & FileCreateFlag_ReadOnly) != 0);
|
||||||
if (!read_only){
|
if (!file->settings.read_only){
|
||||||
// TODO(allen): Redo undo system (if you don't mind the pun)
|
// TODO(allen): Redo undo system (if you don't mind the pun)
|
||||||
i32 request_size = KB(64);
|
i32 request_size = KB(64);
|
||||||
file->state.undo.undo.max = request_size;
|
file->state.undo.undo.max = request_size;
|
||||||
|
@ -3670,7 +3646,7 @@ init_normal_file(System_Functions *system, Models *models, Editing_File *file, c
|
||||||
PRFL_FUNC_GROUP();
|
PRFL_FUNC_GROUP();
|
||||||
|
|
||||||
String val = make_string(buffer, size);
|
String val = make_string(buffer, size);
|
||||||
file_create_from_string(system, models, file, val);
|
file_create_from_string(system, models, file, val, 0);
|
||||||
|
|
||||||
if (file->settings.tokens_exist && file->state.token_array.tokens == 0){
|
if (file->settings.tokens_exist && file->state.token_array.tokens == 0){
|
||||||
if (!file->settings.virtual_white){
|
if (!file->settings.virtual_white){
|
||||||
|
@ -3685,7 +3661,7 @@ init_normal_file(System_Functions *system, Models *models, Editing_File *file, c
|
||||||
internal void
|
internal void
|
||||||
init_read_only_file(System_Functions *system, Models *models, Editing_File *file){
|
init_read_only_file(System_Functions *system, Models *models, Editing_File *file){
|
||||||
String val = null_string;
|
String val = null_string;
|
||||||
file_create_from_string(system, models, file, val, 1);
|
file_create_from_string(system, models, file, val, FileCreateFlag_ReadOnly);
|
||||||
|
|
||||||
if (file->settings.tokens_exist && file->state.token_array.tokens == 0){
|
if (file->settings.tokens_exist && file->state.token_array.tokens == 0){
|
||||||
if (!file->settings.virtual_white){
|
if (!file->settings.virtual_white){
|
||||||
|
@ -3697,17 +3673,34 @@ init_read_only_file(System_Functions *system, Models *models, Editing_File *file
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal void
|
||||||
|
buffer_bind_name(Models *models, General_Memory *general, Working_Set *working_set, Editing_File *file, String file_name){
|
||||||
|
Editing_File_Name new_name = {0};
|
||||||
|
editing_file_name_init(&new_name);
|
||||||
|
copy(&new_name.name, front_of_directory(file_name));
|
||||||
|
if (models->buffer_name_resolver != 0){
|
||||||
|
models->buffer_name_resolver(&models->app_links, file_name.str, file_name.size, new_name.name.str, &new_name.name.size, new_name.name.memory_size);
|
||||||
|
if (new_name.name.size < 0){
|
||||||
|
new_name.name.size = 0;
|
||||||
|
}
|
||||||
|
if (new_name.name.size > new_name.name.memory_size){
|
||||||
|
new_name.name.size = new_name.name.memory_size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
buffer_bind_name_low_level(general, working_set, file, new_name.name);
|
||||||
|
}
|
||||||
|
|
||||||
internal Editing_File*
|
internal Editing_File*
|
||||||
open_file(System_Functions *system, Models *models, String filename){
|
open_file(System_Functions *system, Models *models, String filename){
|
||||||
Working_Set *working_set = &models->working_set;
|
Working_Set *working_set = &models->working_set;
|
||||||
Editing_File *file = 0;
|
Editing_File *file = 0;
|
||||||
|
|
||||||
if (terminate_with_null(&filename)){
|
if (terminate_with_null(&filename)){
|
||||||
Editing_File_Canon_Name canon_name;
|
Editing_File_Name canon_name = {0};
|
||||||
if (get_canon_name(system, &canon_name, filename)){
|
if (get_canon_name(system, &canon_name, filename)){
|
||||||
file = working_set_canon_contains(working_set, canon_name.name);
|
file = working_set_contains_canon(working_set, canon_name.name);
|
||||||
|
|
||||||
if (!file){
|
if (file == 0){
|
||||||
Plat_Handle handle;
|
Plat_Handle handle;
|
||||||
if (system->load_handle(canon_name.name.str, &handle)){
|
if (system->load_handle(canon_name.name.str, &handle)){
|
||||||
Mem_Options *mem = &models->mem;
|
Mem_Options *mem = &models->mem;
|
||||||
|
@ -3716,7 +3709,7 @@ open_file(System_Functions *system, Models *models, String filename){
|
||||||
file = working_set_alloc_always(working_set, general);
|
file = working_set_alloc_always(working_set, general);
|
||||||
|
|
||||||
buffer_bind_file(system, general, working_set, file, canon_name.name);
|
buffer_bind_file(system, general, working_set, file, canon_name.name);
|
||||||
buffer_bind_name(general, working_set, file, filename);
|
buffer_bind_name(models, general, working_set, file, filename);
|
||||||
|
|
||||||
i32 size = system->load_size(handle);
|
i32 size = system->load_size(handle);
|
||||||
Partition *part = &mem->part;
|
Partition *part = &mem->part;
|
||||||
|
@ -3761,25 +3754,17 @@ view_open_file(System_Functions *system, Models *models, View *view, String file
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
|
||||||
view_interactive_save_as(System_Functions *system, Models *models, Editing_File *file, String filename){
|
|
||||||
if (terminate_with_null(&filename)){
|
|
||||||
file_save_and_set_names(system, models, file, filename);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
view_interactive_new_file(System_Functions *system, Models *models, View *view, String filename){
|
view_interactive_new_file(System_Functions *system, Models *models, View *view, String filename){
|
||||||
Working_Set *working_set = &models->working_set;
|
Working_Set *working_set = &models->working_set;
|
||||||
Editing_File *file = 0;
|
Editing_File *file = 0;
|
||||||
|
|
||||||
if (terminate_with_null(&filename)){
|
if (terminate_with_null(&filename)){
|
||||||
Editing_File_Canon_Name canon_name;
|
Editing_File_Name canon_name = {0};
|
||||||
|
|
||||||
if (get_canon_name(system, &canon_name, filename)){
|
if (get_canon_name(system, &canon_name, filename)){
|
||||||
|
file = working_set_contains_canon(working_set, canon_name.name);
|
||||||
|
|
||||||
file = working_set_canon_contains(working_set, canon_name.name);
|
if (file != 0){
|
||||||
if (file){
|
|
||||||
file_clear(system, models, file);
|
file_clear(system, models, file);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
@ -3789,7 +3774,7 @@ view_interactive_new_file(System_Functions *system, Models *models, View *view,
|
||||||
file = working_set_alloc_always(working_set, general);
|
file = working_set_alloc_always(working_set, general);
|
||||||
|
|
||||||
buffer_bind_file(system, general, working_set, file, canon_name.name);
|
buffer_bind_file(system, general, working_set, file, canon_name.name);
|
||||||
buffer_bind_name(general, working_set, file, filename);
|
buffer_bind_name(models, general, working_set, file, filename);
|
||||||
|
|
||||||
init_normal_file(system, models, file, 0, 0);
|
init_normal_file(system, models, file, 0, 0);
|
||||||
}
|
}
|
||||||
|
@ -3810,7 +3795,7 @@ kill_file(System_Functions *system, Models *models, Editing_File *file){
|
||||||
models->hook_end_file(&models->app_links, file->id.id);
|
models->hook_end_file(&models->app_links, file->id.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer_unbind_name(working_set, file);
|
buffer_unbind_name_low_level(working_set, file);
|
||||||
if (file->canon.name.size != 0){
|
if (file->canon.name.size != 0){
|
||||||
buffer_unbind_file(system, working_set, file);
|
buffer_unbind_file(system, working_set, file);
|
||||||
}
|
}
|
||||||
|
@ -3837,13 +3822,13 @@ kill_file(System_Functions *system, Models *models, Editing_File *file){
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
kill_file_by_name(System_Functions *system, Models *models, String name){
|
kill_file_by_name(System_Functions *system, Models *models, String name){
|
||||||
Editing_File *file = working_set_name_contains(&models->working_set, name);
|
Editing_File *file = working_set_contains_name(&models->working_set, name);
|
||||||
kill_file(system, models, file);
|
kill_file(system, models, file);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
save_file_by_name(System_Functions *system, Models *models, String name){
|
save_file_by_name(System_Functions *system, Models *models, String name){
|
||||||
Editing_File *file = working_set_name_contains(&models->working_set, name);
|
Editing_File *file = working_set_contains_name(&models->working_set, name);
|
||||||
if (file != 0){
|
if (file != 0){
|
||||||
save_file(system, models, file);
|
save_file(system, models, file);
|
||||||
}
|
}
|
||||||
|
@ -3852,7 +3837,7 @@ save_file_by_name(System_Functions *system, Models *models, String name){
|
||||||
internal void
|
internal void
|
||||||
interactive_begin_sure_to_kill(System_Functions *system, View *view, Models *models, Editing_File *file){
|
interactive_begin_sure_to_kill(System_Functions *system, View *view, Models *models, Editing_File *file){
|
||||||
view_show_interactive(system, view, models, IAct_Sure_To_Kill, IInt_Sure_To_Kill, make_lit_string("Are you sure?"));
|
view_show_interactive(system, view, models, IAct_Sure_To_Kill, IInt_Sure_To_Kill, make_lit_string("Are you sure?"));
|
||||||
copy_ss(&view->dest, file->name.live_name);
|
copy_ss(&view->dest, file->name.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
enum Try_Kill_Result{
|
enum Try_Kill_Result{
|
||||||
|
@ -3892,7 +3877,7 @@ internal b32
|
||||||
interactive_try_kill_file_by_name(System_Functions *system, Models *models, View *view, String name){
|
interactive_try_kill_file_by_name(System_Functions *system, Models *models, View *view, String name){
|
||||||
b32 kill_dialogue = 0;
|
b32 kill_dialogue = 0;
|
||||||
|
|
||||||
Editing_File *file = working_set_name_contains(&models->working_set, name);
|
Editing_File *file = working_set_contains_name(&models->working_set, name);
|
||||||
if (file){
|
if (file){
|
||||||
kill_dialogue = interactive_try_kill_file(system, models, view, file);
|
kill_dialogue = interactive_try_kill_file(system, models, view, file);
|
||||||
}
|
}
|
||||||
|
@ -3909,12 +3894,6 @@ interactive_view_complete(System_Functions *system, View *view, Models *models,
|
||||||
view_show_file(view, models);
|
view_show_file(view, models);
|
||||||
}break;
|
}break;
|
||||||
|
|
||||||
case IAct_Save_As:
|
|
||||||
{
|
|
||||||
view_interactive_save_as(system, models, view->file_data.file, dest);
|
|
||||||
view_show_file(view, models);
|
|
||||||
}break;
|
|
||||||
|
|
||||||
case IAct_New:
|
case IAct_New:
|
||||||
if (dest.size > 0 && !char_is_slash(dest.str[dest.size-1])){
|
if (dest.size > 0 && !char_is_slash(dest.str[dest.size-1])){
|
||||||
view_interactive_new_file(system, models, view, dest);
|
view_interactive_new_file(system, models, view, dest);
|
||||||
|
@ -3932,7 +3911,7 @@ interactive_view_complete(System_Functions *system, View *view, Models *models,
|
||||||
|
|
||||||
case IAct_Switch:
|
case IAct_Switch:
|
||||||
{
|
{
|
||||||
Editing_File *file = working_set_name_contains(&models->working_set, dest);
|
Editing_File *file = working_set_contains_name(&models->working_set, dest);
|
||||||
if (file){
|
if (file){
|
||||||
view_set_file(system, view, file, models);
|
view_set_file(system, view, file, models);
|
||||||
}
|
}
|
||||||
|
@ -4112,7 +4091,7 @@ get_exhaustive_info(System_Functions *system, Working_Set *working_set, Exhausti
|
||||||
append_sc(&loop->full_path, result.info->filename);
|
append_sc(&loop->full_path, result.info->filename);
|
||||||
terminate_with_null(&loop->full_path);
|
terminate_with_null(&loop->full_path);
|
||||||
|
|
||||||
Editing_File *file = working_set_canon_contains(working_set, loop->full_path);
|
Editing_File *file = working_set_contains_canon(working_set, loop->full_path);
|
||||||
|
|
||||||
String filename = make_string_cap(result.info->filename, result.info->filename_len, result.info->filename_len+1);
|
String filename = make_string_cap(result.info->filename, result.info->filename_len, result.info->filename_len+1);
|
||||||
|
|
||||||
|
@ -4891,7 +4870,7 @@ step_file_view(System_Functions *system, View *view, Models *models, View *activ
|
||||||
b32 autocomplete_with_enter = true;
|
b32 autocomplete_with_enter = true;
|
||||||
b32 activate_directly = false;
|
b32 activate_directly = false;
|
||||||
|
|
||||||
if (view->action == IAct_Save_As || view->action == IAct_New){
|
if (view->action == IAct_New){
|
||||||
autocomplete_with_enter = false;
|
autocomplete_with_enter = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4899,7 +4878,6 @@ step_file_view(System_Functions *system, View *view, Models *models, View *activ
|
||||||
switch (view->action){
|
switch (view->action){
|
||||||
case IAct_OpenOrNew:
|
case IAct_OpenOrNew:
|
||||||
case IAct_Open: message = make_lit_string("Open: "); break;
|
case IAct_Open: message = make_lit_string("Open: "); break;
|
||||||
case IAct_Save_As: message = make_lit_string("Save As: "); break;
|
|
||||||
case IAct_New: message = make_lit_string("New: "); break;
|
case IAct_New: message = make_lit_string("New: "); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5057,13 +5035,13 @@ step_file_view(System_Functions *system, View *view, Models *models, View *activ
|
||||||
Editing_File *file = (Editing_File*)node;
|
Editing_File *file = (Editing_File*)node;
|
||||||
Assert(!file->is_dummy);
|
Assert(!file->is_dummy);
|
||||||
|
|
||||||
if (wildcard_match_s(&absolutes, file->name.live_name, 0) != 0){
|
if (wildcard_match_s(&absolutes, file->name.name, 0) != 0){
|
||||||
View_Iter iter = file_view_iter_init(layout, file, 0);
|
View_Iter iter = file_view_iter_init(layout, file, 0);
|
||||||
if (file_view_iter_good(iter)){
|
if (file_view_iter_good(iter)){
|
||||||
reserved_files[reserved_top++] = file;
|
reserved_files[reserved_top++] = file;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
if (file->name.live_name.str[0] == '*'){
|
if (file->name.name.str[0] == '*'){
|
||||||
reserved_files[reserved_top++] = file;
|
reserved_files[reserved_top++] = file;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
@ -5076,9 +5054,9 @@ step_file_view(System_Functions *system, View *view, Models *models, View *activ
|
||||||
}
|
}
|
||||||
|
|
||||||
id.id[0] = (u64)(file);
|
id.id[0] = (u64)(file);
|
||||||
if (gui_do_file_option(target, id, file->name.live_name, 0, message)){
|
if (gui_do_file_option(target, id, file->name.name, 0, message)){
|
||||||
complete = 1;
|
complete = 1;
|
||||||
copy_ss(&comp_dest, file->name.live_name);
|
copy_ss(&comp_dest, file->name.name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5097,9 +5075,9 @@ step_file_view(System_Functions *system, View *view, Models *models, View *activ
|
||||||
}
|
}
|
||||||
|
|
||||||
id.id[0] = (u64)(file);
|
id.id[0] = (u64)(file);
|
||||||
if (gui_do_file_option(target, id, file->name.live_name, 0, message)){
|
if (gui_do_file_option(target, id, file->name.name, 0, message)){
|
||||||
complete = 1;
|
complete = 1;
|
||||||
copy_ss(&comp_dest, file->name.live_name);
|
copy_ss(&comp_dest, file->name.name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5411,7 +5389,7 @@ step_file_view(System_Functions *system, View *view, Models *models, View *activ
|
||||||
Editing_File *file = view_ptr->file_data.file;
|
Editing_File *file = view_ptr->file_data.file;
|
||||||
append_ss(&string, make_lit_string(" > buffer: "));
|
append_ss(&string, make_lit_string(" > buffer: "));
|
||||||
if (file){
|
if (file){
|
||||||
append_ss(&string, file->name.live_name);
|
append_ss(&string, file->name.name);
|
||||||
gui_do_text_field(target, string, empty_str);
|
gui_do_text_field(target, string, empty_str);
|
||||||
string.size = 0;
|
string.size = 0;
|
||||||
append_ss(&string, make_lit_string(" >> buffer-slot-id: "));
|
append_ss(&string, make_lit_string(" >> buffer-slot-id: "));
|
||||||
|
@ -6203,7 +6181,7 @@ draw_file_bar(System_Functions *system, Render_Target *target, View *view, Model
|
||||||
|
|
||||||
Assert(file);
|
Assert(file);
|
||||||
|
|
||||||
intbar_draw_string(system, target, &bar, file->name.live_name, base_color);
|
intbar_draw_string(system, target, &bar, file->name.name, base_color);
|
||||||
intbar_draw_string(system, target, &bar, make_lit_string(" -"), base_color);
|
intbar_draw_string(system, target, &bar, make_lit_string(" -"), base_color);
|
||||||
|
|
||||||
if (file->is_loading){
|
if (file->is_loading){
|
||||||
|
|
|
@ -32,7 +32,6 @@ global File_Viewing_Data null_file_viewing_data = {0};
|
||||||
|
|
||||||
enum Interactive_Action{
|
enum Interactive_Action{
|
||||||
IAct_Open,
|
IAct_Open,
|
||||||
IAct_Save_As,
|
|
||||||
IAct_New,
|
IAct_New,
|
||||||
IAct_OpenOrNew,
|
IAct_OpenOrNew,
|
||||||
IAct_Switch,
|
IAct_Switch,
|
||||||
|
|
|
@ -266,9 +266,8 @@ working_set_remove_basic(Working_Set *working_set, Table *table, String name){
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Editing_File*
|
internal Editing_File*
|
||||||
working_set_canon_contains(Working_Set *working_set, String name){
|
working_set_contains_canon(Working_Set *working_set, String name){
|
||||||
Editing_File *result =
|
Editing_File *result = working_set_contains_basic(working_set, &working_set->canon_table, name);
|
||||||
working_set_contains_basic(working_set, &working_set->canon_table, name);
|
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -284,20 +283,19 @@ working_set_canon_remove(Working_Set *working_set, String name){
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Editing_File*
|
internal Editing_File*
|
||||||
working_set_name_contains(Working_Set *working_set, String name){
|
working_set_contains_name(Working_Set *working_set, String name){
|
||||||
Editing_File *result =
|
Editing_File *result = working_set_contains_basic(working_set, &working_set->name_table, name);
|
||||||
working_set_contains_basic(working_set, &working_set->name_table, name);
|
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal b32
|
internal b32
|
||||||
working_set_name_add(General_Memory *general, Working_Set *working_set, Editing_File *file, String name){
|
working_set_add_name(General_Memory *general, Working_Set *working_set, Editing_File *file, String name){
|
||||||
b32 result = working_set_add_basic(general, working_set, &working_set->name_table, file, name);
|
b32 result = working_set_add_basic(general, working_set, &working_set->name_table, file, name);
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
working_set_name_remove(Working_Set *working_set, String name){
|
working_set_remove_name(Working_Set *working_set, String name){
|
||||||
working_set_remove_basic(working_set, &working_set->name_table, name);
|
working_set_remove_basic(working_set, &working_set->name_table, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -313,7 +311,7 @@ working_set_lookup_file(Working_Set *working_set, String string){
|
||||||
used_nodes = &working_set->used_sentinel;
|
used_nodes = &working_set->used_sentinel;
|
||||||
for (dll_items(node, used_nodes)){
|
for (dll_items(node, used_nodes)){
|
||||||
file = (Editing_File*)node;
|
file = (Editing_File*)node;
|
||||||
if (string.size == 0 || match_ss(string, file->name.live_name)){
|
if (string.size == 0 || match_ss(string, file->name.name)){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -325,7 +323,7 @@ working_set_lookup_file(Working_Set *working_set, String string){
|
||||||
used_nodes = &working_set->used_sentinel;
|
used_nodes = &working_set->used_sentinel;
|
||||||
for (dll_items(node, used_nodes)){
|
for (dll_items(node, used_nodes)){
|
||||||
file = (Editing_File*)node;
|
file = (Editing_File*)node;
|
||||||
if (string.size == 0 || has_substr_s(file->name.live_name, string)){
|
if (string.size == 0 || has_substr_s(file->name.name, string)){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -351,13 +349,11 @@ touch_file(Working_Set *working_set, Editing_File *file){
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
editing_file_name_init(Editing_File_Name *name){
|
editing_file_name_init(Editing_File_Name *name){
|
||||||
name->live_name = make_fixed_width_string(name->live_name_);
|
name->name = make_fixed_width_string(name->name_);
|
||||||
//name->source_path = make_fixed_width_string(name->source_path_);
|
|
||||||
name->extension = make_fixed_width_string(name->extension_);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal b32
|
internal b32
|
||||||
get_canon_name(System_Functions *system, Editing_File_Canon_Name *canon_name, String filename){
|
get_canon_name(System_Functions *system, Editing_File_Name *canon_name, String filename){
|
||||||
canon_name->name = make_fixed_width_string(canon_name->name_);
|
canon_name->name = make_fixed_width_string(canon_name->name_);
|
||||||
|
|
||||||
canon_name->name.size = system->get_canonical(filename.str, filename.size, canon_name->name.str, canon_name->name.memory_size);
|
canon_name->name.size = system->get_canonical(filename.str, filename.size, canon_name->name.str, canon_name->name.memory_size);
|
||||||
|
@ -367,64 +363,9 @@ get_canon_name(System_Functions *system, Editing_File_Canon_Name *canon_name, St
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
|
||||||
buffer_get_new_name(Working_Set *working_set, Editing_File_Name *name, String filename){
|
|
||||||
Assert(name->live_name.str != 0);
|
|
||||||
|
|
||||||
//copy_checked_ss(&name->source_path, filename);
|
|
||||||
copy_ss(&name->live_name, front_of_directory(filename));
|
|
||||||
|
|
||||||
String ext = file_extension(filename);
|
|
||||||
copy_ss(&name->extension, ext);
|
|
||||||
#if 0
|
|
||||||
if (name->source_path.size == name->live_name.size){
|
|
||||||
name->extension.size = 0;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
String ext = file_extension(filename);
|
|
||||||
copy_ss(&name->extension, ext);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
{
|
|
||||||
i32 original_len = name->live_name.size;
|
|
||||||
i32 file_x = 0;
|
|
||||||
b32 hit_conflict = 1;
|
|
||||||
while (hit_conflict){
|
|
||||||
hit_conflict = 0;
|
|
||||||
|
|
||||||
File_Node *used_nodes = &working_set->used_sentinel, *node;
|
|
||||||
for (dll_items(node, used_nodes)){
|
|
||||||
Editing_File *file_ptr = (Editing_File*)node;
|
|
||||||
if (file_is_ready(file_ptr)){
|
|
||||||
if (match_ss(name->live_name, file_ptr->name.live_name)){
|
|
||||||
++file_x;
|
|
||||||
hit_conflict = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hit_conflict){
|
|
||||||
name->live_name.size = original_len;
|
|
||||||
append_ss(&name->live_name, make_lit_string(" <"));
|
|
||||||
append_int_to_str(&name->live_name, file_x);
|
|
||||||
append_s_char(&name->live_name, '>');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void
|
|
||||||
buffer_get_new_name(Working_Set *working_set, Editing_File_Name *name, char *filename){
|
|
||||||
String f = make_string_slowly(filename);
|
|
||||||
buffer_get_new_name(working_set, name, f);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
buffer_bind_file(System_Functions *system, General_Memory *general, Working_Set *working_set, Editing_File *file, String canon_filename){
|
buffer_bind_file(System_Functions *system, General_Memory *general, Working_Set *working_set, Editing_File *file, String canon_filename){
|
||||||
Assert(file->name.live_name.size == 0 && file->name.extension.size == 0);
|
Assert(file->name.name.size == 0);
|
||||||
//&& file->name.source_path.size == 0);
|
|
||||||
Assert(file->canon.name.size == 0);
|
Assert(file->canon.name.size == 0);
|
||||||
|
|
||||||
file->canon.name = make_fixed_width_string(file->canon.name_);
|
file->canon.name = make_fixed_width_string(file->canon.name_);
|
||||||
|
@ -437,8 +378,7 @@ buffer_bind_file(System_Functions *system, General_Memory *general, Working_Set
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
buffer_unbind_file(System_Functions *system, Working_Set *working_set, Editing_File *file){
|
buffer_unbind_file(System_Functions *system, Working_Set *working_set, Editing_File *file){
|
||||||
Assert(file->name.live_name.size == 0 && file->name.extension.size == 0);
|
Assert(file->name.name.size == 0);
|
||||||
// && file->name.source_path.size == 0
|
|
||||||
Assert(file->canon.name.size != 0);
|
Assert(file->canon.name.size != 0);
|
||||||
|
|
||||||
system->remove_listener(file->canon.name_);
|
system->remove_listener(file->canon.name_);
|
||||||
|
@ -446,34 +386,62 @@ buffer_unbind_file(System_Functions *system, Working_Set *working_set, Editing_F
|
||||||
file->canon.name.size = 0;
|
file->canon.name.size = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal b32
|
||||||
buffer_bind_name(General_Memory *general, Working_Set *working_set, Editing_File *file, String filename){
|
buffer_name_has_conflict(Working_Set *working_set, String base_name){
|
||||||
Assert(file->name.live_name.size == 0 &&
|
b32 hit_conflict = false;
|
||||||
file->name.extension.size == 0);
|
|
||||||
// && file->name.source_path.size == 0
|
|
||||||
|
|
||||||
Editing_File_Name new_name;
|
File_Node *used_nodes = &working_set->used_sentinel;
|
||||||
|
for (File_Node *node = used_nodes->next; node != used_nodes; node = node->next){
|
||||||
|
Editing_File *file_ptr = (Editing_File*)node;
|
||||||
|
if (file_is_ready(file_ptr) && match_ss(base_name, file_ptr->name.name)){
|
||||||
|
hit_conflict = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return(hit_conflict);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void
|
||||||
|
buffer_resolve_name_low_level(Working_Set *working_set, Editing_File_Name *name, String base_name){
|
||||||
|
Assert(name->name.str != 0);
|
||||||
|
|
||||||
|
copy_ss(&name->name, base_name);
|
||||||
|
|
||||||
|
i32 original_len = name->name.size;
|
||||||
|
i32 file_x = 0;
|
||||||
|
for (b32 hit_conflict = true; hit_conflict;){
|
||||||
|
hit_conflict = buffer_name_has_conflict(working_set, name->name);
|
||||||
|
if (hit_conflict){
|
||||||
|
++file_x;
|
||||||
|
name->name.size = original_len;
|
||||||
|
append_ss(&name->name, make_lit_string(" ##"));
|
||||||
|
append_int_to_str(&name->name, file_x);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void
|
||||||
|
buffer_bind_name_low_level(General_Memory *general, Working_Set *working_set, Editing_File *file, String name){
|
||||||
|
Assert(file->name.name.size == 0);
|
||||||
|
|
||||||
|
Editing_File_Name new_name = {0};
|
||||||
editing_file_name_init(&new_name);
|
editing_file_name_init(&new_name);
|
||||||
buffer_get_new_name(working_set, &new_name, filename);
|
buffer_resolve_name_low_level(working_set, &new_name, name);
|
||||||
|
|
||||||
editing_file_name_init(&file->name);
|
editing_file_name_init(&file->name);
|
||||||
copy_ss(&file->name.live_name, new_name.live_name);
|
copy_ss(&file->name.name, new_name.name);
|
||||||
//copy_ss(&file->name.source_path, new_name.source_path);
|
|
||||||
copy_ss(&file->name.extension, new_name.extension);
|
|
||||||
|
|
||||||
b32 result = working_set_name_add(general, working_set, file, file->name.live_name);
|
b32 result = working_set_add_name(general, working_set, file, file->name.name);
|
||||||
Assert(result); AllowLocal(result);
|
Assert(result); AllowLocal(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
buffer_unbind_name(Working_Set *working_set, Editing_File *file){
|
buffer_unbind_name_low_level(Working_Set *working_set, Editing_File *file){
|
||||||
Assert(file->name.live_name.size != 0);
|
Assert(file->name.name.size != 0);
|
||||||
working_set_name_remove(working_set, file->name.live_name);
|
working_set_remove_name(working_set, file->name.name);
|
||||||
file->name.live_name.size = 0;
|
file->name.name.size = 0;
|
||||||
//file->name.source_path.size = 0;
|
|
||||||
file->name.extension.size = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// BOTTOM
|
// BOTTOM
|
||||||
|
|
||||||
|
|
|
@ -836,6 +836,7 @@ get_bindings(void *data, int32_t size){
|
||||||
set_command_caller(context, default_command_caller);
|
set_command_caller(context, default_command_caller);
|
||||||
|
|
||||||
set_scroll_rule(context, smooth_scroll_rule);
|
set_scroll_rule(context, smooth_scroll_rule);
|
||||||
|
set_buffer_name_resolver(context, default_buffer_name_resolution);
|
||||||
|
|
||||||
default_keys(context);
|
default_keys(context);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue