Command lister, Jump lister, Function lister

master
Allen Webster 2018-09-15 16:48:02 -07:00
parent 4a0f9c316f
commit 2c20e18a8d
17 changed files with 607 additions and 460 deletions

View File

@ -1054,7 +1054,7 @@ CUSTOM_DOC("Deletes the file of the current buffer if 4coder has the appropriate
}
CUSTOM_COMMAND_SIG(save_to_query)
CUSTOM_DOC("Queries the user for a name and saves the contents of the current buffer, altering the buffer's name too.")
CUSTOM_DOC("Queries the user for a file name and saves the contents of the current buffer, altering the buffer's name too.")
{
View_Summary view = get_active_view(app, AccessAll);
Buffer_Summary buffer = get_buffer(app, view.buffer_id, AccessAll);

View File

@ -35,6 +35,7 @@
#include "4coder_search.h"
#include "4coder_build_commands.h"
#include "4coder_jump_sticky.h"
#include "4coder_jump_lister.h"
#include "4coder_project_commands.h"
#include "4coder_function_list.h"
#include "4coder_scope_commands.h"
@ -54,6 +55,7 @@
#include "4coder_jumping.cpp"
#include "4coder_jump_direct.cpp"
#include "4coder_jump_sticky.cpp"
#include "4coder_jump_lister.cpp"
#include "4coder_clipboard.cpp"
#include "4coder_system_command.cpp"
#include "4coder_build_commands.cpp"
@ -61,7 +63,6 @@
#include "4coder_function_list.cpp"
#include "4coder_scope_commands.cpp"
#include "4coder_combined_write_commands.cpp"
#include "4coder_long_command_switch.cpp"
#include "4coder_default_hooks.cpp"
#include "4coder_remapping_commands.cpp"

View File

@ -275,7 +275,7 @@ print_positions(Application_Links *app, Buffer_Summary *buffer, Function_Positio
}
static void
list_all_functions(Application_Links *app, Partition *part, Buffer_Summary *buffer){
list_all_functions(Application_Links *app, Partition *part, Buffer_Summary *optional_target_buffer){
String search_name = make_lit_string("*decls*");
Buffer_Summary decls_buffer = get_buffer_by_name(app, search_name.str, search_name.size, AccessAll);
if (!decls_buffer.exists){
@ -294,17 +294,34 @@ list_all_functions(Application_Links *app, Partition *part, Buffer_Summary *buff
int32_t positions_max = (4<<10)/sizeof(Function_Positions);
Function_Positions *positions_array = push_array(part, Function_Positions, positions_max);
int32_t token_index = 0;
bool32 still_looping = false;
do{
Get_Positions_Results get_positions_results = get_function_positions(app, buffer, token_index, positions_array, positions_max);
for (Buffer_Summary buffer_it = get_buffer_first(app, AccessAll);
buffer_it.exists;
get_buffer_next(app, &buffer_it, AccessAll)){
Buffer_Summary buffer = buffer_it;
if (optional_target_buffer != 0){
buffer = *optional_target_buffer;
}
int32_t positions_count = get_positions_results.positions_count;
token_index = get_positions_results.next_token_index;
still_looping = get_positions_results.still_looping;
if (!buffer.tokens_are_ready){
continue;
}
print_positions(app, buffer, positions_array, positions_count, &decls_buffer, part);
}while(still_looping);
int32_t token_index = 0;
bool32 still_looping = false;
do{
Get_Positions_Results get_positions_results = get_function_positions(app, &buffer, token_index, positions_array, positions_max);
int32_t positions_count = get_positions_results.positions_count;
token_index = get_positions_results.next_token_index;
still_looping = get_positions_results.still_looping;
print_positions(app, &buffer, positions_array, positions_count, &decls_buffer, part);
}while(still_looping);
if (optional_target_buffer != 0){
break;
}
}
View_Summary view = get_active_view(app, AccessAll);
view_set_buffer(app, &view, decls_buffer.buffer_id, 0);
@ -318,10 +335,39 @@ list_all_functions(Application_Links *app, Partition *part, Buffer_Summary *buff
CUSTOM_COMMAND_SIG(list_all_functions_current_buffer)
CUSTOM_DOC("Creates a jump list of lines of the current buffer that appear to define or declare functions.")
{
uint32_t access = AccessProtected;
View_Summary view = get_active_view(app, access);
Buffer_Summary buffer = get_buffer(app, view.buffer_id, access);
list_all_functions(app, &global_part, &buffer);
View_Summary view = get_active_view(app, AccessProtected);
Buffer_Summary buffer = get_buffer(app, view.buffer_id, AccessProtected);
if (buffer.exists){
list_all_functions(app, &global_part, &buffer);
}
}
CUSTOM_COMMAND_SIG(list_all_functions_current_buffer_lister)
CUSTOM_DOC("Creates a lister of locations that look like function definitions and declarations in the buffer.")
{
View_Summary view = get_active_view(app, AccessProtected);
Buffer_Summary buffer = get_buffer(app, view.buffer_id, AccessProtected);
if (buffer.exists){
list_all_functions(app, &global_part, &buffer);
view = get_active_view(app, AccessAll);
open_jump_lister(app, &global_part, &global_heap,
&view, view.buffer_id, JumpListerActivation_OpenInUIView, 0);
}
}
CUSTOM_COMMAND_SIG(list_all_functions_all_buffers)
CUSTOM_DOC("Creates a jump list of lines from all buffers that appear to define or declare functions.")
{
list_all_functions(app, &global_part, 0);
}
CUSTOM_COMMAND_SIG(list_all_functions_all_buffers_lister)
CUSTOM_DOC("Creates a lister of locations that look like function definitions and declarations all buffers.")
{
list_all_functions(app, &global_part, 0);
View_Summary view = get_active_view(app, AccessAll);
open_jump_lister(app, &global_part, &global_heap,
&view, view.buffer_id, JumpListerActivation_OpenInUIView, 0);
}
// BOTTOM

View File

@ -2,7 +2,7 @@
#define command_id(c) (fcoder_metacmd_ID_##c)
#define command_metadata(c) (&fcoder_metacmd_table[command_id(c)])
#define command_metadata_by_id(id) (&fcoder_metacmd_table[id])
#define command_one_past_last_id 202
#define command_one_past_last_id 206
#if defined(CUSTOM_COMMAND_SIG)
#define PROC_LINKS(x,y) x
#else
@ -28,6 +28,7 @@ CUSTOM_COMMAND_SIG(click_set_mark);
CUSTOM_COMMAND_SIG(close_all_code);
CUSTOM_COMMAND_SIG(close_build_panel);
CUSTOM_COMMAND_SIG(close_panel);
CUSTOM_COMMAND_SIG(command_lister);
CUSTOM_COMMAND_SIG(copy);
CUSTOM_COMMAND_SIG(cursor_mark_swap);
CUSTOM_COMMAND_SIG(cut);
@ -43,7 +44,6 @@ CUSTOM_COMMAND_SIG(duplicate_line);
CUSTOM_COMMAND_SIG(eol_dosify);
CUSTOM_COMMAND_SIG(eol_nixify);
CUSTOM_COMMAND_SIG(execute_any_cli);
CUSTOM_COMMAND_SIG(execute_arbitrary_command);
CUSTOM_COMMAND_SIG(execute_previous_cli);
CUSTOM_COMMAND_SIG(exit_4coder);
CUSTOM_COMMAND_SIG(goto_beginning_of_file);
@ -79,7 +79,10 @@ CUSTOM_COMMAND_SIG(interactive_open_or_new);
CUSTOM_COMMAND_SIG(interactive_switch_buffer);
CUSTOM_COMMAND_SIG(kill_buffer);
CUSTOM_COMMAND_SIG(left_adjust_view);
CUSTOM_COMMAND_SIG(list_all_functions_all_buffers);
CUSTOM_COMMAND_SIG(list_all_functions_all_buffers_lister);
CUSTOM_COMMAND_SIG(list_all_functions_current_buffer);
CUSTOM_COMMAND_SIG(list_all_functions_current_buffer_lister);
CUSTOM_COMMAND_SIG(list_all_locations);
CUSTOM_COMMAND_SIG(list_all_locations_case_insensitive);
CUSTOM_COMMAND_SIG(list_all_locations_of_identifier);
@ -202,6 +205,7 @@ CUSTOM_COMMAND_SIG(toggle_show_whitespace);
CUSTOM_COMMAND_SIG(toggle_virtual_whitespace);
CUSTOM_COMMAND_SIG(undo);
CUSTOM_COMMAND_SIG(view_buffer_other_panel);
CUSTOM_COMMAND_SIG(view_jump_list_with_lister);
CUSTOM_COMMAND_SIG(word_complete);
CUSTOM_COMMAND_SIG(write_and_auto_tab);
CUSTOM_COMMAND_SIG(write_block);
@ -222,7 +226,7 @@ char *source_name;
int32_t source_name_len;
int32_t line_number;
};
static Command_Metadata fcoder_metacmd_table[202] = {
static Command_Metadata fcoder_metacmd_table[206] = {
{ PROC_LINKS(allow_mouse, 0), "allow_mouse", 11, "Shows the mouse and causes all mouse input to be processed normally.", 68, "w:\\4ed\\code\\4coder_default_framework.cpp", 40, 240 },
{ PROC_LINKS(auto_tab_line_at_cursor, 0), "auto_tab_line_at_cursor", 23, "Auto-indents the line on which the cursor sits.", 47, "w:\\4ed\\code\\4coder_auto_indent.cpp", 34, 722 },
{ PROC_LINKS(auto_tab_range, 0), "auto_tab_range", 14, "Auto-indents the range between the cursor and the mark.", 55, "w:\\4ed\\code\\4coder_auto_indent.cpp", 34, 733 },
@ -242,6 +246,7 @@ static Command_Metadata fcoder_metacmd_table[202] = {
{ PROC_LINKS(close_all_code, 0), "close_all_code", 14, "Closes any buffer with a filename ending with an extension configured to be recognized as a code file type.", 107, "w:\\4ed\\code\\4coder_project_commands.cpp", 39, 1048 },
{ PROC_LINKS(close_build_panel, 0), "close_build_panel", 17, "If the special build panel is open, closes it.", 46, "w:\\4ed\\code\\4coder_build_commands.cpp", 37, 203 },
{ PROC_LINKS(close_panel, 0), "close_panel", 11, "Closes the currently active panel if it is not the only panel open.", 67, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 447 },
{ PROC_LINKS(command_lister, 0), "command_lister", 14, "Opens an interactive list of all registered commands.", 53, "w:\\4ed\\code\\4coder_lists.cpp", 28, 929 },
{ PROC_LINKS(copy, 0), "copy", 4, "Copy the text in the range from the cursor to the mark onto the clipboard.", 74, "w:\\4ed\\code\\4coder_clipboard.cpp", 32, 26 },
{ PROC_LINKS(cursor_mark_swap, 0), "cursor_mark_swap", 16, "Swaps the position of the cursor and the mark.", 46, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 101 },
{ PROC_LINKS(cut, 0), "cut", 3, "Cut the text in the range from the cursor to the mark onto the clipboard.", 73, "w:\\4ed\\code\\4coder_clipboard.cpp", 32, 35 },
@ -257,27 +262,26 @@ static Command_Metadata fcoder_metacmd_table[202] = {
{ PROC_LINKS(eol_dosify, 0), "eol_dosify", 10, "Puts the buffer in DOS line ending mode.", 40, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 567 },
{ PROC_LINKS(eol_nixify, 0), "eol_nixify", 10, "Puts the buffer in NIX line ending mode.", 40, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 575 },
{ PROC_LINKS(execute_any_cli, 0), "execute_any_cli", 15, "Queries for an output buffer name and system command, runs the system command as a CLI and prints the output to the specified buffer.", 133, "w:\\4ed\\code\\4coder_system_command.cpp", 37, 23 },
{ PROC_LINKS(execute_arbitrary_command, 0), "execute_arbitrary_command", 25, "Execute a 'long form' command.", 30, "w:\\4ed\\code\\4coder_long_command_switch.cpp", 42, 8 },
{ PROC_LINKS(execute_previous_cli, 0), "execute_previous_cli", 20, "If the command execute_any_cli has already been used, this will execute a CLI reusing the most recent buffer name and command.", 126, "w:\\4ed\\code\\4coder_system_command.cpp", 37, 7 },
{ PROC_LINKS(exit_4coder, 0), "exit_4coder", 11, "Attempts to close 4coder.", 25, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 583 },
{ PROC_LINKS(goto_beginning_of_file, 0), "goto_beginning_of_file", 22, "Sets the cursor to the beginning of the file.", 45, "w:\\4ed\\code\\4coder_seek.cpp", 27, 1168 },
{ PROC_LINKS(goto_end_of_file, 0), "goto_end_of_file", 16, "Sets the cursor to the end of the file.", 39, "w:\\4ed\\code\\4coder_seek.cpp", 27, 1175 },
{ PROC_LINKS(goto_first_jump_direct, 0), "goto_first_jump_direct", 22, "If a buffer containing jump locations has been locked in, goes to the first jump in the buffer.", 95, "w:\\4ed\\code\\4coder_jump_direct.cpp", 34, 84 },
{ PROC_LINKS(goto_first_jump_same_panel_sticky, 0), "goto_first_jump_same_panel_sticky", 33, "If a buffer containing jump locations has been locked in, goes to the first jump in the buffer and views the buffer in the panel where the jump list was.", 153, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 520 },
{ PROC_LINKS(goto_first_jump_sticky, 0), "goto_first_jump_sticky", 22, "If a buffer containing jump locations has been locked in, goes to the first jump in the buffer.", 95, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 502 },
{ PROC_LINKS(goto_first_jump_same_panel_sticky, 0), "goto_first_jump_same_panel_sticky", 33, "If a buffer containing jump locations has been locked in, goes to the first jump in the buffer and views the buffer in the panel where the jump list was.", 153, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 524 },
{ PROC_LINKS(goto_first_jump_sticky, 0), "goto_first_jump_sticky", 22, "If a buffer containing jump locations has been locked in, goes to the first jump in the buffer.", 95, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 506 },
{ PROC_LINKS(goto_jump_at_cursor_direct, 0), "goto_jump_at_cursor_direct", 26, "If the cursor is found to be on a jump location, parses the jump location and brings up the file and position in another view and changes the active panel to the view containing the jump.", 187, "w:\\4ed\\code\\4coder_jump_direct.cpp", 34, 8 },
{ PROC_LINKS(goto_jump_at_cursor_same_panel_direct, 0), "goto_jump_at_cursor_same_panel_direct", 37, "If the cursor is found to be on a jump location, parses the jump location and brings up the file and position in this view, losing the compilation output or jump list..", 168, "w:\\4ed\\code\\4coder_jump_direct.cpp", 34, 29 },
{ PROC_LINKS(goto_jump_at_cursor_same_panel_sticky, 0), "goto_jump_at_cursor_same_panel_sticky", 37, "If the cursor is found to be on a jump location, parses the jump location and brings up the file and position in this view, losing the compilation output or jump list.", 167, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 348 },
{ PROC_LINKS(goto_jump_at_cursor_sticky, 0), "goto_jump_at_cursor_sticky", 26, "If the cursor is found to be on a jump location, parses the jump location and brings up the file and position in another view and changes the active panel to the view containing the jump.", 187, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 320 },
{ PROC_LINKS(goto_jump_at_cursor_same_panel_sticky, 0), "goto_jump_at_cursor_same_panel_sticky", 37, "If the cursor is found to be on a jump location, parses the jump location and brings up the file and position in this view, losing the compilation output or jump list.", 167, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 352 },
{ PROC_LINKS(goto_jump_at_cursor_sticky, 0), "goto_jump_at_cursor_sticky", 26, "If the cursor is found to be on a jump location, parses the jump location and brings up the file and position in another view and changes the active panel to the view containing the jump.", 187, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 324 },
{ PROC_LINKS(goto_line, 0), "goto_line", 9, "Queries the user for a number, and jumps the cursor to the corresponding line.", 78, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 591 },
{ PROC_LINKS(goto_next_jump_direct, 0), "goto_next_jump_direct", 21, "If a buffer containing jump locations has been locked in, goes to the next jump in the buffer, skipping sub jump locations.", 123, "w:\\4ed\\code\\4coder_jump_direct.cpp", 34, 48 },
{ PROC_LINKS(goto_next_jump_no_skips_direct, 0), "goto_next_jump_no_skips_direct", 30, "If a buffer containing jump locations has been locked in, goes to the next jump in the buffer, and does not skip sub jump locations.", 132, "w:\\4ed\\code\\4coder_jump_direct.cpp", 34, 66 },
{ PROC_LINKS(goto_next_jump_no_skips_sticky, 0), "goto_next_jump_no_skips_sticky", 30, "If a buffer containing jump locations has been locked in, goes to the next jump in the buffer, and does not skip sub jump locations.", 132, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 471 },
{ PROC_LINKS(goto_next_jump_sticky, 0), "goto_next_jump_sticky", 21, "If a buffer containing jump locations has been locked in, goes to the next jump in the buffer, skipping sub jump locations.", 123, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 441 },
{ PROC_LINKS(goto_next_jump_no_skips_sticky, 0), "goto_next_jump_no_skips_sticky", 30, "If a buffer containing jump locations has been locked in, goes to the next jump in the buffer, and does not skip sub jump locations.", 132, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 475 },
{ PROC_LINKS(goto_next_jump_sticky, 0), "goto_next_jump_sticky", 21, "If a buffer containing jump locations has been locked in, goes to the next jump in the buffer, skipping sub jump locations.", 123, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 445 },
{ PROC_LINKS(goto_prev_jump_direct, 0), "goto_prev_jump_direct", 21, "If a buffer containing jump locations has been locked in, goes to the previous jump in the buffer, skipping sub jump locations.", 127, "w:\\4ed\\code\\4coder_jump_direct.cpp", 34, 57 },
{ PROC_LINKS(goto_prev_jump_no_skips_direct, 0), "goto_prev_jump_no_skips_direct", 30, "If a buffer containing jump locations has been locked in, goes to the previous jump in the buffer, and does not skip sub jump locations.", 136, "w:\\4ed\\code\\4coder_jump_direct.cpp", 34, 75 },
{ PROC_LINKS(goto_prev_jump_no_skips_sticky, 0), "goto_prev_jump_no_skips_sticky", 30, "If a buffer containing jump locations has been locked in, goes to the previous jump in the buffer, and does not skip sub jump locations.", 136, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 487 },
{ PROC_LINKS(goto_prev_jump_sticky, 0), "goto_prev_jump_sticky", 21, "If a buffer containing jump locations has been locked in, goes to the previous jump in the buffer, skipping sub jump locations.", 127, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 457 },
{ PROC_LINKS(goto_prev_jump_no_skips_sticky, 0), "goto_prev_jump_no_skips_sticky", 30, "If a buffer containing jump locations has been locked in, goes to the previous jump in the buffer, and does not skip sub jump locations.", 136, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 491 },
{ PROC_LINKS(goto_prev_jump_sticky, 0), "goto_prev_jump_sticky", 21, "If a buffer containing jump locations has been locked in, goes to the previous jump in the buffer, skipping sub jump locations.", 127, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 461 },
{ PROC_LINKS(hide_filebar, 0), "hide_filebar", 12, "Sets the current view to hide it's filebar.", 43, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 477 },
{ PROC_LINKS(hide_scrollbar, 0), "hide_scrollbar", 14, "Sets the current view to hide it's scrollbar.", 45, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 463 },
{ 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, "w:\\4ed\\code\\4coder_scope_commands.cpp", 37, 363 },
@ -286,14 +290,17 @@ static Command_Metadata fcoder_metacmd_table[202] = {
{ PROC_LINKS(if0_off, 0), "if0_off", 7, "Surround the range between the cursor and mark with an '#if 0' and an '#endif'", 78, "w:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 82 },
{ PROC_LINKS(increase_face_size, 0), "increase_face_size", 18, "Increase the size of the face used by the current buffer.", 57, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 525 },
{ PROC_LINKS(increase_line_wrap, 0), "increase_line_wrap", 18, "Increases the current buffer's width for line wrapping.", 55, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 503 },
{ PROC_LINKS(interactive_kill_buffer, 0), "interactive_kill_buffer", 23, "Interactively kill an open buffer.", 34, "w:\\4ed\\code\\4coder_lists.cpp", 28, 707 },
{ PROC_LINKS(interactive_new, 0), "interactive_new", 15, "Interactively creates a new file.", 33, "w:\\4ed\\code\\4coder_lists.cpp", 28, 809 },
{ PROC_LINKS(interactive_open, 0), "interactive_open", 16, "Interactively opens a file.", 27, "w:\\4ed\\code\\4coder_lists.cpp", 28, 836 },
{ PROC_LINKS(interactive_open_or_new, 0), "interactive_open_or_new", 23, "Interactively open a file out of the file system.", 49, "w:\\4ed\\code\\4coder_lists.cpp", 28, 776 },
{ PROC_LINKS(interactive_switch_buffer, 0), "interactive_switch_buffer", 25, "Interactively switch to an open buffer.", 39, "w:\\4ed\\code\\4coder_lists.cpp", 28, 689 },
{ PROC_LINKS(interactive_kill_buffer, 0), "interactive_kill_buffer", 23, "Interactively kill an open buffer.", 34, "w:\\4ed\\code\\4coder_lists.cpp", 28, 746 },
{ PROC_LINKS(interactive_new, 0), "interactive_new", 15, "Interactively creates a new file.", 33, "w:\\4ed\\code\\4coder_lists.cpp", 28, 848 },
{ PROC_LINKS(interactive_open, 0), "interactive_open", 16, "Interactively opens a file.", 27, "w:\\4ed\\code\\4coder_lists.cpp", 28, 875 },
{ PROC_LINKS(interactive_open_or_new, 0), "interactive_open_or_new", 23, "Interactively open a file out of the file system.", 49, "w:\\4ed\\code\\4coder_lists.cpp", 28, 815 },
{ PROC_LINKS(interactive_switch_buffer, 0), "interactive_switch_buffer", 25, "Interactively switch to an open buffer.", 39, "w:\\4ed\\code\\4coder_lists.cpp", 28, 728 },
{ PROC_LINKS(kill_buffer, 0), "kill_buffer", 11, "Kills the current buffer.", 25, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1450 },
{ PROC_LINKS(left_adjust_view, 0), "left_adjust_view", 16, "Sets the left size of the view near the x position of the cursor.", 65, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 141 },
{ PROC_LINKS(list_all_functions_current_buffer, 0), "list_all_functions_current_buffer", 33, "Creates a jump list of lines of the current buffer that appear to define or declare functions.", 94, "w:\\4ed\\code\\4coder_function_list.cpp", 36, 318 },
{ PROC_LINKS(list_all_functions_all_buffers, 0), "list_all_functions_all_buffers", 30, "Creates a jump list of lines from all buffers that appear to define or declare functions.", 89, "w:\\4ed\\code\\4coder_function_list.cpp", 36, 358 },
{ PROC_LINKS(list_all_functions_all_buffers_lister, 0), "list_all_functions_all_buffers_lister", 37, "Creates a lister of locations that look like function definitions and declarations all buffers.", 95, "w:\\4ed\\code\\4coder_function_list.cpp", 36, 364 },
{ PROC_LINKS(list_all_functions_current_buffer, 0), "list_all_functions_current_buffer", 33, "Creates a jump list of lines of the current buffer that appear to define or declare functions.", 94, "w:\\4ed\\code\\4coder_function_list.cpp", 36, 335 },
{ PROC_LINKS(list_all_functions_current_buffer_lister, 0), "list_all_functions_current_buffer_lister", 40, "Creates a lister of locations that look like function definitions and declarations in the buffer.", 97, "w:\\4ed\\code\\4coder_function_list.cpp", 36, 345 },
{ PROC_LINKS(list_all_locations, 0), "list_all_locations", 18, "Queries the user for a string and lists all exact case-sensitive matches found in all open buffers.", 99, "w:\\4ed\\code\\4coder_search.cpp", 29, 769 },
{ PROC_LINKS(list_all_locations_case_insensitive, 0), "list_all_locations_case_insensitive", 35, "Queries the user for a string and lists all exact case-insensitive matches found in all open buffers.", 101, "w:\\4ed\\code\\4coder_search.cpp", 29, 783 },
{ PROC_LINKS(list_all_locations_of_identifier, 0), "list_all_locations_of_identifier", 32, "Reads a token or word under the cursor and lists all exact case-sensitive mathces in all open buffers.", 102, "w:\\4ed\\code\\4coder_search.cpp", 29, 797 },
@ -334,11 +341,11 @@ static Command_Metadata fcoder_metacmd_table[202] = {
{ PROC_LINKS(move_up_10, 0), "move_up_10", 10, "Moves the cursor up ten lines.", 30, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 262 },
{ PROC_LINKS(newline_or_goto_position_direct, 0), "newline_or_goto_position_direct", 31, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor.", 106, "w:\\4ed\\code\\4coder_jump_direct.cpp", 34, 101 },
{ PROC_LINKS(newline_or_goto_position_same_panel_direct, 0), "newline_or_goto_position_same_panel_direct", 42, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor_same_panel.", 117, "w:\\4ed\\code\\4coder_jump_direct.cpp", 34, 116 },
{ PROC_LINKS(newline_or_goto_position_same_panel_sticky, 0), "newline_or_goto_position_same_panel_sticky", 42, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor_same_panel.", 117, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 558 },
{ PROC_LINKS(newline_or_goto_position_sticky, 0), "newline_or_goto_position_sticky", 31, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor.", 106, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 543 },
{ PROC_LINKS(newline_or_goto_position_same_panel_sticky, 0), "newline_or_goto_position_same_panel_sticky", 42, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor_same_panel.", 117, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 562 },
{ PROC_LINKS(newline_or_goto_position_sticky, 0), "newline_or_goto_position_sticky", 31, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor.", 106, "w:\\4ed\\code\\4coder_jump_sticky.cpp", 34, 547 },
{ PROC_LINKS(open_all_code, 0), "open_all_code", 13, "Open all code in the current directory. File types are determined by extensions. An extension is considered code based on the extensions specified in 4coder.config.", 164, "w:\\4ed\\code\\4coder_project_commands.cpp", 39, 1055 },
{ PROC_LINKS(open_all_code_recursive, 0), "open_all_code_recursive", 23, "Works as open_all_code but also runs in all subdirectories.", 59, "w:\\4ed\\code\\4coder_project_commands.cpp", 39, 1062 },
{ PROC_LINKS(open_color_tweaker, 0), "open_color_tweaker", 18, "Opens the 4coder theme selector list.", 37, "w:\\4ed\\code\\4coder_lists.cpp", 28, 852 },
{ PROC_LINKS(open_color_tweaker, 0), "open_color_tweaker", 18, "Opens the 4coder theme selector list.", 37, "w:\\4ed\\code\\4coder_lists.cpp", 28, 891 },
{ PROC_LINKS(open_file_in_quotes, 0), "open_file_in_quotes", 19, "Reads a filename from surrounding '\"' characters and attempts to open the corresponding file.", 94, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1357 },
{ PROC_LINKS(open_in_other, 0), "open_in_other", 13, "Interactively opens a file in the other panel.", 46, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1508 },
{ PROC_LINKS(open_long_braces, 0), "open_long_braces", 16, "At the cursor, insert a '{' and '}' separated by a blank line.", 62, "w:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 58 },
@ -369,7 +376,7 @@ static Command_Metadata fcoder_metacmd_table[202] = {
{ PROC_LINKS(reverse_search_identifier, 0), "reverse_search_identifier", 25, "Begins an incremental search up through the current buffer for the word or token under the cursor.", 98, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 805 },
{ PROC_LINKS(save, 0), "save", 4, "Saves the current buffer.", 25, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1477 },
{ PROC_LINKS(save_all_dirty_buffers, 0), "save_all_dirty_buffers", 22, "Saves all buffers marked dirty (showing the '*' indicator).", 59, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1000 },
{ PROC_LINKS(save_to_query, 0), "save_to_query", 13, "Queries the user for a name and saves the contents of the current buffer, altering the buffer's name too.", 105, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1056 },
{ PROC_LINKS(save_to_query, 0), "save_to_query", 13, "Queries the user for a file name and saves the contents of the current buffer, altering the buffer's name too.", 110, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1056 },
{ PROC_LINKS(scope_absorb_down, 0), "scope_absorb_down", 17, "If a scope is currently selected, and a statement or block statement is present below the current scope, the statement is moved into the scope.", 143, "w:\\4ed\\code\\4coder_scope_commands.cpp", 37, 738 },
{ PROC_LINKS(search, 0), "search", 6, "Begins an incremental search down through the current buffer for a user specified string.", 89, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 780 },
{ PROC_LINKS(search_identifier, 0), "search_identifier", 17, "Begins an incremental search down through the current buffer for the word or token under the cursor.", 100, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 794 },
@ -416,6 +423,7 @@ static Command_Metadata fcoder_metacmd_table[202] = {
{ PROC_LINKS(toggle_virtual_whitespace, 0), "toggle_virtual_whitespace", 25, "Toggles the current buffer's virtual whitespace status.", 55, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 549 },
{ PROC_LINKS(undo, 0), "undo", 4, "Advances backwards through the undo history.", 44, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1459 },
{ PROC_LINKS(view_buffer_other_panel, 0), "view_buffer_other_panel", 23, "Set the other non-active panel to view the buffer that the active panel views, and switch to that panel.", 104, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1407 },
{ PROC_LINKS(view_jump_list_with_lister, 0), "view_jump_list_with_lister", 26, "When executed on a buffer with jumps, creates a persistent lister for all the jumps", 83, "w:\\4ed\\code\\4coder_jump_lister.cpp", 34, 109 },
{ PROC_LINKS(word_complete, 0), "word_complete", 13, "Iteratively tries completing the word to the left of the cursor with other words in open buffers that have the same prefix string.", 130, "w:\\4ed\\code\\4coder_search.cpp", 29, 856 },
{ PROC_LINKS(write_and_auto_tab, 0), "write_and_auto_tab", 18, "Inserts a character and auto-indents the line on which the cursor sits.", 71, "w:\\4ed\\code\\4coder_auto_indent.cpp", 34, 745 },
{ PROC_LINKS(write_block, 0), "write_block", 11, "At the cursor, insert a block comment.", 38, "w:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 106 },
@ -445,22 +453,22 @@ static int32_t fcoder_metacmd_ID_click_set_mark = 15;
static int32_t fcoder_metacmd_ID_close_all_code = 16;
static int32_t fcoder_metacmd_ID_close_build_panel = 17;
static int32_t fcoder_metacmd_ID_close_panel = 18;
static int32_t fcoder_metacmd_ID_copy = 19;
static int32_t fcoder_metacmd_ID_cursor_mark_swap = 20;
static int32_t fcoder_metacmd_ID_cut = 21;
static int32_t fcoder_metacmd_ID_decrease_face_size = 22;
static int32_t fcoder_metacmd_ID_decrease_line_wrap = 23;
static int32_t fcoder_metacmd_ID_delete_char = 24;
static int32_t fcoder_metacmd_ID_delete_current_scope = 25;
static int32_t fcoder_metacmd_ID_delete_file_query = 26;
static int32_t fcoder_metacmd_ID_delete_line = 27;
static int32_t fcoder_metacmd_ID_delete_range = 28;
static int32_t fcoder_metacmd_ID_delete_word = 29;
static int32_t fcoder_metacmd_ID_duplicate_line = 30;
static int32_t fcoder_metacmd_ID_eol_dosify = 31;
static int32_t fcoder_metacmd_ID_eol_nixify = 32;
static int32_t fcoder_metacmd_ID_execute_any_cli = 33;
static int32_t fcoder_metacmd_ID_execute_arbitrary_command = 34;
static int32_t fcoder_metacmd_ID_command_lister = 19;
static int32_t fcoder_metacmd_ID_copy = 20;
static int32_t fcoder_metacmd_ID_cursor_mark_swap = 21;
static int32_t fcoder_metacmd_ID_cut = 22;
static int32_t fcoder_metacmd_ID_decrease_face_size = 23;
static int32_t fcoder_metacmd_ID_decrease_line_wrap = 24;
static int32_t fcoder_metacmd_ID_delete_char = 25;
static int32_t fcoder_metacmd_ID_delete_current_scope = 26;
static int32_t fcoder_metacmd_ID_delete_file_query = 27;
static int32_t fcoder_metacmd_ID_delete_line = 28;
static int32_t fcoder_metacmd_ID_delete_range = 29;
static int32_t fcoder_metacmd_ID_delete_word = 30;
static int32_t fcoder_metacmd_ID_duplicate_line = 31;
static int32_t fcoder_metacmd_ID_eol_dosify = 32;
static int32_t fcoder_metacmd_ID_eol_nixify = 33;
static int32_t fcoder_metacmd_ID_execute_any_cli = 34;
static int32_t fcoder_metacmd_ID_execute_previous_cli = 35;
static int32_t fcoder_metacmd_ID_exit_4coder = 36;
static int32_t fcoder_metacmd_ID_goto_beginning_of_file = 37;
@ -496,136 +504,140 @@ static int32_t fcoder_metacmd_ID_interactive_open_or_new = 66;
static int32_t fcoder_metacmd_ID_interactive_switch_buffer = 67;
static int32_t fcoder_metacmd_ID_kill_buffer = 68;
static int32_t fcoder_metacmd_ID_left_adjust_view = 69;
static int32_t fcoder_metacmd_ID_list_all_functions_current_buffer = 70;
static int32_t fcoder_metacmd_ID_list_all_locations = 71;
static int32_t fcoder_metacmd_ID_list_all_locations_case_insensitive = 72;
static int32_t fcoder_metacmd_ID_list_all_locations_of_identifier = 73;
static int32_t fcoder_metacmd_ID_list_all_locations_of_identifier_case_insensitive = 74;
static int32_t fcoder_metacmd_ID_list_all_locations_of_selection = 75;
static int32_t fcoder_metacmd_ID_list_all_locations_of_selection_case_insensitive = 76;
static int32_t fcoder_metacmd_ID_list_all_locations_of_type_definition = 77;
static int32_t fcoder_metacmd_ID_list_all_locations_of_type_definition_of_identifier = 78;
static int32_t fcoder_metacmd_ID_list_all_substring_locations = 79;
static int32_t fcoder_metacmd_ID_list_all_substring_locations_case_insensitive = 80;
static int32_t fcoder_metacmd_ID_lister__activate = 81;
static int32_t fcoder_metacmd_ID_lister__backspace_text_field = 82;
static int32_t fcoder_metacmd_ID_lister__backspace_text_field__default = 83;
static int32_t fcoder_metacmd_ID_lister__backspace_text_field__file_path = 84;
static int32_t fcoder_metacmd_ID_lister__mouse_press = 85;
static int32_t fcoder_metacmd_ID_lister__mouse_release = 86;
static int32_t fcoder_metacmd_ID_lister__move_down = 87;
static int32_t fcoder_metacmd_ID_lister__move_down__default = 88;
static int32_t fcoder_metacmd_ID_lister__move_up = 89;
static int32_t fcoder_metacmd_ID_lister__move_up__default = 90;
static int32_t fcoder_metacmd_ID_lister__quit = 91;
static int32_t fcoder_metacmd_ID_lister__repaint = 92;
static int32_t fcoder_metacmd_ID_lister__wheel_scroll = 93;
static int32_t fcoder_metacmd_ID_lister__write_character = 94;
static int32_t fcoder_metacmd_ID_lister__write_character__default = 95;
static int32_t fcoder_metacmd_ID_lister__write_character__file_path = 96;
static int32_t fcoder_metacmd_ID_lister__write_character__fixed_list = 97;
static int32_t fcoder_metacmd_ID_load_project = 98;
static int32_t fcoder_metacmd_ID_make_directory_query = 99;
static int32_t fcoder_metacmd_ID_move_down = 100;
static int32_t fcoder_metacmd_ID_move_down_10 = 101;
static int32_t fcoder_metacmd_ID_move_down_textual = 102;
static int32_t fcoder_metacmd_ID_move_left = 103;
static int32_t fcoder_metacmd_ID_move_line_down = 104;
static int32_t fcoder_metacmd_ID_move_line_up = 105;
static int32_t fcoder_metacmd_ID_move_right = 106;
static int32_t fcoder_metacmd_ID_move_up = 107;
static int32_t fcoder_metacmd_ID_move_up_10 = 108;
static int32_t fcoder_metacmd_ID_newline_or_goto_position_direct = 109;
static int32_t fcoder_metacmd_ID_newline_or_goto_position_same_panel_direct = 110;
static int32_t fcoder_metacmd_ID_newline_or_goto_position_same_panel_sticky = 111;
static int32_t fcoder_metacmd_ID_newline_or_goto_position_sticky = 112;
static int32_t fcoder_metacmd_ID_open_all_code = 113;
static int32_t fcoder_metacmd_ID_open_all_code_recursive = 114;
static int32_t fcoder_metacmd_ID_open_color_tweaker = 115;
static int32_t fcoder_metacmd_ID_open_file_in_quotes = 116;
static int32_t fcoder_metacmd_ID_open_in_other = 117;
static int32_t fcoder_metacmd_ID_open_long_braces = 118;
static int32_t fcoder_metacmd_ID_open_long_braces_break = 119;
static int32_t fcoder_metacmd_ID_open_long_braces_semicolon = 120;
static int32_t fcoder_metacmd_ID_open_matching_file_cpp = 121;
static int32_t fcoder_metacmd_ID_open_panel_hsplit = 122;
static int32_t fcoder_metacmd_ID_open_panel_vsplit = 123;
static int32_t fcoder_metacmd_ID_page_down = 124;
static int32_t fcoder_metacmd_ID_page_up = 125;
static int32_t fcoder_metacmd_ID_paste = 126;
static int32_t fcoder_metacmd_ID_paste_and_indent = 127;
static int32_t fcoder_metacmd_ID_paste_next = 128;
static int32_t fcoder_metacmd_ID_paste_next_and_indent = 129;
static int32_t fcoder_metacmd_ID_place_in_scope = 130;
static int32_t fcoder_metacmd_ID_project_fkey_command = 131;
static int32_t fcoder_metacmd_ID_project_go_to_root_directory = 132;
static int32_t fcoder_metacmd_ID_query_replace = 133;
static int32_t fcoder_metacmd_ID_query_replace_identifier = 134;
static int32_t fcoder_metacmd_ID_query_replace_selection = 135;
static int32_t fcoder_metacmd_ID_redo = 136;
static int32_t fcoder_metacmd_ID_reload_themes = 137;
static int32_t fcoder_metacmd_ID_remap_interactive = 138;
static int32_t fcoder_metacmd_ID_rename_file_query = 139;
static int32_t fcoder_metacmd_ID_reopen = 140;
static int32_t fcoder_metacmd_ID_replace_in_range = 141;
static int32_t fcoder_metacmd_ID_reverse_search = 142;
static int32_t fcoder_metacmd_ID_reverse_search_identifier = 143;
static int32_t fcoder_metacmd_ID_save = 144;
static int32_t fcoder_metacmd_ID_save_all_dirty_buffers = 145;
static int32_t fcoder_metacmd_ID_save_to_query = 146;
static int32_t fcoder_metacmd_ID_scope_absorb_down = 147;
static int32_t fcoder_metacmd_ID_search = 148;
static int32_t fcoder_metacmd_ID_search_identifier = 149;
static int32_t fcoder_metacmd_ID_seek_alphanumeric_left = 150;
static int32_t fcoder_metacmd_ID_seek_alphanumeric_or_camel_left = 151;
static int32_t fcoder_metacmd_ID_seek_alphanumeric_or_camel_right = 152;
static int32_t fcoder_metacmd_ID_seek_alphanumeric_right = 153;
static int32_t fcoder_metacmd_ID_seek_beginning_of_line = 154;
static int32_t fcoder_metacmd_ID_seek_beginning_of_textual_line = 155;
static int32_t fcoder_metacmd_ID_seek_end_of_line = 156;
static int32_t fcoder_metacmd_ID_seek_end_of_textual_line = 157;
static int32_t fcoder_metacmd_ID_seek_token_left = 158;
static int32_t fcoder_metacmd_ID_seek_token_right = 159;
static int32_t fcoder_metacmd_ID_seek_white_or_token_left = 160;
static int32_t fcoder_metacmd_ID_seek_white_or_token_right = 161;
static int32_t fcoder_metacmd_ID_seek_whitespace_down = 162;
static int32_t fcoder_metacmd_ID_seek_whitespace_down_end_line = 163;
static int32_t fcoder_metacmd_ID_seek_whitespace_left = 164;
static int32_t fcoder_metacmd_ID_seek_whitespace_right = 165;
static int32_t fcoder_metacmd_ID_seek_whitespace_up = 166;
static int32_t fcoder_metacmd_ID_seek_whitespace_up_end_line = 167;
static int32_t fcoder_metacmd_ID_select_all = 168;
static int32_t fcoder_metacmd_ID_set_bindings_choose = 169;
static int32_t fcoder_metacmd_ID_set_bindings_default = 170;
static int32_t fcoder_metacmd_ID_set_bindings_mac_default = 171;
static int32_t fcoder_metacmd_ID_set_mark = 172;
static int32_t fcoder_metacmd_ID_setup_build_bat = 173;
static int32_t fcoder_metacmd_ID_setup_build_bat_and_sh = 174;
static int32_t fcoder_metacmd_ID_setup_build_sh = 175;
static int32_t fcoder_metacmd_ID_setup_new_project = 176;
static int32_t fcoder_metacmd_ID_show_filebar = 177;
static int32_t fcoder_metacmd_ID_show_scrollbar = 178;
static int32_t fcoder_metacmd_ID_snipe_token_or_word = 179;
static int32_t fcoder_metacmd_ID_snipe_token_or_word_right = 180;
static int32_t fcoder_metacmd_ID_suppress_mouse = 181;
static int32_t fcoder_metacmd_ID_swap_buffers_between_panels = 182;
static int32_t fcoder_metacmd_ID_to_lowercase = 183;
static int32_t fcoder_metacmd_ID_to_uppercase = 184;
static int32_t fcoder_metacmd_ID_toggle_filebar = 185;
static int32_t fcoder_metacmd_ID_toggle_fullscreen = 186;
static int32_t fcoder_metacmd_ID_toggle_line_wrap = 187;
static int32_t fcoder_metacmd_ID_toggle_mouse = 188;
static int32_t fcoder_metacmd_ID_toggle_show_whitespace = 189;
static int32_t fcoder_metacmd_ID_toggle_virtual_whitespace = 190;
static int32_t fcoder_metacmd_ID_undo = 191;
static int32_t fcoder_metacmd_ID_view_buffer_other_panel = 192;
static int32_t fcoder_metacmd_ID_word_complete = 193;
static int32_t fcoder_metacmd_ID_write_and_auto_tab = 194;
static int32_t fcoder_metacmd_ID_write_block = 195;
static int32_t fcoder_metacmd_ID_write_character = 196;
static int32_t fcoder_metacmd_ID_write_hack = 197;
static int32_t fcoder_metacmd_ID_write_note = 198;
static int32_t fcoder_metacmd_ID_write_todo = 199;
static int32_t fcoder_metacmd_ID_write_underscore = 200;
static int32_t fcoder_metacmd_ID_write_zero_struct = 201;
static int32_t fcoder_metacmd_ID_list_all_functions_all_buffers = 70;
static int32_t fcoder_metacmd_ID_list_all_functions_all_buffers_lister = 71;
static int32_t fcoder_metacmd_ID_list_all_functions_current_buffer = 72;
static int32_t fcoder_metacmd_ID_list_all_functions_current_buffer_lister = 73;
static int32_t fcoder_metacmd_ID_list_all_locations = 74;
static int32_t fcoder_metacmd_ID_list_all_locations_case_insensitive = 75;
static int32_t fcoder_metacmd_ID_list_all_locations_of_identifier = 76;
static int32_t fcoder_metacmd_ID_list_all_locations_of_identifier_case_insensitive = 77;
static int32_t fcoder_metacmd_ID_list_all_locations_of_selection = 78;
static int32_t fcoder_metacmd_ID_list_all_locations_of_selection_case_insensitive = 79;
static int32_t fcoder_metacmd_ID_list_all_locations_of_type_definition = 80;
static int32_t fcoder_metacmd_ID_list_all_locations_of_type_definition_of_identifier = 81;
static int32_t fcoder_metacmd_ID_list_all_substring_locations = 82;
static int32_t fcoder_metacmd_ID_list_all_substring_locations_case_insensitive = 83;
static int32_t fcoder_metacmd_ID_lister__activate = 84;
static int32_t fcoder_metacmd_ID_lister__backspace_text_field = 85;
static int32_t fcoder_metacmd_ID_lister__backspace_text_field__default = 86;
static int32_t fcoder_metacmd_ID_lister__backspace_text_field__file_path = 87;
static int32_t fcoder_metacmd_ID_lister__mouse_press = 88;
static int32_t fcoder_metacmd_ID_lister__mouse_release = 89;
static int32_t fcoder_metacmd_ID_lister__move_down = 90;
static int32_t fcoder_metacmd_ID_lister__move_down__default = 91;
static int32_t fcoder_metacmd_ID_lister__move_up = 92;
static int32_t fcoder_metacmd_ID_lister__move_up__default = 93;
static int32_t fcoder_metacmd_ID_lister__quit = 94;
static int32_t fcoder_metacmd_ID_lister__repaint = 95;
static int32_t fcoder_metacmd_ID_lister__wheel_scroll = 96;
static int32_t fcoder_metacmd_ID_lister__write_character = 97;
static int32_t fcoder_metacmd_ID_lister__write_character__default = 98;
static int32_t fcoder_metacmd_ID_lister__write_character__file_path = 99;
static int32_t fcoder_metacmd_ID_lister__write_character__fixed_list = 100;
static int32_t fcoder_metacmd_ID_load_project = 101;
static int32_t fcoder_metacmd_ID_make_directory_query = 102;
static int32_t fcoder_metacmd_ID_move_down = 103;
static int32_t fcoder_metacmd_ID_move_down_10 = 104;
static int32_t fcoder_metacmd_ID_move_down_textual = 105;
static int32_t fcoder_metacmd_ID_move_left = 106;
static int32_t fcoder_metacmd_ID_move_line_down = 107;
static int32_t fcoder_metacmd_ID_move_line_up = 108;
static int32_t fcoder_metacmd_ID_move_right = 109;
static int32_t fcoder_metacmd_ID_move_up = 110;
static int32_t fcoder_metacmd_ID_move_up_10 = 111;
static int32_t fcoder_metacmd_ID_newline_or_goto_position_direct = 112;
static int32_t fcoder_metacmd_ID_newline_or_goto_position_same_panel_direct = 113;
static int32_t fcoder_metacmd_ID_newline_or_goto_position_same_panel_sticky = 114;
static int32_t fcoder_metacmd_ID_newline_or_goto_position_sticky = 115;
static int32_t fcoder_metacmd_ID_open_all_code = 116;
static int32_t fcoder_metacmd_ID_open_all_code_recursive = 117;
static int32_t fcoder_metacmd_ID_open_color_tweaker = 118;
static int32_t fcoder_metacmd_ID_open_file_in_quotes = 119;
static int32_t fcoder_metacmd_ID_open_in_other = 120;
static int32_t fcoder_metacmd_ID_open_long_braces = 121;
static int32_t fcoder_metacmd_ID_open_long_braces_break = 122;
static int32_t fcoder_metacmd_ID_open_long_braces_semicolon = 123;
static int32_t fcoder_metacmd_ID_open_matching_file_cpp = 124;
static int32_t fcoder_metacmd_ID_open_panel_hsplit = 125;
static int32_t fcoder_metacmd_ID_open_panel_vsplit = 126;
static int32_t fcoder_metacmd_ID_page_down = 127;
static int32_t fcoder_metacmd_ID_page_up = 128;
static int32_t fcoder_metacmd_ID_paste = 129;
static int32_t fcoder_metacmd_ID_paste_and_indent = 130;
static int32_t fcoder_metacmd_ID_paste_next = 131;
static int32_t fcoder_metacmd_ID_paste_next_and_indent = 132;
static int32_t fcoder_metacmd_ID_place_in_scope = 133;
static int32_t fcoder_metacmd_ID_project_fkey_command = 134;
static int32_t fcoder_metacmd_ID_project_go_to_root_directory = 135;
static int32_t fcoder_metacmd_ID_query_replace = 136;
static int32_t fcoder_metacmd_ID_query_replace_identifier = 137;
static int32_t fcoder_metacmd_ID_query_replace_selection = 138;
static int32_t fcoder_metacmd_ID_redo = 139;
static int32_t fcoder_metacmd_ID_reload_themes = 140;
static int32_t fcoder_metacmd_ID_remap_interactive = 141;
static int32_t fcoder_metacmd_ID_rename_file_query = 142;
static int32_t fcoder_metacmd_ID_reopen = 143;
static int32_t fcoder_metacmd_ID_replace_in_range = 144;
static int32_t fcoder_metacmd_ID_reverse_search = 145;
static int32_t fcoder_metacmd_ID_reverse_search_identifier = 146;
static int32_t fcoder_metacmd_ID_save = 147;
static int32_t fcoder_metacmd_ID_save_all_dirty_buffers = 148;
static int32_t fcoder_metacmd_ID_save_to_query = 149;
static int32_t fcoder_metacmd_ID_scope_absorb_down = 150;
static int32_t fcoder_metacmd_ID_search = 151;
static int32_t fcoder_metacmd_ID_search_identifier = 152;
static int32_t fcoder_metacmd_ID_seek_alphanumeric_left = 153;
static int32_t fcoder_metacmd_ID_seek_alphanumeric_or_camel_left = 154;
static int32_t fcoder_metacmd_ID_seek_alphanumeric_or_camel_right = 155;
static int32_t fcoder_metacmd_ID_seek_alphanumeric_right = 156;
static int32_t fcoder_metacmd_ID_seek_beginning_of_line = 157;
static int32_t fcoder_metacmd_ID_seek_beginning_of_textual_line = 158;
static int32_t fcoder_metacmd_ID_seek_end_of_line = 159;
static int32_t fcoder_metacmd_ID_seek_end_of_textual_line = 160;
static int32_t fcoder_metacmd_ID_seek_token_left = 161;
static int32_t fcoder_metacmd_ID_seek_token_right = 162;
static int32_t fcoder_metacmd_ID_seek_white_or_token_left = 163;
static int32_t fcoder_metacmd_ID_seek_white_or_token_right = 164;
static int32_t fcoder_metacmd_ID_seek_whitespace_down = 165;
static int32_t fcoder_metacmd_ID_seek_whitespace_down_end_line = 166;
static int32_t fcoder_metacmd_ID_seek_whitespace_left = 167;
static int32_t fcoder_metacmd_ID_seek_whitespace_right = 168;
static int32_t fcoder_metacmd_ID_seek_whitespace_up = 169;
static int32_t fcoder_metacmd_ID_seek_whitespace_up_end_line = 170;
static int32_t fcoder_metacmd_ID_select_all = 171;
static int32_t fcoder_metacmd_ID_set_bindings_choose = 172;
static int32_t fcoder_metacmd_ID_set_bindings_default = 173;
static int32_t fcoder_metacmd_ID_set_bindings_mac_default = 174;
static int32_t fcoder_metacmd_ID_set_mark = 175;
static int32_t fcoder_metacmd_ID_setup_build_bat = 176;
static int32_t fcoder_metacmd_ID_setup_build_bat_and_sh = 177;
static int32_t fcoder_metacmd_ID_setup_build_sh = 178;
static int32_t fcoder_metacmd_ID_setup_new_project = 179;
static int32_t fcoder_metacmd_ID_show_filebar = 180;
static int32_t fcoder_metacmd_ID_show_scrollbar = 181;
static int32_t fcoder_metacmd_ID_snipe_token_or_word = 182;
static int32_t fcoder_metacmd_ID_snipe_token_or_word_right = 183;
static int32_t fcoder_metacmd_ID_suppress_mouse = 184;
static int32_t fcoder_metacmd_ID_swap_buffers_between_panels = 185;
static int32_t fcoder_metacmd_ID_to_lowercase = 186;
static int32_t fcoder_metacmd_ID_to_uppercase = 187;
static int32_t fcoder_metacmd_ID_toggle_filebar = 188;
static int32_t fcoder_metacmd_ID_toggle_fullscreen = 189;
static int32_t fcoder_metacmd_ID_toggle_line_wrap = 190;
static int32_t fcoder_metacmd_ID_toggle_mouse = 191;
static int32_t fcoder_metacmd_ID_toggle_show_whitespace = 192;
static int32_t fcoder_metacmd_ID_toggle_virtual_whitespace = 193;
static int32_t fcoder_metacmd_ID_undo = 194;
static int32_t fcoder_metacmd_ID_view_buffer_other_panel = 195;
static int32_t fcoder_metacmd_ID_view_jump_list_with_lister = 196;
static int32_t fcoder_metacmd_ID_word_complete = 197;
static int32_t fcoder_metacmd_ID_write_and_auto_tab = 198;
static int32_t fcoder_metacmd_ID_write_block = 199;
static int32_t fcoder_metacmd_ID_write_character = 200;
static int32_t fcoder_metacmd_ID_write_hack = 201;
static int32_t fcoder_metacmd_ID_write_note = 202;
static int32_t fcoder_metacmd_ID_write_todo = 203;
static int32_t fcoder_metacmd_ID_write_underscore = 204;
static int32_t fcoder_metacmd_ID_write_zero_struct = 205;
#endif

View File

@ -1,9 +1,6 @@
#if defined(CUSTOM_COMMAND_SIG)
void fill_keys_default(Bind_Helper *context){
begin_map(context, mapid_global);
bind(context, 'p', MDFR_CTRL, open_panel_vsplit);
bind(context, '_', MDFR_CTRL, open_panel_hsplit);
bind(context, 'P', MDFR_CTRL, close_panel);
bind(context, ',', MDFR_CTRL, change_active_panel);
bind(context, '<', MDFR_CTRL, change_active_panel_backwards);
bind(context, 'n', MDFR_CTRL, interactive_new);
@ -13,7 +10,6 @@ bind(context, 'k', MDFR_CTRL, interactive_kill_buffer);
bind(context, 'i', MDFR_CTRL, interactive_switch_buffer);
bind(context, 'h', MDFR_CTRL, project_go_to_root_directory);
bind(context, 'S', MDFR_CTRL, save_all_dirty_buffers);
bind(context, 'c', MDFR_ALT, open_color_tweaker);
bind(context, '.', MDFR_ALT, change_to_build_panel);
bind(context, ',', MDFR_ALT, close_build_panel);
bind(context, 'n', MDFR_ALT, goto_next_jump_no_skips_sticky);
@ -22,14 +18,9 @@ bind(context, 'M', MDFR_ALT, goto_first_jump_sticky);
bind(context, 'm', MDFR_ALT, build_in_build_panel);
bind(context, 'z', MDFR_ALT, execute_any_cli);
bind(context, 'Z', MDFR_ALT, execute_previous_cli);
bind(context, 'x', MDFR_ALT, execute_arbitrary_command);
bind(context, 'W', MDFR_ALT, show_scrollbar);
bind(context, 'w', MDFR_ALT, hide_scrollbar);
bind(context, 'b', MDFR_ALT, toggle_filebar);
bind(context, '@', MDFR_ALT, toggle_mouse);
bind(context, 'x', MDFR_ALT, command_lister);
bind(context, 'I', MDFR_CTRL, list_all_functions_all_buffers_lister);
bind(context, 'E', MDFR_ALT, exit_4coder);
bind(context, '+', MDFR_CTRL, increase_face_size);
bind(context, '-', MDFR_CTRL, decrease_face_size);
bind(context, key_f1, MDFR_NONE, project_fkey_command);
bind(context, key_f2, MDFR_NONE, project_fkey_command);
bind(context, key_f3, MDFR_NONE, project_fkey_command);
@ -89,7 +80,6 @@ bind(context, 'F', MDFR_ALT, list_all_substring_locations_case_insensitive);
bind(context, 'g', MDFR_CTRL, goto_line);
bind(context, 'G', MDFR_CTRL, list_all_locations_of_selection);
bind(context, 'K', MDFR_CTRL, kill_buffer);
bind(context, 'l', MDFR_CTRL, toggle_line_wrap);
bind(context, 'L', MDFR_CTRL, duplicate_line);
bind(context, 'm', MDFR_CTRL, cursor_mark_swap);
bind(context, 'O', MDFR_CTRL, reopen);
@ -98,21 +88,18 @@ bind(context, 'Q', MDFR_CTRL, query_replace_identifier);
bind(context, 'q', MDFR_ALT, query_replace_selection);
bind(context, 'r', MDFR_CTRL, reverse_search);
bind(context, 's', MDFR_CTRL, save);
bind(context, 's', MDFR_ALT, save_to_query);
bind(context, 't', MDFR_CTRL, search_identifier);
bind(context, 'T', MDFR_CTRL, list_all_locations_of_identifier);
bind(context, 'v', MDFR_CTRL, paste_and_indent);
bind(context, 'v', MDFR_ALT, toggle_virtual_whitespace);
bind(context, 'V', MDFR_CTRL, paste_next_and_indent);
bind(context, 'x', MDFR_CTRL, cut);
bind(context, 'y', MDFR_CTRL, redo);
bind(context, 'z', MDFR_CTRL, undo);
bind(context, '1', MDFR_CTRL, view_buffer_other_panel);
bind(context, '2', MDFR_CTRL, swap_buffers_between_panels);
bind(context, '?', MDFR_CTRL, toggle_show_whitespace);
bind(context, '~', MDFR_CTRL, clean_all_lines);
bind(context, '\n', MDFR_NONE, newline_or_goto_position_sticky);
bind(context, '\n', MDFR_SHIFT, newline_or_goto_position_same_panel_sticky);
bind(context, '>', MDFR_CTRL, view_jump_list_with_lister);
bind(context, ' ', MDFR_SHIFT, write_character);
end_map(context);
begin_map(context, default_code_map);
@ -148,7 +135,6 @@ bind(context, 'i', MDFR_ALT, if0_off);
bind(context, '1', MDFR_ALT, open_file_in_quotes);
bind(context, '2', MDFR_ALT, open_matching_file_cpp);
bind(context, '0', MDFR_CTRL, write_zero_struct);
bind(context, 'I', MDFR_CTRL, list_all_functions_current_buffer);
end_map(context);
begin_map(context, default_lister_ui_map);
bind_vanilla_keys(context, lister__write_character);
@ -169,9 +155,6 @@ end_map(context);
}
void fill_keys_mac_default(Bind_Helper *context){
begin_map(context, mapid_global);
bind(context, 'p', MDFR_CMND, open_panel_vsplit);
bind(context, '_', MDFR_CMND, open_panel_hsplit);
bind(context, 'P', MDFR_CMND, close_panel);
bind(context, ',', MDFR_CMND, change_active_panel);
bind(context, '<', MDFR_CMND, change_active_panel_backwards);
bind(context, 'n', MDFR_CMND, interactive_new);
@ -181,7 +164,6 @@ bind(context, 'k', MDFR_CMND, interactive_kill_buffer);
bind(context, 'i', MDFR_CMND, interactive_switch_buffer);
bind(context, 'h', MDFR_CMND, project_go_to_root_directory);
bind(context, 'S', MDFR_CMND, save_all_dirty_buffers);
bind(context, 'c', MDFR_CTRL, open_color_tweaker);
bind(context, '.', MDFR_CTRL, change_to_build_panel);
bind(context, ',', MDFR_CTRL, close_build_panel);
bind(context, 'n', MDFR_CTRL, goto_next_jump_sticky);
@ -190,14 +172,9 @@ bind(context, 'M', MDFR_CTRL, goto_first_jump_sticky);
bind(context, 'm', MDFR_CTRL, build_in_build_panel);
bind(context, 'z', MDFR_CTRL, execute_any_cli);
bind(context, 'Z', MDFR_CTRL, execute_previous_cli);
bind(context, 'x', MDFR_CTRL, execute_arbitrary_command);
bind(context, 'W', MDFR_CTRL, show_scrollbar);
bind(context, 'w', MDFR_CTRL, hide_scrollbar);
bind(context, 'b', MDFR_CTRL, toggle_filebar);
bind(context, '@', MDFR_CTRL, toggle_mouse);
bind(context, 'x', MDFR_CTRL, command_lister);
bind(context, 'I', MDFR_CMND, list_all_functions_all_buffers_lister);
bind(context, 'E', MDFR_CTRL, exit_4coder);
bind(context, '+', MDFR_CTRL, increase_face_size);
bind(context, '-', MDFR_CTRL, decrease_face_size);
bind(context, key_f1, MDFR_NONE, project_fkey_command);
bind(context, key_f2, MDFR_NONE, project_fkey_command);
bind(context, key_f3, MDFR_NONE, project_fkey_command);
@ -239,6 +216,8 @@ bind(context, key_right, MDFR_CMND, seek_whitespace_right);
bind(context, key_left, MDFR_CMND, seek_whitespace_left);
bind(context, key_up, MDFR_CMND, seek_whitespace_up_end_line);
bind(context, key_down, MDFR_CMND, seek_whitespace_down_end_line);
bind(context, key_up, MDFR_ALT, move_line_up);
bind(context, key_down, MDFR_ALT, move_line_down);
bind(context, key_back, MDFR_CMND, backspace_word);
bind(context, key_del, MDFR_CMND, delete_word);
bind(context, key_back, MDFR_CTRL, snipe_token_or_word);
@ -256,7 +235,6 @@ bind(context, 'F', MDFR_CTRL, list_all_substring_locations_case_insensitive);
bind(context, 'g', MDFR_CMND, goto_line);
bind(context, 'G', MDFR_CMND, list_all_locations_of_selection);
bind(context, 'K', MDFR_CMND, kill_buffer);
bind(context, 'l', MDFR_CMND, toggle_line_wrap);
bind(context, 'L', MDFR_CMND, duplicate_line);
bind(context, 'm', MDFR_CMND, cursor_mark_swap);
bind(context, 'O', MDFR_CMND, reopen);
@ -264,21 +242,18 @@ bind(context, 'q', MDFR_CMND, query_replace);
bind(context, 'Q', MDFR_CMND, query_replace_identifier);
bind(context, 'r', MDFR_CMND, reverse_search);
bind(context, 's', MDFR_CMND, save);
bind(context, 's', MDFR_CTRL, save_to_query);
bind(context, 't', MDFR_CMND, search_identifier);
bind(context, 'T', MDFR_CMND, list_all_locations_of_identifier);
bind(context, 'v', MDFR_CMND, paste_and_indent);
bind(context, 'v', MDFR_CTRL, toggle_virtual_whitespace);
bind(context, 'V', MDFR_CMND, paste_next_and_indent);
bind(context, 'x', MDFR_CMND, cut);
bind(context, 'y', MDFR_CMND, redo);
bind(context, 'z', MDFR_CMND, undo);
bind(context, '1', MDFR_CMND, view_buffer_other_panel);
bind(context, '2', MDFR_CMND, swap_buffers_between_panels);
bind(context, '?', MDFR_CMND, toggle_show_whitespace);
bind(context, '~', MDFR_CMND, clean_all_lines);
bind(context, '\n', MDFR_NONE, newline_or_goto_position_sticky);
bind(context, '\n', MDFR_SHIFT, newline_or_goto_position_same_panel_sticky);
bind(context, '>', MDFR_CMND, view_jump_list_with_lister);
bind(context, ' ', MDFR_SHIFT, write_character);
end_map(context);
begin_map(context, default_code_map);
@ -314,7 +289,6 @@ bind(context, 'i', MDFR_CTRL, if0_off);
bind(context, '1', MDFR_CTRL, open_file_in_quotes);
bind(context, '2', MDFR_CTRL, open_matching_file_cpp);
bind(context, '0', MDFR_CMND, write_zero_struct);
bind(context, 'I', MDFR_CMND, list_all_functions_current_buffer);
end_map(context);
begin_map(context, default_lister_ui_map);
bind_vanilla_keys(context, lister__write_character);
@ -366,10 +340,7 @@ Meta_Sub_Map *sub_maps;
int32_t sub_map_count;
LINK_PROCS(void (*fill_keys_proc)(Bind_Helper *context);)
};
static Meta_Key_Bind fcoder_binds_for_default_mapid_global[45] = {
{0, 112, 1, "open_panel_vsplit", 17, LINK_PROCS(open_panel_vsplit)},
{0, 95, 1, "open_panel_hsplit", 17, LINK_PROCS(open_panel_hsplit)},
{0, 80, 1, "close_panel", 11, LINK_PROCS(close_panel)},
static Meta_Key_Bind fcoder_binds_for_default_mapid_global[36] = {
{0, 44, 1, "change_active_panel", 19, LINK_PROCS(change_active_panel)},
{0, 60, 1, "change_active_panel_backwards", 29, LINK_PROCS(change_active_panel_backwards)},
{0, 110, 1, "interactive_new", 15, LINK_PROCS(interactive_new)},
@ -379,7 +350,6 @@ static Meta_Key_Bind fcoder_binds_for_default_mapid_global[45] = {
{0, 105, 1, "interactive_switch_buffer", 25, LINK_PROCS(interactive_switch_buffer)},
{0, 104, 1, "project_go_to_root_directory", 28, LINK_PROCS(project_go_to_root_directory)},
{0, 83, 1, "save_all_dirty_buffers", 22, LINK_PROCS(save_all_dirty_buffers)},
{0, 99, 2, "open_color_tweaker", 18, LINK_PROCS(open_color_tweaker)},
{0, 46, 2, "change_to_build_panel", 21, LINK_PROCS(change_to_build_panel)},
{0, 44, 2, "close_build_panel", 17, LINK_PROCS(close_build_panel)},
{0, 110, 2, "goto_next_jump_no_skips_sticky", 30, LINK_PROCS(goto_next_jump_no_skips_sticky)},
@ -388,14 +358,9 @@ static Meta_Key_Bind fcoder_binds_for_default_mapid_global[45] = {
{0, 109, 2, "build_in_build_panel", 20, LINK_PROCS(build_in_build_panel)},
{0, 122, 2, "execute_any_cli", 15, LINK_PROCS(execute_any_cli)},
{0, 90, 2, "execute_previous_cli", 20, LINK_PROCS(execute_previous_cli)},
{0, 120, 2, "execute_arbitrary_command", 25, LINK_PROCS(execute_arbitrary_command)},
{0, 87, 2, "show_scrollbar", 14, LINK_PROCS(show_scrollbar)},
{0, 119, 2, "hide_scrollbar", 14, LINK_PROCS(hide_scrollbar)},
{0, 98, 2, "toggle_filebar", 14, LINK_PROCS(toggle_filebar)},
{0, 64, 2, "toggle_mouse", 12, LINK_PROCS(toggle_mouse)},
{0, 120, 2, "command_lister", 14, LINK_PROCS(command_lister)},
{0, 73, 1, "list_all_functions_all_buffers_lister", 37, LINK_PROCS(list_all_functions_all_buffers_lister)},
{0, 69, 2, "exit_4coder", 11, LINK_PROCS(exit_4coder)},
{0, 43, 1, "increase_face_size", 18, LINK_PROCS(increase_face_size)},
{0, 45, 1, "decrease_face_size", 18, LINK_PROCS(decrease_face_size)},
{0, 55315, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
{0, 55316, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
{0, 55317, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
@ -413,7 +378,7 @@ static Meta_Key_Bind fcoder_binds_for_default_mapid_global[45] = {
{0, 55329, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
{0, 55330, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
};
static Meta_Key_Bind fcoder_binds_for_default_mapid_file[66] = {
static Meta_Key_Bind fcoder_binds_for_default_mapid_file[62] = {
{1, 0, 0, "write_character", 15, LINK_PROCS(write_character)},
{0, 55308, 0, "click_set_cursor", 16, LINK_PROCS(click_set_cursor)},
{0, 55310, 0, "click_set_mark", 14, LINK_PROCS(click_set_mark)},
@ -455,7 +420,6 @@ static Meta_Key_Bind fcoder_binds_for_default_mapid_file[66] = {
{0, 103, 1, "goto_line", 9, LINK_PROCS(goto_line)},
{0, 71, 1, "list_all_locations_of_selection", 31, LINK_PROCS(list_all_locations_of_selection)},
{0, 75, 1, "kill_buffer", 11, LINK_PROCS(kill_buffer)},
{0, 108, 1, "toggle_line_wrap", 16, LINK_PROCS(toggle_line_wrap)},
{0, 76, 1, "duplicate_line", 14, LINK_PROCS(duplicate_line)},
{0, 109, 1, "cursor_mark_swap", 16, LINK_PROCS(cursor_mark_swap)},
{0, 79, 1, "reopen", 6, LINK_PROCS(reopen)},
@ -464,24 +428,21 @@ static Meta_Key_Bind fcoder_binds_for_default_mapid_file[66] = {
{0, 113, 2, "query_replace_selection", 23, LINK_PROCS(query_replace_selection)},
{0, 114, 1, "reverse_search", 14, LINK_PROCS(reverse_search)},
{0, 115, 1, "save", 4, LINK_PROCS(save)},
{0, 115, 2, "save_to_query", 13, LINK_PROCS(save_to_query)},
{0, 116, 1, "search_identifier", 17, LINK_PROCS(search_identifier)},
{0, 84, 1, "list_all_locations_of_identifier", 32, LINK_PROCS(list_all_locations_of_identifier)},
{0, 118, 1, "paste_and_indent", 16, LINK_PROCS(paste_and_indent)},
{0, 118, 2, "toggle_virtual_whitespace", 25, LINK_PROCS(toggle_virtual_whitespace)},
{0, 86, 1, "paste_next_and_indent", 21, LINK_PROCS(paste_next_and_indent)},
{0, 120, 1, "cut", 3, LINK_PROCS(cut)},
{0, 121, 1, "redo", 4, LINK_PROCS(redo)},
{0, 122, 1, "undo", 4, LINK_PROCS(undo)},
{0, 49, 1, "view_buffer_other_panel", 23, LINK_PROCS(view_buffer_other_panel)},
{0, 50, 1, "swap_buffers_between_panels", 27, LINK_PROCS(swap_buffers_between_panels)},
{0, 63, 1, "toggle_show_whitespace", 22, LINK_PROCS(toggle_show_whitespace)},
{0, 126, 1, "clean_all_lines", 15, LINK_PROCS(clean_all_lines)},
{0, 10, 0, "newline_or_goto_position_sticky", 31, LINK_PROCS(newline_or_goto_position_sticky)},
{0, 10, 8, "newline_or_goto_position_same_panel_sticky", 42, LINK_PROCS(newline_or_goto_position_same_panel_sticky)},
{0, 62, 1, "view_jump_list_with_lister", 26, LINK_PROCS(view_jump_list_with_lister)},
{0, 32, 8, "write_character", 15, LINK_PROCS(write_character)},
};
static Meta_Key_Bind fcoder_binds_for_default_default_code_map[32] = {
static Meta_Key_Bind fcoder_binds_for_default_default_code_map[31] = {
{0, 55300, 1, "seek_alphanumeric_or_camel_right", 32, LINK_PROCS(seek_alphanumeric_or_camel_right)},
{0, 55299, 1, "seek_alphanumeric_or_camel_left", 31, LINK_PROCS(seek_alphanumeric_or_camel_left)},
{0, 10, 0, "write_and_auto_tab", 18, LINK_PROCS(write_and_auto_tab)},
@ -513,7 +474,6 @@ static Meta_Key_Bind fcoder_binds_for_default_default_code_map[32] = {
{0, 49, 2, "open_file_in_quotes", 19, LINK_PROCS(open_file_in_quotes)},
{0, 50, 2, "open_matching_file_cpp", 22, LINK_PROCS(open_matching_file_cpp)},
{0, 48, 1, "write_zero_struct", 17, LINK_PROCS(write_zero_struct)},
{0, 73, 1, "list_all_functions_current_buffer", 33, LINK_PROCS(list_all_functions_current_buffer)},
};
static Meta_Key_Bind fcoder_binds_for_default_default_lister_ui_map[14] = {
{1, 0, 0, "lister__write_character", 23, LINK_PROCS(lister__write_character)},
@ -532,15 +492,12 @@ static Meta_Key_Bind fcoder_binds_for_default_default_lister_ui_map[14] = {
{0, 55314, 0, "lister__repaint", 15, LINK_PROCS(lister__repaint)},
};
static Meta_Sub_Map fcoder_submaps_for_default[4] = {
{"mapid_global", 12, "The following bindings apply in all situations.", 47, 0, 0, fcoder_binds_for_default_mapid_global, 45},
{"mapid_file", 10, "The following bindings apply in general text files and most apply in code files, but some are overriden by other commands specific to code files.", 145, 0, 0, fcoder_binds_for_default_mapid_file, 66},
{"default_code_map", 16, "The following commands only apply in files where the lexer (syntax highlighting) is turned on.", 94, "mapid_file", 10, fcoder_binds_for_default_default_code_map, 32},
{"mapid_global", 12, "The following bindings apply in all situations.", 47, 0, 0, fcoder_binds_for_default_mapid_global, 36},
{"mapid_file", 10, "The following bindings apply in general text files and most apply in code files, but some are overriden by other commands specific to code files.", 145, 0, 0, fcoder_binds_for_default_mapid_file, 62},
{"default_code_map", 16, "The following commands only apply in files where the lexer (syntax highlighting) is turned on.", 94, "mapid_file", 10, fcoder_binds_for_default_default_code_map, 31},
{"default_lister_ui_map", 21, "These commands apply in 'lister mode' such as when you open a file.", 67, 0, 0, fcoder_binds_for_default_default_lister_ui_map, 14},
};
static Meta_Key_Bind fcoder_binds_for_mac_default_mapid_global[45] = {
{0, 112, 4, "open_panel_vsplit", 17, LINK_PROCS(open_panel_vsplit)},
{0, 95, 4, "open_panel_hsplit", 17, LINK_PROCS(open_panel_hsplit)},
{0, 80, 4, "close_panel", 11, LINK_PROCS(close_panel)},
static Meta_Key_Bind fcoder_binds_for_mac_default_mapid_global[36] = {
{0, 44, 4, "change_active_panel", 19, LINK_PROCS(change_active_panel)},
{0, 60, 4, "change_active_panel_backwards", 29, LINK_PROCS(change_active_panel_backwards)},
{0, 110, 4, "interactive_new", 15, LINK_PROCS(interactive_new)},
@ -550,7 +507,6 @@ static Meta_Key_Bind fcoder_binds_for_mac_default_mapid_global[45] = {
{0, 105, 4, "interactive_switch_buffer", 25, LINK_PROCS(interactive_switch_buffer)},
{0, 104, 4, "project_go_to_root_directory", 28, LINK_PROCS(project_go_to_root_directory)},
{0, 83, 4, "save_all_dirty_buffers", 22, LINK_PROCS(save_all_dirty_buffers)},
{0, 99, 1, "open_color_tweaker", 18, LINK_PROCS(open_color_tweaker)},
{0, 46, 1, "change_to_build_panel", 21, LINK_PROCS(change_to_build_panel)},
{0, 44, 1, "close_build_panel", 17, LINK_PROCS(close_build_panel)},
{0, 110, 1, "goto_next_jump_sticky", 21, LINK_PROCS(goto_next_jump_sticky)},
@ -559,14 +515,9 @@ static Meta_Key_Bind fcoder_binds_for_mac_default_mapid_global[45] = {
{0, 109, 1, "build_in_build_panel", 20, LINK_PROCS(build_in_build_panel)},
{0, 122, 1, "execute_any_cli", 15, LINK_PROCS(execute_any_cli)},
{0, 90, 1, "execute_previous_cli", 20, LINK_PROCS(execute_previous_cli)},
{0, 120, 1, "execute_arbitrary_command", 25, LINK_PROCS(execute_arbitrary_command)},
{0, 87, 1, "show_scrollbar", 14, LINK_PROCS(show_scrollbar)},
{0, 119, 1, "hide_scrollbar", 14, LINK_PROCS(hide_scrollbar)},
{0, 98, 1, "toggle_filebar", 14, LINK_PROCS(toggle_filebar)},
{0, 64, 1, "toggle_mouse", 12, LINK_PROCS(toggle_mouse)},
{0, 120, 1, "command_lister", 14, LINK_PROCS(command_lister)},
{0, 73, 4, "list_all_functions_all_buffers_lister", 37, LINK_PROCS(list_all_functions_all_buffers_lister)},
{0, 69, 1, "exit_4coder", 11, LINK_PROCS(exit_4coder)},
{0, 43, 1, "increase_face_size", 18, LINK_PROCS(increase_face_size)},
{0, 45, 1, "decrease_face_size", 18, LINK_PROCS(decrease_face_size)},
{0, 55315, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
{0, 55316, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
{0, 55317, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
@ -584,7 +535,7 @@ static Meta_Key_Bind fcoder_binds_for_mac_default_mapid_global[45] = {
{0, 55329, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
{0, 55330, 0, "project_fkey_command", 20, LINK_PROCS(project_fkey_command)},
};
static Meta_Key_Bind fcoder_binds_for_mac_default_mapid_file[64] = {
static Meta_Key_Bind fcoder_binds_for_mac_default_mapid_file[62] = {
{1, 0, 0, "write_character", 15, LINK_PROCS(write_character)},
{1, 0, 2, "write_character", 15, LINK_PROCS(write_character)},
{0, 55308, 0, "click_set_cursor", 16, LINK_PROCS(click_set_cursor)},
@ -608,6 +559,8 @@ static Meta_Key_Bind fcoder_binds_for_mac_default_mapid_file[64] = {
{0, 55299, 4, "seek_whitespace_left", 20, LINK_PROCS(seek_whitespace_left)},
{0, 55297, 4, "seek_whitespace_up_end_line", 27, LINK_PROCS(seek_whitespace_up_end_line)},
{0, 55298, 4, "seek_whitespace_down_end_line", 29, LINK_PROCS(seek_whitespace_down_end_line)},
{0, 55297, 2, "move_line_up", 12, LINK_PROCS(move_line_up)},
{0, 55298, 2, "move_line_down", 14, LINK_PROCS(move_line_down)},
{0, 55296, 4, "backspace_word", 14, LINK_PROCS(backspace_word)},
{0, 55301, 4, "delete_word", 11, LINK_PROCS(delete_word)},
{0, 55296, 1, "snipe_token_or_word", 19, LINK_PROCS(snipe_token_or_word)},
@ -625,7 +578,6 @@ static Meta_Key_Bind fcoder_binds_for_mac_default_mapid_file[64] = {
{0, 103, 4, "goto_line", 9, LINK_PROCS(goto_line)},
{0, 71, 4, "list_all_locations_of_selection", 31, LINK_PROCS(list_all_locations_of_selection)},
{0, 75, 4, "kill_buffer", 11, LINK_PROCS(kill_buffer)},
{0, 108, 4, "toggle_line_wrap", 16, LINK_PROCS(toggle_line_wrap)},
{0, 76, 4, "duplicate_line", 14, LINK_PROCS(duplicate_line)},
{0, 109, 4, "cursor_mark_swap", 16, LINK_PROCS(cursor_mark_swap)},
{0, 79, 4, "reopen", 6, LINK_PROCS(reopen)},
@ -633,24 +585,21 @@ static Meta_Key_Bind fcoder_binds_for_mac_default_mapid_file[64] = {
{0, 81, 4, "query_replace_identifier", 24, LINK_PROCS(query_replace_identifier)},
{0, 114, 4, "reverse_search", 14, LINK_PROCS(reverse_search)},
{0, 115, 4, "save", 4, LINK_PROCS(save)},
{0, 115, 1, "save_to_query", 13, LINK_PROCS(save_to_query)},
{0, 116, 4, "search_identifier", 17, LINK_PROCS(search_identifier)},
{0, 84, 4, "list_all_locations_of_identifier", 32, LINK_PROCS(list_all_locations_of_identifier)},
{0, 118, 4, "paste_and_indent", 16, LINK_PROCS(paste_and_indent)},
{0, 118, 1, "toggle_virtual_whitespace", 25, LINK_PROCS(toggle_virtual_whitespace)},
{0, 86, 4, "paste_next_and_indent", 21, LINK_PROCS(paste_next_and_indent)},
{0, 120, 4, "cut", 3, LINK_PROCS(cut)},
{0, 121, 4, "redo", 4, LINK_PROCS(redo)},
{0, 122, 4, "undo", 4, LINK_PROCS(undo)},
{0, 49, 4, "view_buffer_other_panel", 23, LINK_PROCS(view_buffer_other_panel)},
{0, 50, 4, "swap_buffers_between_panels", 27, LINK_PROCS(swap_buffers_between_panels)},
{0, 63, 4, "toggle_show_whitespace", 22, LINK_PROCS(toggle_show_whitespace)},
{0, 126, 4, "clean_all_lines", 15, LINK_PROCS(clean_all_lines)},
{0, 10, 0, "newline_or_goto_position_sticky", 31, LINK_PROCS(newline_or_goto_position_sticky)},
{0, 10, 8, "newline_or_goto_position_same_panel_sticky", 42, LINK_PROCS(newline_or_goto_position_same_panel_sticky)},
{0, 62, 4, "view_jump_list_with_lister", 26, LINK_PROCS(view_jump_list_with_lister)},
{0, 32, 8, "write_character", 15, LINK_PROCS(write_character)},
};
static Meta_Key_Bind fcoder_binds_for_mac_default_default_code_map[32] = {
static Meta_Key_Bind fcoder_binds_for_mac_default_default_code_map[31] = {
{0, 55300, 4, "seek_alphanumeric_or_camel_right", 32, LINK_PROCS(seek_alphanumeric_or_camel_right)},
{0, 55299, 4, "seek_alphanumeric_or_camel_left", 31, LINK_PROCS(seek_alphanumeric_or_camel_left)},
{0, 10, 0, "write_and_auto_tab", 18, LINK_PROCS(write_and_auto_tab)},
@ -682,7 +631,6 @@ static Meta_Key_Bind fcoder_binds_for_mac_default_default_code_map[32] = {
{0, 49, 1, "open_file_in_quotes", 19, LINK_PROCS(open_file_in_quotes)},
{0, 50, 1, "open_matching_file_cpp", 22, LINK_PROCS(open_matching_file_cpp)},
{0, 48, 4, "write_zero_struct", 17, LINK_PROCS(write_zero_struct)},
{0, 73, 4, "list_all_functions_current_buffer", 33, LINK_PROCS(list_all_functions_current_buffer)},
};
static Meta_Key_Bind fcoder_binds_for_mac_default_default_lister_ui_map[14] = {
{1, 0, 0, "lister__write_character", 23, LINK_PROCS(lister__write_character)},
@ -701,9 +649,9 @@ static Meta_Key_Bind fcoder_binds_for_mac_default_default_lister_ui_map[14] = {
{0, 55314, 0, "lister__repaint", 15, LINK_PROCS(lister__repaint)},
};
static Meta_Sub_Map fcoder_submaps_for_mac_default[4] = {
{"mapid_global", 12, "The following bindings apply in all situations.", 47, 0, 0, fcoder_binds_for_mac_default_mapid_global, 45},
{"mapid_file", 10, "The following bindings apply in general text files and most apply in code files, but some are overriden by other commands specific to code files.", 145, 0, 0, fcoder_binds_for_mac_default_mapid_file, 64},
{"default_code_map", 16, "The following commands only apply in files where the lexer (syntax highlighting) is turned on.", 94, "mapid_file", 10, fcoder_binds_for_mac_default_default_code_map, 32},
{"mapid_global", 12, "The following bindings apply in all situations.", 47, 0, 0, fcoder_binds_for_mac_default_mapid_global, 36},
{"mapid_file", 10, "The following bindings apply in general text files and most apply in code files, but some are overriden by other commands specific to code files.", 145, 0, 0, fcoder_binds_for_mac_default_mapid_file, 62},
{"default_code_map", 16, "The following commands only apply in files where the lexer (syntax highlighting) is turned on.", 94, "mapid_file", 10, fcoder_binds_for_mac_default_default_code_map, 31},
{"default_lister_ui_map", 21, "These commands apply in 'lister mode' such as when you open a file.", 67, 0, 0, fcoder_binds_for_mac_default_default_lister_ui_map, 14},
};
static Meta_Mapping fcoder_meta_maps[2] = {

118
4coder_jump_lister.cpp Normal file
View File

@ -0,0 +1,118 @@
/*
4coder_jump_lister.cpp - Lister for jump buffers.
*/
// TOP
static Lister_Activation_Code
activate_jump(Application_Links *app, View_Summary *view, String text_field,
void *user_data, bool32 activated_by_mouse){
int32_t list_index = (int32_t)PtrAsInt(user_data);
Lister_State *state = view_get_lister_state(view);
Jump_Lister_Parameters *params = (Jump_Lister_Parameters*)state->lister.user_data;
Marker_List *list = get_marker_list_for_buffer(params->list_buffer_id);
if (list != 0){
Lister_Activation_Code result_code = ListerActivation_Finished;
View_Summary target_view = {0};
switch (params->activation_rule){
case JumpListerActivation_OpenInUIView:
{
target_view = *view;
result_code = ListerActivation_Finished;
}break;
case JumpListerActivation_OpenInTargetViewKeepUI:
{
target_view = get_view(app, params->target_view_id, AccessAll);
result_code = ListerActivation_Continue;
}break;
case JumpListerActivation_OpenInTargetViewCloseUI:
{
target_view = get_view(app, params->target_view_id, AccessAll);
result_code = ListerActivation_Finished;
}break;
case JumpListerActivation_OpenInNextViewKeepUI:
{
target_view = *view;
get_next_view_looped_primary_panels(app, &target_view, AccessAll);
result_code = ListerActivation_Continue;
}break;
case JumpListerActivation_OpenInNextViewCloseUI:
{
target_view = *view;
get_next_view_looped_primary_panels(app, &target_view, AccessAll);
result_code = ListerActivation_Finished;
}break;
}
ID_Pos_Jump_Location location = {0};
if (get_jump_from_list(app, list, list_index, &location)){
Buffer_Summary buffer = {0};
if (get_jump_buffer(app, &buffer, &location)){
set_active_view(app, &target_view);
jump_to_location(app, &target_view, &buffer, location);
}
}
return(result_code);
}
return(ListerActivation_Finished);
}
static void
open_jump_lister(Application_Links *app, Partition *scratch, Heap *heap,
View_Summary *ui_view, Buffer_ID list_buffer_id,
Jump_Lister_Activation_Rule activation_rule, View_Summary *optional_target_view){
Marker_List *list = get_or_make_list_for_buffer(app, scratch, heap, list_buffer_id);
if (list != 0){
Buffer_Summary list_buffer = get_buffer(app, list_buffer_id, AccessAll);
int32_t estimated_string_space_size = 0;
view_end_ui_mode(app, ui_view);
Temp_Memory temp = begin_temp_memory(scratch);
int32_t option_count = list->jump_count;
Lister_Option *options = push_array(scratch, Lister_Option, option_count);
Managed_Object stored_jumps = list->jump_array;
for (int32_t i = 0; i < option_count; i += 1){
Sticky_Jump_Stored stored = {0};
managed_object_load_data(app, stored_jumps, i, 1, &stored);
String line = {0};
read_line(app, scratch, &list_buffer, stored.list_line, &line);
options[i].string = line.str;
options[i].status = 0;
options[i].user_data = IntAsPtr(i);
int32_t aligned_size = line.size + 1 + 7;
aligned_size = aligned_size - aligned_size%8;
estimated_string_space_size += aligned_size;
}
Jump_Lister_Parameters jump_lister_params = {0};
jump_lister_params.list_buffer_id = list_buffer_id;
jump_lister_params.activation_rule = activation_rule;
if (optional_target_view != 0){
jump_lister_params.target_view_id = optional_target_view->view_id;
}
begin_integrated_lister__basic_list(app, "Jump:", activate_jump,
&jump_lister_params, sizeof(jump_lister_params),
options, option_count,
estimated_string_space_size,
ui_view);
end_temp_memory(temp);
}
}
CUSTOM_COMMAND_SIG(view_jump_list_with_lister)
CUSTOM_DOC("When executed on a buffer with jumps, creates a persistent lister for all the jumps")
{
View_Summary view = get_active_view(app, AccessAll);
open_jump_lister(app, &global_part, &global_heap,
&view, view.buffer_id, JumpListerActivation_OpenInNextViewKeepUI, 0);
}
// BOTTOM

22
4coder_jump_lister.h Normal file
View File

@ -0,0 +1,22 @@
/*
4coder_jump_lister.h - Lister for jump buffers.
*/
// TOP
typedef int32_t Jump_Lister_Activation_Rule;
enum{
JumpListerActivation_OpenInUIView = 0,
JumpListerActivation_OpenInTargetViewKeepUI = 1,
JumpListerActivation_OpenInTargetViewCloseUI = 2,
JumpListerActivation_OpenInNextViewKeepUI = 3,
JumpListerActivation_OpenInNextViewCloseUI = 4,
};
struct Jump_Lister_Parameters{
Buffer_ID list_buffer_id;
Jump_Lister_Activation_Rule activation_rule;
View_ID target_view_id;
};
// BOTTOM

View File

@ -205,7 +205,7 @@ get_marker_list_for_buffer(Buffer_ID buffer_id){
}
static Marker_List*
get_or_make_list_for_buffer(Application_Links *app, Partition *part, Heap *heap, int32_t buffer_id){
get_or_make_list_for_buffer(Application_Links *app, Partition *scratch, Heap *heap, Buffer_ID buffer_id){
Marker_List *result = get_marker_list_for_buffer(buffer_id);
if (result != 0){
Buffer_Summary buffer = get_buffer(app, buffer_id, AccessAll);
@ -217,7 +217,11 @@ get_or_make_list_for_buffer(Application_Links *app, Partition *part, Heap *heap,
}
if (result == 0){
result = make_new_marker_list_for_buffer(heap, buffer_id);
init_marker_list(app, part, heap, buffer_id, result);
init_marker_list(app, scratch, heap, buffer_id, result);
if (result->jump_count == 0){
delete_marker_list(result);
result = 0;
}
}
return(result);
}

View File

@ -264,7 +264,7 @@ CUSTOM_DOC("A lister mode command that handles input for the fixed sure to kill
if (length > 0){
void *user_data = 0;
bool32 did_shortcut_key = false;
for (Lister_Option_Node *node = state->lister.options.first;
for (Lister_Node *node = state->lister.options.first;
node != 0;
node = node->next){
char *hotkeys = (char*)(node + 1);
@ -306,8 +306,9 @@ lister_get_fixed_list_handlers(void){
}
static void
begin_integrated_lister__with_refresh_handler(Application_Links *app, char *query_string,
Lister_Handlers handlers, void *user_data,
begin_integrated_lister__with_refresh_handler(Application_Links *app, char *query_string,
Lister_Handlers handlers,
void *user_data, int32_t user_data_size,
View_Summary *view){
if (handlers.refresh != 0){
Partition *scratch = &global_part;
@ -316,10 +317,9 @@ begin_integrated_lister__with_refresh_handler(Application_Links *app, char *quer
view_set_setting(app, view, ViewSetting_UICommandMap, default_lister_ui_map);
Lister_State *state = view_get_lister_state(view);
init_lister_state(state, heap);
lister_first_init(&state->lister);
lister_first_init(&state->arena, &state->lister, user_data, user_data_size);
lister_set_query_string(&state->lister, query_string);
state->lister.handlers = handlers;
state->lister.user_data = user_data;
handlers.refresh(app, &state->arena, &state->lister);
lister_update_ui(app, scratch, view, state);
}
@ -333,9 +333,42 @@ begin_integrated_lister__with_refresh_handler(Application_Links *app, char *quer
}
}
static void
begin_integrated_lister__basic_list(Application_Links *app, char *query_string,
Lister_Activation_Function_Type *activate,
void *user_data, int32_t user_data_size,
Lister_Option *options, int32_t option_count,
int32_t estimated_string_space_size,
View_Summary *view){
Partition *scratch = &global_part;
Heap *heap = &global_heap;
view_start_ui_mode(app, view);
view_set_setting(app, view, ViewSetting_UICommandMap, default_lister_ui_map);
Lister_State *state = view_get_lister_state(view);
int32_t arena_size = (user_data_size + option_count*sizeof(Lister_Node) + estimated_string_space_size);
arena_size = (arena_size + (4 << 10) - 1);
arena_size = arena_size - arena_size%(4 << 10);
if (arena_size < (64 << 10)){
arena_size = (64 << 10);
}
init_lister_state(state, heap, arena_size);
lister_first_init(&state->arena, &state->lister, user_data, user_data_size);
for (int32_t i = 0; i < option_count; i += 1){
lister_add_item(&state->arena, &state->lister,
make_string_slowly(options[i].string),
make_string_slowly(options[i].status),
options[i].user_data, 0);
}
lister_set_query_string(&state->lister, query_string);
state->lister.handlers = lister_get_default_handlers();
state->lister.handlers.activate = activate;
lister_update_ui(app, scratch, view, state);
}
static void
begin_integrated_lister__with_fixed_options(Application_Links *app, char *query_string,
Lister_Handlers handlers, void *user_data,
Lister_Handlers handlers,
void *user_data, int32_t user_data_size,
Lister_Fixed_Option *options, int32_t option_count,
View_Summary *view){
Partition *scratch = &global_part;
@ -344,7 +377,7 @@ begin_integrated_lister__with_fixed_options(Application_Links *app, char *query_
view_set_setting(app, view, ViewSetting_UICommandMap, default_lister_ui_map);
Lister_State *state = view_get_lister_state(view);
init_lister_state(state, heap);
lister_first_init(&state->lister);
lister_first_init(&state->arena, &state->lister, user_data, user_data_size);
for (int32_t i = 0; i < option_count; i += 1){
char *shortcut_chars = options[i].shortcut_chars;
int32_t shortcut_chars_length = str_size(shortcut_chars);
@ -358,26 +391,27 @@ begin_integrated_lister__with_fixed_options(Application_Links *app, char *query_
lister_set_query_string(&state->lister, query_string);
state->lister.handlers = handlers;
state->lister.handlers.refresh = 0;
state->lister.user_data = user_data;
lister_update_ui(app, scratch, view, state);
}
static void
begin_integrated_lister__with_fixed_options(Application_Links *app, char *query_string,
Lister_Activation_Function_Type *activate, void *user_data,
Lister_Activation_Function_Type *activate,
void *user_data, int32_t user_data_size,
Lister_Fixed_Option *options, int32_t option_count,
View_Summary *view){
Lister_Handlers handlers = lister_get_fixed_list_handlers();
handlers.activate = activate;
begin_integrated_lister__with_fixed_options(app, query_string,
handlers, user_data,
handlers, user_data, user_data_size,
options, option_count,
view);
}
static void
begin_integrated_lister__ui_list(Application_Links *app, char *query_string,
Lister_Handlers handlers, void *user_data,
Lister_Handlers handlers,
void *user_data, int32_t user_data_size,
Lister_UI_Option *options, int32_t option_count,
View_Summary *view){
Partition *scratch = &global_part;
@ -386,7 +420,7 @@ begin_integrated_lister__ui_list(Application_Links *app, char *query_string,
view_set_setting(app, view, ViewSetting_UICommandMap, default_lister_ui_map);
Lister_State *state = view_get_lister_state(view);
init_lister_state(state, heap);
lister_first_init(&state->lister);
lister_first_init(&state->arena, &state->lister, user_data, user_data_size);
state->lister.theme_list = true;
for (int32_t i = 0; i < option_count; i += 1){
lister_add_ui_item(&state->arena, &state->lister,
@ -397,19 +431,19 @@ begin_integrated_lister__ui_list(Application_Links *app, char *query_string,
lister_set_query_string(&state->lister, query_string);
state->lister.handlers = handlers;
state->lister.handlers.refresh = 0;
state->lister.user_data = user_data;
lister_update_ui(app, scratch, view, state);
}
static void
begin_integrated_lister__ui_list(Application_Links *app, char *query_string,
Lister_Activation_Function_Type *activate, void *user_data,
Lister_Activation_Function_Type *activate,
void *user_data, int32_t user_data_size,
Lister_UI_Option *options, int32_t option_count,
View_Summary *view){
Lister_Handlers handlers = lister_get_default_handlers();
handlers.activate = activate;
begin_integrated_lister__ui_list(app, query_string,
handlers, user_data,
handlers, user_data, user_data_size,
options, option_count,
view);
}
@ -420,8 +454,8 @@ static void
generate_all_buffers_list__output_buffer(Partition *arena, Lister *lister, Buffer_Summary buffer){
String status = {0};
switch (buffer.dirty){
case DirtyState_UnsavedChanges: status = make_lit_string(" *"); break;
case DirtyState_UnloadedChanges: status = make_lit_string(" !"); break;
case DirtyState_UnsavedChanges: status = make_lit_string("*"); break;
case DirtyState_UnloadedChanges: status = make_lit_string("!"); break;
}
String buffer_name = make_string(buffer.buffer_name, buffer.buffer_name_len);
lister_add_item(arena, lister, buffer_name, status, IntAsPtr(buffer.buffer_id), 0);
@ -542,7 +576,7 @@ generate_hot_directory_file_list(Application_Links *app, Partition *arena, Liste
end_temp_memory(path_temp);
if (buffer.exists){
is_loaded = " LOADED";
is_loaded = "LOADED";
switch (buffer.dirty){
case DirtyState_UnsavedChanges: status_flag = " *"; break;
case DirtyState_UnloadedChanges: status_flag = " !"; break;
@ -557,25 +591,28 @@ generate_hot_directory_file_list(Application_Links *app, Partition *arena, Liste
static void
begin_integrated_lister__buffer_list(Application_Links *app, char *query_string,
Lister_Activation_Function_Type *activate_procedure, void *user_data,
Lister_Activation_Function_Type *activate_procedure,
void *user_data, int32_t user_data_size,
View_Summary *target_view){
Lister_Handlers handlers = lister_get_default_handlers();
handlers.activate = activate_procedure;
handlers.refresh = generate_all_buffers_list;
begin_integrated_lister__with_refresh_handler(app, query_string, handlers, user_data, target_view);
begin_integrated_lister__with_refresh_handler(app, query_string, handlers, user_data, user_data_size,
target_view);
}
static void
begin_integrated_lister__file_system_list(Application_Links *app, char *query_string,
Lister_Activation_Function_Type *activate_procedure,
void *user_data,
void *user_data, int32_t user_data_size,
View_Summary *target_view){
Lister_Handlers handlers = lister_get_default_handlers();
handlers.activate = activate_procedure;
handlers.refresh = generate_hot_directory_file_list;
handlers.write_character = lister__write_character__file_path;
handlers.backspace = lister__backspace_text_field__file_path;
begin_integrated_lister__with_refresh_handler(app, query_string, handlers, user_data, target_view);
begin_integrated_lister__with_refresh_handler(app, query_string, handlers, user_data, user_data_size,
target_view);
}
////////////////////////////////
@ -592,7 +629,7 @@ activate_confirm_kill(Application_Links *app, View_Summary *view, String text_fi
void *user_data, bool32 clicked){
int32_t behavior = (int32_t)PtrAsInt(user_data);
Lister_State *state = view_get_lister_state(view);
Buffer_ID buffer_id = (Buffer_ID)(PtrAsInt(state->lister.user_data));
Buffer_ID buffer_id = *(Buffer_ID*)(state->lister.user_data);
switch (behavior){
case SureToKill_No:
{}break;
@ -630,7 +667,8 @@ do_gui_sure_to_kill(Application_Links *app, Buffer_Summary *buffer, View_Summary
};
int32_t option_count = sizeof(options)/sizeof(options[0]);
begin_integrated_lister__with_fixed_options(app, "There are unsaved changes, close anyway?",
activate_confirm_kill, IntAsPtr(buffer->buffer_id),
activate_confirm_kill,
&buffer->buffer_id, sizeof(buffer->buffer_id),
options, option_count,
view);
}
@ -669,7 +707,8 @@ do_gui_sure_to_close_4coder(Application_Links *app, View_Summary *view){
int32_t option_count = sizeof(options)/sizeof(options[0]);
begin_integrated_lister__with_fixed_options(app,
"There are one or more buffers with unsave changes, close anyway?",
activate_confirm_close_4coder, 0,
activate_confirm_close_4coder,
0, 0,
options, option_count,
view);
}
@ -691,7 +730,7 @@ CUSTOM_DOC("Interactively switch to an open buffer.")
{
View_Summary view = get_active_view(app, AccessAll);
view_end_ui_mode(app, &view);
begin_integrated_lister__buffer_list(app, "Switch: ", activate_switch_buffer, 0, &view);
begin_integrated_lister__buffer_list(app, "Switch:", activate_switch_buffer, 0, 0, &view);
}
static Lister_Activation_Code
@ -709,7 +748,7 @@ CUSTOM_DOC("Interactively kill an open buffer.")
{
View_Summary view = get_active_view(app, AccessAll);
view_end_ui_mode(app, &view);
begin_integrated_lister__buffer_list(app, "Kill: ", activate_kill_buffer, 0, &view);
begin_integrated_lister__buffer_list(app, "Kill:", activate_kill_buffer, 0, 0, &view);
}
static Lister_Activation_Code
@ -778,7 +817,7 @@ CUSTOM_DOC("Interactively open a file out of the file system.")
{
View_Summary view = get_active_view(app, AccessAll);
view_end_ui_mode(app, &view);
begin_integrated_lister__file_system_list(app, "Open: ", activate_open_or_new, 0, &view);
begin_integrated_lister__file_system_list(app, "Open:", activate_open_or_new, 0, 0, &view);
}
static Lister_Activation_Code
@ -811,7 +850,7 @@ CUSTOM_DOC("Interactively creates a new file.")
{
View_Summary view = get_active_view(app, AccessAll);
view_end_ui_mode(app, &view);
begin_integrated_lister__file_system_list(app, "New: ", activate_new, 0, &view);
begin_integrated_lister__file_system_list(app, "New:", activate_new, 0, 0, &view);
}
static Lister_Activation_Code
@ -838,7 +877,7 @@ CUSTOM_DOC("Interactively opens a file.")
{
View_Summary view = get_active_view(app, AccessAll);
view_end_ui_mode(app, &view);
begin_integrated_lister__file_system_list(app, "Open: ", activate_open, 0, &view);
begin_integrated_lister__file_system_list(app, "Open:", activate_open, 0, 0, &view);
}
static Lister_Activation_Code
@ -866,13 +905,48 @@ CUSTOM_DOC("Opens the 4coder theme selector list.")
options[i].user_data = IntAsPtr(i);
}
begin_integrated_lister__ui_list(app,
"Select a theme: ",
activate_select_theme, 0,
"Select a theme:",
activate_select_theme, 0, 0,
options, theme_count,
&view);
end_temp_memory(temp);
}
////////////////////////////////
static Lister_Activation_Code
activate_command(Application_Links *app, View_Summary *view, String text_field,
void *user_data, bool32 activated_by_mouse){
if (user_data != 0){
Custom_Command_Function *command = (Custom_Command_Function*)user_data;
view_end_ui_mode(app, view);
command(app);
}
return(ListerActivation_Finished);
}
CUSTOM_COMMAND_SIG(command_lister)
CUSTOM_DOC("Opens an interactive list of all registered commands.")
{
Partition *arena = &global_part;
View_Summary view = get_active_view(app, AccessAll);
view_end_ui_mode(app, &view);
Temp_Memory temp = begin_temp_memory(arena);
int32_t option_count = command_one_past_last_id;
Lister_Option *options = push_array(arena, Lister_Option, option_count);
for (int32_t i = 0; i < command_one_past_last_id; i += 1){
options[i].string = fcoder_metacmd_table[i].name;
options[i].status = fcoder_metacmd_table[i].description;
options[i].user_data = fcoder_metacmd_table[i].proc;
}
begin_integrated_lister__basic_list(app, "Command:", activate_command, 0, 0,
options, option_count,
0,
&view);
end_temp_memory(temp);
}
// BOTTOM

View File

@ -1,74 +0,0 @@
/*
4coder_long_command_switch.cpp - Implementation of a command for executing uncommon commands
by inputting key words.
*/
// TOP
CUSTOM_COMMAND_SIG(execute_arbitrary_command)
CUSTOM_DOC("Execute a 'long form' command.")
{
Query_Bar bar = {0};
char space[1024];
bar.prompt = make_lit_string("Command: ");
bar.string = make_fixed_width_string(space);
if (!query_user_string(app, &bar)) return;
end_query_bar(app, &bar, 0);
if (match(bar.string, make_lit_string("toggle fullscreen"))){
toggle_fullscreen(app);
}
else if (match(bar.string, make_lit_string("load project"))){
load_project(app);
}
else if (match(bar.string, make_lit_string("open all code"))){
open_all_code(app);
}
else if (match(bar.string, make_lit_string("open all code recursive"))){
open_all_code_recursive(app);
}
else if(match(bar.string, make_lit_string("close all code"))){
close_all_code(app);
}
else if (match(bar.string, make_lit_string("dos lines")) ||
match(bar.string, make_lit_string("dosify"))){
eol_dosify(app);
}
else if (match(bar.string, make_lit_string("nix lines")) ||
match(bar.string, make_lit_string("nixify"))){
eol_nixify(app);
}
else if (match(bar.string, make_lit_string("remap"))){
remap_interactive(app);
}
else if (match(bar.string, make_lit_string("new project"))){
setup_new_project(app);
}
else if (match(bar.string, make_lit_string("new bat"))){
setup_build_bat(app);
}
else if (match(bar.string, make_lit_string("new sh"))){
setup_build_sh(app);
}
else if (match(bar.string, make_lit_string("new scripts"))){
setup_build_bat_and_sh(app);
}
else if (match(bar.string, make_lit_string("delete file"))){
delete_file_query(app);
}
else if (match(bar.string, make_lit_string("rename file"))){
rename_file_query(app);
}
else if (match(bar.string, make_lit_string("mkdir"))){
make_directory_query(app);
}
else if (match(bar.string, make_lit_string("reload themes"))){
reload_themes(app);
}
else{
print_message(app, literal("unrecognized command\n"));
}
}
// BOTTOM

View File

@ -195,7 +195,7 @@ view_get_lister_state(View_Summary *view){
}
static void
init_lister_state(Lister_State *state, Heap *heap){
init_lister_state(Lister_State *state, Heap *heap, int32_t arena_size){
state->initialized = true;
state->hot_user_data = 0;
state->item_index = 0;
@ -204,11 +204,16 @@ init_lister_state(Lister_State *state, Heap *heap){
if (state->arena.base != 0){
heap_free(heap, state->arena.base);
}
int32_t arena_size = (64 << 10);
state->arena = make_part(heap_allocate(heap, arena_size), arena_size);
memset(&state->lister, 0, sizeof(state->lister));
}
static void
init_lister_state(Lister_State *state, Heap *heap){
int32_t arena_size = (64 << 10);
init_lister_state(state, heap, arena_size);
}
UI_QUIT_FUNCTION(lister_quit_function){
Lister_State *state = view_get_lister_state(&view);
state->initialized = false;
@ -261,13 +266,13 @@ lister_update_ui(Application_Links *app, Partition *scratch, View_Summary *view,
state->raw_item_index = -1;
int32_t node_count = state->lister.options.count;
Lister_Option_Node_Ptr_Array exact_matches = {0};
exact_matches.node_ptrs = push_array(scratch, Lister_Option_Node*, 1);
Lister_Option_Node_Ptr_Array before_extension_matches = {0};
before_extension_matches.node_ptrs = push_array(scratch, Lister_Option_Node*, node_count);
Lister_Option_Node_Ptr_Array substring_matches = {0};
substring_matches.node_ptrs = push_array(scratch, Lister_Option_Node*, node_count);
for (Lister_Option_Node *node = state->lister.options.first;
Lister_Node_Ptr_Array exact_matches = {0};
exact_matches.node_ptrs = push_array(scratch, Lister_Node*, 1);
Lister_Node_Ptr_Array before_extension_matches = {0};
before_extension_matches.node_ptrs = push_array(scratch, Lister_Node*, node_count);
Lister_Node_Ptr_Array substring_matches = {0};
substring_matches.node_ptrs = push_array(scratch, Lister_Node*, node_count);
for (Lister_Node *node = state->lister.options.first;
node != 0;
node = node->next){
if (state->lister.key_string.size == 0 ||
@ -286,7 +291,7 @@ lister_update_ui(Application_Links *app, Partition *scratch, View_Summary *view,
}
}
Lister_Option_Node_Ptr_Array node_ptr_arrays[] = {
Lister_Node_Ptr_Array node_ptr_arrays[] = {
exact_matches,
before_extension_matches,
substring_matches,
@ -297,11 +302,10 @@ lister_update_ui(Application_Links *app, Partition *scratch, View_Summary *view,
UI_Item *hot_item = 0;
UI_Item *hovered_item = 0;
int32_t item_index_counter = 0;
int32_t raw_index_counter = 0;
for (int32_t array_index = 0; array_index < ArrayCount(node_ptr_arrays); array_index += 1){
Lister_Option_Node_Ptr_Array node_ptr_array = node_ptr_arrays[array_index];
Lister_Node_Ptr_Array node_ptr_array = node_ptr_arrays[array_index];
for (int32_t node_index = 0; node_index < node_ptr_array.count; node_index += 1){
Lister_Option_Node *node = node_ptr_array.node_ptrs[node_index];
Lister_Node *node = node_ptr_array.node_ptrs[node_index];
i32_Rect item_rect = {0};
item_rect.x0 = x0;
@ -331,15 +335,14 @@ lister_update_ui(Application_Links *app, Partition *scratch, View_Summary *view,
item_rect.y0 <= my && my < item_rect.y1){
hovered_item = item_ptr;
}
if (item_index_counter == state->item_index){
if (state->item_index == item_index_counter){
highlighted_item = item_ptr;
state->raw_item_index = raw_index_counter;
state->raw_item_index = node->raw_index;
}
item_index_counter += 1;
if (node->user_data == state->hot_user_data && hot_item != 0){
hot_item = item_ptr;
}
raw_index_counter += 1;
}
}
state->option_item_count = item_index_counter;
@ -400,11 +403,16 @@ lister_prealloced(String string){
}
static void
lister_first_init(Lister *lister){
lister_first_init(Partition *arena, Lister *lister, void *user_data, int32_t user_data_size){
memset(lister, 0, sizeof(*lister));
lister->query = make_fixed_width_string(lister->query_space);
lister->text_field = make_fixed_width_string(lister->text_field_space);
lister->key_string = make_fixed_width_string(lister->key_string_space);
if (user_data != 0){
lister->user_data = push_array(arena, char, user_data_size);
push_align(arena, 8);
memcpy(lister->user_data, user_data, user_data_size);
}
}
static void
@ -416,10 +424,11 @@ static void*
lister_add_item(Partition *arena, Lister *lister,
Lister_Prealloced_String string, Lister_Prealloced_String status,
void *user_data, int32_t extra_space){
Lister_Option_Node *node = push_array(arena, Lister_Option_Node, 1);
Lister_Node *node = push_array(arena, Lister_Node, 1);
node->string = string.string;
node->status = status.string;
node->user_data = user_data;
node->raw_index = lister->options.count;
zdll_push_back(lister->options.first, lister->options.last, node);
lister->options.count += 1;
void *result = push_array(arena, char, extra_space);
@ -461,7 +470,7 @@ static void*
lister_add_ui_item(Partition *arena, Lister *lister,
Lister_Prealloced_String string, int32_t index,
void *user_data, int32_t extra_space){
Lister_Option_Node *node = push_array(arena, Lister_Option_Node, 1);
Lister_Node *node = push_array(arena, Lister_Node, 1);
node->string = string.string;
node->index = index;
node->user_data = user_data;
@ -486,7 +495,7 @@ static void*
lister_get_user_data(Lister *lister, int32_t index){
if (0 <= index && index < lister->options.count){
int32_t counter = 0;
for (Lister_Option_Node *node = lister->options.first;
for (Lister_Node *node = lister->options.first;
node != 0;
node = node->next){
if (counter == index){
@ -526,8 +535,14 @@ lister_call_activate_handler(Application_Links *app, Partition *scratch, Heap *h
}
}break;
case ListerActivation_Continue:
{
view_start_ui_mode(app, view);
}break;
case ListerActivation_ContinueAndRefresh:
{
view_start_ui_mode(app, view);
state->item_index = 0;
lister_call_refresh_handler(app, &state->arena, lister);
lister_update_ui(app, scratch, view, state);

View File

@ -19,25 +19,26 @@ typedef Lister_Activation_Code Lister_Activation_Function_Type(Application_Links
typedef void Lister_Regenerate_List_Function_Type(Application_Links *app, Partition *arena, struct Lister *lister);
struct Lister_Option_Node{
Lister_Option_Node *next;
Lister_Option_Node *prev;
struct Lister_Node{
Lister_Node *next;
Lister_Node *prev;
String string;
union{
String status;
int32_t index;
};
void *user_data;
int32_t raw_index;
};
struct Lister_Option_List{
Lister_Option_Node *first;
Lister_Option_Node *last;
Lister_Node *first;
Lister_Node *last;
int32_t count;
};
struct Lister_Option_Node_Ptr_Array{
Lister_Option_Node **node_ptrs;
struct Lister_Node_Ptr_Array{
Lister_Node **node_ptrs;
int32_t count;
};
@ -83,6 +84,12 @@ struct Lister_State{
////////////////////////////////
struct Lister_Option{
char *string;
char *status;
void *user_data;
};
struct Lister_Fixed_Option{
char *string;
char *status;

View File

@ -553,6 +553,7 @@ lifetime_get_or_create_intersection_key(Heap *heap, Lifetime_Allocator *lifetime
new_key = lifetime_allocator->free_keys.first;
}
zdll_remove(lifetime_allocator->free_keys.first, lifetime_allocator->free_keys.last, new_key);
memset(new_key, 0, sizeof(*new_key));
// Add to Objects
Lifetime_Object **object_ptr = object_ptr_array;

View File

@ -323,6 +323,7 @@ do_render_file_view(System_Functions *system, View *view, Models *models, GUI_Sc
i32 x = (i32)inner.x0 + 3;
i32 y = (i32)inner.y0 + line_height/2 - 1;
x = ceil32(draw_string(system, target, font_id, item->option.string, x, y, text_color));
x += (i32)font_string_width(system, target, font_id, " ");
draw_string(system, target, font_id, item->option.status, x, y, pop_color);
}break;
@ -335,6 +336,7 @@ do_render_file_view(System_Functions *system, View *view, Models *models, GUI_Sc
i32 x = (i32)item_rect.x0;
i32 y = (i32)item_rect.y0 + 2;
x = ceil32(draw_string(system, target, font_id, item->text_field.query, x, y, text2_color));
x += (i32)font_string_width(system, target, font_id, " ");
draw_string(system, target, font_id, item->text_field.string, x, y, text1_color);
}break;

View File

@ -676,9 +676,6 @@ generate_remapping_code_and_data(){
// NOTE(allen): GLOBAL
begin_map(mappings, mapid_global, "The following bindings apply in all situations.");
bind(mappings, 'p', MDFR_CTRL, open_panel_vsplit);
bind(mappings, '_', MDFR_CTRL, open_panel_hsplit);
bind(mappings, 'P', MDFR_CTRL, close_panel);
bind(mappings, ',', MDFR_CTRL, change_active_panel);
bind(mappings, '<', MDFR_CTRL, change_active_panel_backwards);
@ -690,8 +687,6 @@ generate_remapping_code_and_data(){
bind(mappings, 'h', MDFR_CTRL, project_go_to_root_directory);
bind(mappings, 'S', MDFR_CTRL, save_all_dirty_buffers);
bind(mappings, 'c', MDFR_ALT, open_color_tweaker);
bind(mappings, '.', MDFR_ALT, change_to_build_panel);
bind(mappings, ',', MDFR_ALT, close_build_panel);
bind(mappings, 'n', MDFR_ALT, goto_next_jump_no_skips_sticky);
@ -702,18 +697,11 @@ generate_remapping_code_and_data(){
bind(mappings, 'z', MDFR_ALT, execute_any_cli);
bind(mappings, 'Z', MDFR_ALT, execute_previous_cli);
bind(mappings, 'x', MDFR_ALT, execute_arbitrary_command);
bind(mappings, 'x', MDFR_ALT, command_lister);
bind(mappings, 'W', MDFR_ALT, show_scrollbar);
bind(mappings, 'w', MDFR_ALT, hide_scrollbar);
bind(mappings, 'b', MDFR_ALT, toggle_filebar);
bind(mappings, '@', MDFR_ALT, toggle_mouse);
bind(mappings, 'I', MDFR_CTRL, list_all_functions_current_buffer_lister);
bind(mappings, 'E', MDFR_ALT, exit_4coder);
bind(mappings, '+', MDFR_CTRL, increase_face_size);
bind(mappings, '-', MDFR_CTRL, decrease_face_size);
bind(mappings, key_f1, MDFR_NONE, project_fkey_command);
bind(mappings, key_f2, MDFR_NONE, project_fkey_command);
bind(mappings, key_f3, MDFR_NONE, project_fkey_command);
@ -786,7 +774,6 @@ generate_remapping_code_and_data(){
bind(mappings, 'g', MDFR_CTRL, goto_line);
bind(mappings, 'G', MDFR_CTRL, list_all_locations_of_selection);
bind(mappings, 'K', MDFR_CTRL, kill_buffer);
bind(mappings, 'l', MDFR_CTRL, toggle_line_wrap);
bind(mappings, 'L', MDFR_CTRL, duplicate_line);
bind(mappings, 'm', MDFR_CTRL, cursor_mark_swap);
bind(mappings, 'O', MDFR_CTRL, reopen);
@ -795,11 +782,9 @@ generate_remapping_code_and_data(){
bind(mappings, 'q', MDFR_ALT , query_replace_selection);
bind(mappings, 'r', MDFR_CTRL, reverse_search);
bind(mappings, 's', MDFR_CTRL, save);
bind(mappings, 's', MDFR_ALT , save_to_query);
bind(mappings, 't', MDFR_CTRL, search_identifier);
bind(mappings, 'T', MDFR_CTRL, list_all_locations_of_identifier);
bind(mappings, 'v', MDFR_CTRL, paste_and_indent);
bind(mappings, 'v', MDFR_ALT , toggle_virtual_whitespace);
bind(mappings, 'V', MDFR_CTRL, paste_next_and_indent);
bind(mappings, 'x', MDFR_CTRL, cut);
bind(mappings, 'y', MDFR_CTRL, redo);
@ -808,10 +793,9 @@ generate_remapping_code_and_data(){
bind(mappings, '1', MDFR_CTRL, view_buffer_other_panel);
bind(mappings, '2', MDFR_CTRL, swap_buffers_between_panels);
bind(mappings, '?', MDFR_CTRL, toggle_show_whitespace);
bind(mappings, '~', MDFR_CTRL, clean_all_lines);
bind(mappings, '\n', MDFR_NONE, newline_or_goto_position_sticky);
bind(mappings, '\n', MDFR_SHIFT, newline_or_goto_position_same_panel_sticky);
bind(mappings, '>', MDFR_CTRL, view_jump_list_with_lister);
bind(mappings, ' ', MDFR_SHIFT, write_character);
end_map(mappings);
@ -860,7 +844,6 @@ generate_remapping_code_and_data(){
bind(mappings, '1', MDFR_ALT, open_file_in_quotes);
bind(mappings, '2', MDFR_ALT, open_matching_file_cpp);
bind(mappings, '0', MDFR_CTRL, write_zero_struct);
bind(mappings, 'I', MDFR_CTRL, list_all_functions_current_buffer);
end_map(mappings);
@ -892,9 +875,6 @@ generate_remapping_code_and_data(){
// NOTE(allen): GLOBAL
begin_map(mappings, mapid_global, "The following bindings apply in all situations.");
bind(mappings, 'p', MDFR_CMND, open_panel_vsplit);
bind(mappings, '_', MDFR_CMND, open_panel_hsplit);
bind(mappings, 'P', MDFR_CMND, close_panel);
bind(mappings, ',', MDFR_CMND, change_active_panel);
bind(mappings, '<', MDFR_CMND, change_active_panel_backwards);
@ -906,8 +886,6 @@ generate_remapping_code_and_data(){
bind(mappings, 'h', MDFR_CMND, project_go_to_root_directory);
bind(mappings, 'S', MDFR_CMND, save_all_dirty_buffers);
bind(mappings, 'c', MDFR_CTRL, open_color_tweaker);
bind(mappings, '.', MDFR_CTRL, change_to_build_panel);
bind(mappings, ',', MDFR_CTRL, close_build_panel);
bind(mappings, 'n', MDFR_CTRL, goto_next_jump_sticky);
@ -918,18 +896,11 @@ generate_remapping_code_and_data(){
bind(mappings, 'z', MDFR_CTRL, execute_any_cli);
bind(mappings, 'Z', MDFR_CTRL, execute_previous_cli);
bind(mappings, 'x', MDFR_CTRL, execute_arbitrary_command);
bind(mappings, 'x', MDFR_CTRL, command_lister);
bind(mappings, 'W', MDFR_CTRL, show_scrollbar);
bind(mappings, 'w', MDFR_CTRL, hide_scrollbar);
bind(mappings, 'b', MDFR_CTRL, toggle_filebar);
bind(mappings, '@', MDFR_CTRL, toggle_mouse);
bind(mappings, 'I', MDFR_CMND, list_all_functions_current_buffer_lister);
bind(mappings, 'E', MDFR_CTRL, exit_4coder);
bind(mappings, '+', MDFR_CTRL, increase_face_size);
bind(mappings, '-', MDFR_CTRL, decrease_face_size);
bind(mappings, key_f1, MDFR_NONE, project_fkey_command);
bind(mappings, key_f2, MDFR_NONE, project_fkey_command);
bind(mappings, key_f3, MDFR_NONE, project_fkey_command);
@ -982,6 +953,9 @@ generate_remapping_code_and_data(){
bind(mappings, key_up, MDFR_CMND, seek_whitespace_up_end_line);
bind(mappings, key_down, MDFR_CMND, seek_whitespace_down_end_line);
bind(mappings, key_up, MDFR_ALT, move_line_up);
bind(mappings, key_down, MDFR_ALT, move_line_down);
bind(mappings, key_back, MDFR_CMND, backspace_word);
bind(mappings, key_del, MDFR_CMND, delete_word);
bind(mappings, key_back, MDFR_CTRL, snipe_token_or_word);
@ -1000,7 +974,6 @@ generate_remapping_code_and_data(){
bind(mappings, 'g', MDFR_CMND, goto_line);
bind(mappings, 'G', MDFR_CMND, list_all_locations_of_selection);
bind(mappings, 'K', MDFR_CMND, kill_buffer);
bind(mappings, 'l', MDFR_CMND, toggle_line_wrap);
bind(mappings, 'L', MDFR_CMND, duplicate_line);
bind(mappings, 'm', MDFR_CMND, cursor_mark_swap);
bind(mappings, 'O', MDFR_CMND, reopen);
@ -1008,11 +981,9 @@ generate_remapping_code_and_data(){
bind(mappings, 'Q', MDFR_CMND, query_replace_identifier);
bind(mappings, 'r', MDFR_CMND, reverse_search);
bind(mappings, 's', MDFR_CMND, save);
bind(mappings, 's', MDFR_CTRL, save_to_query);
bind(mappings, 't', MDFR_CMND, search_identifier);
bind(mappings, 'T', MDFR_CMND, list_all_locations_of_identifier);
bind(mappings, 'v', MDFR_CMND, paste_and_indent);
bind(mappings, 'v', MDFR_CTRL, toggle_virtual_whitespace);
bind(mappings, 'V', MDFR_CMND, paste_next_and_indent);
bind(mappings, 'x', MDFR_CMND, cut);
bind(mappings, 'y', MDFR_CMND, redo);
@ -1021,10 +992,9 @@ generate_remapping_code_and_data(){
bind(mappings, '1', MDFR_CMND, view_buffer_other_panel);
bind(mappings, '2', MDFR_CMND, swap_buffers_between_panels);
bind(mappings, '?', MDFR_CMND, toggle_show_whitespace);
bind(mappings, '~', MDFR_CMND, clean_all_lines);
bind(mappings, '\n', MDFR_NONE, newline_or_goto_position_sticky);
bind(mappings, '\n', MDFR_SHIFT, newline_or_goto_position_same_panel_sticky);
bind(mappings, '>', MDFR_CMND, view_jump_list_with_lister);
bind(mappings, ' ', MDFR_SHIFT, write_character);
end_map(mappings);
@ -1073,7 +1043,6 @@ generate_remapping_code_and_data(){
bind(mappings, '1', MDFR_CTRL, open_file_in_quotes);
bind(mappings, '2', MDFR_CTRL, open_matching_file_cpp);
bind(mappings, '0', MDFR_CMND, write_zero_struct);
bind(mappings, 'I', MDFR_CMND, list_all_functions_current_buffer);
end_map(mappings);

View File

@ -27,9 +27,6 @@ Long name commands that can be typed in after using the "long command" command f
\SECTION{mapid-global}
The following bindings apply in all situations.
\LIST
\ITEM \STYLE{code} <ctrl p> \END Create a new panel by vertically splitting the active panel.
\ITEM \STYLE{code} <ctrl _> \END Create a new panel by horizontally splitting the active panel.
\ITEM \STYLE{code} <ctrl P> \END Closes the currently active panel if it is not the only panel open.
\ITEM \STYLE{code} <ctrl ,> \END Change the currently active panel, moving to the panel with the next highest view_id.
\ITEM \STYLE{code} <ctrl <> \END Change the currently active panel, moving to the panel with the next lowest view_id.
\ITEM \STYLE{code} <ctrl n> \END Interactively creates a new file.
@ -39,7 +36,6 @@ The following bindings apply in all situations.
\ITEM \STYLE{code} <ctrl i> \END Interactively switch to an open buffer.
\ITEM \STYLE{code} <ctrl h> \END Changes 4coder's hot directory to the root directory of the currently loaded project. With no loaded project nothing hapepns.
\ITEM \STYLE{code} <ctrl S> \END Saves all buffers marked dirty (showing the '*' indicator).
\ITEM \STYLE{code} <alt c> \END Opens the 4coder theme selector list.
\ITEM \STYLE{code} <alt .> \END If the special build panel is open, makes the build panel the active panel.
\ITEM \STYLE{code} <alt ,> \END If the special build panel is open, closes it.
\ITEM \STYLE{code} <alt n> \END 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.
@ -48,14 +44,8 @@ The following bindings apply in all situations.
\ITEM \STYLE{code} <alt m> \END 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.
\ITEM \STYLE{code} <alt z> \END Queries for an output buffer name and system command, runs the system command as a CLI and prints the output to the specified buffer.
\ITEM \STYLE{code} <alt Z> \END If the command execute_any_cli has already been used, this will execute a CLI reusing the most recent buffer name and command.
\ITEM \STYLE{code} <alt x> \END Execute a 'long form' command.
\ITEM \STYLE{code} <alt W> \END Sets the current view to show it's scrollbar.
\ITEM \STYLE{code} <alt w> \END Sets the current view to hide it's scrollbar.
\ITEM \STYLE{code} <alt b> \END Toggles the visibility status of the current view's filebar.
\ITEM \STYLE{code} <alt @> \END Toggles the mouse suppression mode, see suppress_mouse and allow_mouse.
\ITEM \STYLE{code} <alt x> \END Opens an interactive list of all registered commands.
\ITEM \STYLE{code} <alt E> \END Attempts to close 4coder.
\ITEM \STYLE{code} <ctrl +> \END Increase the size of the face used by the current buffer.
\ITEM \STYLE{code} <ctrl -> \END Decrease the size of the face used by the current buffer.
\ITEM \STYLE{code} <f1> \END 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.
\ITEM \STYLE{code} <f2> \END 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.
\ITEM \STYLE{code} <f3> \END 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.
@ -118,7 +108,6 @@ The following bindings apply in general text files and most apply in code files,
\ITEM \STYLE{code} <ctrl g> \END Queries the user for a number, and jumps the cursor to the corresponding line.
\ITEM \STYLE{code} <ctrl G> \END Reads the string in the selected range and lists all exact case-sensitive mathces in all open buffers.
\ITEM \STYLE{code} <ctrl K> \END Kills the current buffer.
\ITEM \STYLE{code} <ctrl l> \END Toggles the current buffer's line wrapping status.
\ITEM \STYLE{code} <ctrl L> \END Create a copy of the line on which the cursor sits.
\ITEM \STYLE{code} <ctrl m> \END Swaps the position of the cursor and the mark.
\ITEM \STYLE{code} <ctrl O> \END Reopen the current buffer from the hard drive.
@ -127,21 +116,18 @@ The following bindings apply in general text files and most apply in code files,
\ITEM \STYLE{code} <alt q> \END Queries the user for a string, and incrementally replace every occurence of the string found in the selected range with the specified string.
\ITEM \STYLE{code} <ctrl r> \END Begins an incremental search up through the current buffer for a user specified string.
\ITEM \STYLE{code} <ctrl s> \END Saves the current buffer.
\ITEM \STYLE{code} <alt s> \END Queries the user for a name and saves the contents of the current buffer, altering the buffer's name too.
\ITEM \STYLE{code} <ctrl t> \END Begins an incremental search down through the current buffer for the word or token under the cursor.
\ITEM \STYLE{code} <ctrl T> \END Reads a token or word under the cursor and lists all exact case-sensitive mathces in all open buffers.
\ITEM \STYLE{code} <ctrl v> \END Paste from the top of clipboard and run auto-indent on the newly pasted text.
\ITEM \STYLE{code} <alt v> \END Toggles the current buffer's virtual whitespace status.
\ITEM \STYLE{code} <ctrl V> \END Paste the next item on the clipboard and run auto-indent on the newly pasted text.
\ITEM \STYLE{code} <ctrl x> \END Cut the text in the range from the cursor to the mark onto the clipboard.
\ITEM \STYLE{code} <ctrl y> \END Advances forewards through the undo history.
\ITEM \STYLE{code} <ctrl z> \END Advances backwards through the undo history.
\ITEM \STYLE{code} <ctrl 1> \END Set the other non-active panel to view the buffer that the active panel views, and switch to that panel.
\ITEM \STYLE{code} <ctrl 2> \END Set the other non-active panel to view the buffer that the active panel views, and switch to that panel.
\ITEM \STYLE{code} <ctrl ?> \END Toggles the current buffer's whitespace visibility status.
\ITEM \STYLE{code} <ctrl ~> \END Removes trailing whitespace from all lines in the current buffer.
\ITEM \STYLE{code} <return> \END If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor.
\ITEM \STYLE{code} <shift return> \END If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor_same_panel.
\ITEM \STYLE{code} <ctrl >> \END When executed on a buffer with jumps, creates a persistent lister for all the jumps
\ITEM \STYLE{code} <shift space> \END Inserts whatever character was used to trigger this command.
\END
\END
@ -179,7 +165,7 @@ The following commands only apply in files where the lexer (syntax highlighting)
\ITEM \STYLE{code} <alt 1> \END Reads a filename from surrounding '"' characters and attempts to open the corresponding file.
\ITEM \STYLE{code} <alt 2> \END If the current file is a *.cpp or *.h, attempts to open the corresponding *.h or *.cpp file in the other view.
\ITEM \STYLE{code} <ctrl 0> \END At the cursor, insert a ' = {0};'.
\ITEM \STYLE{code} <ctrl I> \END Creates a jump list of lines of the current buffer that appear to define or declare functions.
\ITEM \STYLE{code} <ctrl I> \END Creates a lister of locations that look like function definitions and declarations in the buffer.
\END
\END
\SECTION{default-lister-ui-map}

View File

@ -3,8 +3,24 @@
{
Features
{
[] Command Lister
[] Function Lister
[] fix the thing with thing in the lister thing with lister command things.
[] Cool Listers
{
[x] Command Lister
[x] Convert Jump List to Lister
[x] Function Lister
{
[x] Automatically Make Lister for Function List
[x] Make List For All Buffers
}
[] Snippet Lister
[] Turbo-Word-Complete Lister
[] Project Command Lister
[] Project FKey Remapper
[] Project Mode Lister
}
[] Clip-Box inside UI rects (or at least stop the string before it overflows.)
[] Automatically insert a space after the main name
[] Color Pallette Expansion For Keywords
[] Color Pallette Expansion For Paren/Brace Matching
[] Visible Markers