[dynamic bindings] fixing bugs; got it working
parent
8915bcceba
commit
fe8acba488
|
@ -139,15 +139,6 @@ map__init(Mapping *mapping, Command_Map *map, Command_Map_ID id){
|
|||
map->cmd_to_binding_trigger = make_table_u64_u64(&mapping->heap_wrapper, 100);
|
||||
}
|
||||
|
||||
function Command_Map*
|
||||
mapping_begin_new_map(Mapping *mapping){
|
||||
Command_Map *map = mapping__alloc_map(mapping);
|
||||
map__init(mapping, map, mapping->id_counter);
|
||||
mapping->id_counter += 1;
|
||||
table_insert(&mapping->id_to_map, map->id, (u64)PtrAsInt(map));
|
||||
return(map);
|
||||
}
|
||||
|
||||
function Command_Map*
|
||||
mapping_get_map(Mapping *mapping, Command_Map_ID id){
|
||||
Command_Map *result = 0;
|
||||
|
@ -175,7 +166,7 @@ mapping_get_or_make_map(Mapping *mapping, Command_Map_ID id){
|
|||
if (result == 0){
|
||||
result = mapping__alloc_map(mapping);
|
||||
map__init(mapping, result, id);
|
||||
table_insert(&mapping->id_to_map, result->id, (u64)PtrAsInt(result));
|
||||
table_insert(&mapping->id_to_map, id, (u64)PtrAsInt(result));
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
|
|
@ -1617,7 +1617,7 @@ load_config_and_apply(Application_Links *app, Arena *out_arena, Config_Data *con
|
|||
}
|
||||
|
||||
// Apply config
|
||||
setup_built_in_mapping(app, config->mapping, &framework_mapping, mapid_global, mapid_file, mapid_code);
|
||||
//setup_built_in_mapping(app, config->mapping, &framework_mapping, mapid_global, mapid_file, mapid_code);
|
||||
change_mode(app, config->mode);
|
||||
global_set_setting(app, GlobalSetting_LAltLCtrlIsAltGr, config->lalt_lctrl_is_altgr);
|
||||
|
||||
|
|
|
@ -25,11 +25,15 @@ custom_layer_init(Application_Links *app){
|
|||
// NOTE(allen): default hooks and command maps
|
||||
set_all_default_hooks(app);
|
||||
mapping_init(tctx, &framework_mapping);
|
||||
String_ID global_map_id = vars_save_string_lit("keys_global");
|
||||
String_ID file_map_id = vars_save_string_lit("keys_file");
|
||||
String_ID code_map_id = vars_save_string_lit("keys_code");
|
||||
#if OS_MAC
|
||||
setup_mac_mapping(&framework_mapping, mapid_global, mapid_file, mapid_code);
|
||||
setup_mac_mapping(&framework_mapping, global_map_id, file_map_id, code_map_id);
|
||||
#else
|
||||
setup_default_mapping(&framework_mapping, mapid_global, mapid_file, mapid_code);
|
||||
setup_default_mapping(&framework_mapping, global_map_id, file_map_id, code_map_id);
|
||||
#endif
|
||||
setup_essential_mapping(&framework_mapping, global_map_id, file_map_id, code_map_id);
|
||||
}
|
||||
|
||||
#endif //FCODER_DEFAULT_BINDINGS
|
||||
|
|
|
@ -569,6 +569,31 @@ CUSTOM_DOC("Clear the theme list")
|
|||
|
||||
////////////////////////////////
|
||||
|
||||
function void
|
||||
setup_essential_mapping(Mapping *mapping, i64 global_id, i64 file_id, i64 code_id){
|
||||
MappingScope();
|
||||
SelectMapping(mapping);
|
||||
|
||||
SelectMap(global_id);
|
||||
BindCore(default_startup, CoreCode_Startup);
|
||||
BindCore(default_try_exit, CoreCode_TryExit);
|
||||
BindCore(clipboard_record_clip, CoreCode_NewClipboardContents);
|
||||
BindMouseWheel(mouse_wheel_scroll);
|
||||
BindMouseWheel(mouse_wheel_change_face_size, KeyCode_Control);
|
||||
|
||||
SelectMap(file_id);
|
||||
ParentMap(global_id);
|
||||
BindTextInput(write_text_input);
|
||||
BindMouse(click_set_cursor_and_mark, MouseCode_Left);
|
||||
BindMouseRelease(click_set_cursor, MouseCode_Left);
|
||||
BindCore(click_set_cursor_and_mark, CoreCode_ClickActivateView);
|
||||
BindMouseMove(click_set_cursor_if_lbutton);
|
||||
|
||||
SelectMap(code_id);
|
||||
ParentMap(file_id);
|
||||
BindTextInput(write_text_and_auto_indent);
|
||||
}
|
||||
|
||||
function void
|
||||
default_4coder_initialize(Application_Links *app, String_Const_u8_Array file_names,
|
||||
i32 override_font_size, b32 override_hinting){
|
||||
|
@ -589,6 +614,26 @@ default_4coder_initialize(Application_Links *app, String_Const_u8_Array file_nam
|
|||
|
||||
load_config_and_apply(app, &global_config_arena, &global_config, override_font_size, override_hinting);
|
||||
|
||||
String_Const_u8 bindings_file_name = string_u8_litexpr("bindings.4coder");
|
||||
if (string_match(global_config.mapping, string_u8_litexpr("mac-default"))){
|
||||
bindings_file_name = string_u8_litexpr("mac-bindings.4coder");
|
||||
}
|
||||
else if (OS_MAC && string_match(global_config.mapping, string_u8_litexpr("choose"))){
|
||||
bindings_file_name = string_u8_litexpr("mac-bindings.4coder");
|
||||
}
|
||||
|
||||
// TODO(allen): cleanup
|
||||
String_ID global_map_id = vars_save_string_lit("keys_global");
|
||||
String_ID file_map_id = vars_save_string_lit("keys_file");
|
||||
String_ID code_map_id = vars_save_string_lit("keys_code");
|
||||
|
||||
if (dynamic_binding_load_from_file(app, &framework_mapping, bindings_file_name)){
|
||||
setup_essential_mapping(&framework_mapping, global_map_id, file_map_id, code_map_id);
|
||||
}
|
||||
else{
|
||||
setup_built_in_mapping(app, global_config.mapping, &framework_mapping, global_map_id, file_map_id, code_map_id);
|
||||
}
|
||||
|
||||
// open command line files
|
||||
Scratch_Block scratch(app);
|
||||
String_Const_u8 hot_directory = push_hot_directory(app, scratch);
|
||||
|
@ -987,7 +1032,7 @@ default_input_handler_init(Application_Links *app, Arena *arena){
|
|||
|
||||
View_Context ctx = view_current_context(app, view);
|
||||
ctx.mapping = &framework_mapping;
|
||||
ctx.map_id = mapid_global;
|
||||
ctx.map_id = vars_save_string_lit("keys_global");
|
||||
view_alter_context(app, view, &ctx);
|
||||
}
|
||||
|
||||
|
@ -999,12 +1044,12 @@ default_get_map_id(Application_Links *app, View_ID view){
|
|||
Command_Map_ID *result_ptr = scope_attachment(app, buffer_scope, buffer_map_id, Command_Map_ID);
|
||||
if (result_ptr != 0){
|
||||
if (*result_ptr == 0){
|
||||
*result_ptr = mapid_file;
|
||||
*result_ptr = vars_save_string_lit("keys_file");
|
||||
}
|
||||
result = *result_ptr;
|
||||
}
|
||||
else{
|
||||
result = mapid_global;
|
||||
result = vars_save_string_lit("keys_global");
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
|
|
@ -28,9 +28,11 @@ CUSTOM_ID(attachment, attachment_tokens);
|
|||
|
||||
////////////////////////////////
|
||||
|
||||
#if 0
|
||||
CUSTOM_ID(command_map, mapid_global);
|
||||
CUSTOM_ID(command_map, mapid_file);
|
||||
CUSTOM_ID(command_map, mapid_code);
|
||||
#endif
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
|
|
|
@ -772,7 +772,10 @@ BUFFER_HOOK_SIG(default_begin_buffer){
|
|||
}
|
||||
}
|
||||
|
||||
Command_Map_ID map_id = (treat_as_code)?(mapid_code):(mapid_file);
|
||||
String_ID file_map_id = vars_save_string_lit("keys_file");
|
||||
String_ID code_map_id = vars_save_string_lit("keys_code");
|
||||
|
||||
Command_Map_ID map_id = (treat_as_code)?(code_map_id):(file_map_id);
|
||||
Managed_Scope scope = buffer_get_managed_scope(app, buffer_id);
|
||||
Command_Map_ID *map_id_ptr = scope_attachment(app, scope, buffer_map_id, Command_Map_ID);
|
||||
*map_id_ptr = map_id;
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
#include "4coder_draw.cpp"
|
||||
#include "4coder_font_helper.cpp"
|
||||
#include "4coder_config.cpp"
|
||||
#include "4coder_dynamic_bindings.cpp"
|
||||
#include "4coder_default_framework.cpp"
|
||||
#include "4coder_clipboard.cpp"
|
||||
#include "4coder_lister_base.cpp"
|
||||
|
|
|
@ -10,9 +10,6 @@ setup_default_mapping(Mapping *mapping, i64 global_id, i64 file_id, i64 code_id)
|
|||
SelectMapping(mapping);
|
||||
|
||||
SelectMap(global_id);
|
||||
BindCore(default_startup, CoreCode_Startup);
|
||||
BindCore(default_try_exit, CoreCode_TryExit);
|
||||
BindCore(clipboard_record_clip, CoreCode_NewClipboardContents);
|
||||
Bind(keyboard_macro_start_recording , KeyCode_U, KeyCode_Control);
|
||||
Bind(keyboard_macro_finish_recording, KeyCode_U, KeyCode_Control, KeyCode_Shift);
|
||||
Bind(keyboard_macro_replay, KeyCode_U, KeyCode_Alt);
|
||||
|
@ -56,16 +53,8 @@ setup_default_mapping(Mapping *mapping, i64 global_id, i64 file_id, i64 code_id)
|
|||
Bind(project_fkey_command, KeyCode_F14);
|
||||
Bind(project_fkey_command, KeyCode_F15);
|
||||
Bind(project_fkey_command, KeyCode_F16);
|
||||
BindMouseWheel(mouse_wheel_scroll);
|
||||
BindMouseWheel(mouse_wheel_change_face_size, KeyCode_Control);
|
||||
|
||||
SelectMap(file_id);
|
||||
ParentMap(global_id);
|
||||
BindTextInput(write_text_input);
|
||||
BindMouse(click_set_cursor_and_mark, MouseCode_Left);
|
||||
BindMouseRelease(click_set_cursor, MouseCode_Left);
|
||||
BindCore(click_set_cursor_and_mark, CoreCode_ClickActivateView);
|
||||
BindMouseMove(click_set_cursor_if_lbutton);
|
||||
Bind(delete_char, KeyCode_Delete);
|
||||
Bind(backspace_char, KeyCode_Backspace);
|
||||
Bind(move_up, KeyCode_Up);
|
||||
|
@ -126,7 +115,6 @@ setup_default_mapping(Mapping *mapping, i64 global_id, i64 file_id, i64 code_id)
|
|||
|
||||
SelectMap(code_id);
|
||||
ParentMap(file_id);
|
||||
BindTextInput(write_text_and_auto_indent);
|
||||
Bind(move_left_alpha_numeric_boundary, KeyCode_Left, KeyCode_Control);
|
||||
Bind(move_right_alpha_numeric_boundary, KeyCode_Right, KeyCode_Control);
|
||||
Bind(move_left_alpha_numeric_or_camel_boundary, KeyCode_Left, KeyCode_Alt);
|
||||
|
|
|
@ -0,0 +1,129 @@
|
|||
/*
|
||||
4coder_dynamic_bindings.cpp - Dynamic Bindings
|
||||
*/
|
||||
|
||||
// TOP
|
||||
|
||||
function Key_Code
|
||||
dynamic_binding_key_code_from_string(String_Const_u8 key_string){
|
||||
Key_Code result = 0;
|
||||
for (i32 i = 1; i < KeyCode_COUNT; i += 1){
|
||||
String_Const_u8 str = SCu8(key_code_name[i]);
|
||||
if (string_match(str, key_string)){
|
||||
result = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
function b32
|
||||
dynamic_binding_load_from_file(Application_Links *app, Mapping *mapping, String_Const_u8 filename){
|
||||
b32 result = false;
|
||||
|
||||
Scratch_Block scratch(app);
|
||||
|
||||
String_Const_u8 filename_copied = push_string_copy(scratch, filename);
|
||||
FILE *file = open_file_try_current_path_then_binary_path(app, (char*)filename_copied.str);
|
||||
if (file != 0){
|
||||
Data data = dump_file_handle(scratch, file);
|
||||
Config *parsed = config_from_text(app, scratch, filename, SCu8(data));
|
||||
fclose(file);
|
||||
|
||||
if (parsed != 0){
|
||||
result = true;
|
||||
|
||||
Thread_Context* tctx = get_thread_context(app);
|
||||
mapping_release(tctx, mapping);
|
||||
mapping_init(tctx, mapping);
|
||||
MappingScope();
|
||||
SelectMapping(mapping);
|
||||
|
||||
for (Config_Assignment *assignment = parsed->first;
|
||||
assignment != 0;
|
||||
assignment = assignment->next){
|
||||
Config_LValue *l = assignment->l;
|
||||
if (l != 0 && l->index == 0){
|
||||
Config_Get_Result rvalue = config_evaluate_rvalue(parsed, assignment, assignment->r);
|
||||
if (rvalue.type == ConfigRValueType_Compound){
|
||||
String_Const_u8 map_name = l->identifier;
|
||||
String_ID map_name_id = vars_save_string(map_name);
|
||||
|
||||
SelectMap(map_name_id);
|
||||
|
||||
|
||||
Config_Compound *compound = rvalue.compound;
|
||||
|
||||
Config_Get_Result_List list = typed_compound_array_reference_list(scratch, parsed, compound);
|
||||
for (Config_Get_Result_Node *node = list.first; node != 0; node = node->next){
|
||||
Config_Compound *src = node->result.compound;
|
||||
String_Const_u8 cmd_string = {0};
|
||||
String_Const_u8 key_string = {0};
|
||||
String_Const_u8 mod_string[9] = {0};
|
||||
|
||||
if (!config_compound_string_member(parsed, src, "cmd", 0, &cmd_string)){
|
||||
config_add_error(scratch, parsed, node->result.pos, "Command string is required in binding");
|
||||
goto finish_map;
|
||||
}
|
||||
|
||||
if (!config_compound_string_member(parsed, src, "key", 1, &key_string)){
|
||||
config_add_error(scratch, parsed, node->result.pos, "Key string is required in binding");
|
||||
goto finish_map;
|
||||
}
|
||||
|
||||
for (i32 mod_idx = 0; mod_idx < ArrayCount(mod_string); mod_idx += 1){
|
||||
String_Const_u8 str = push_stringf(scratch, "mod_%i", mod_idx);
|
||||
if (config_compound_string_member(parsed, src, str, 2 + mod_idx, &mod_string[mod_idx])){
|
||||
// NOTE(rjf): No-Op
|
||||
}
|
||||
}
|
||||
|
||||
// NOTE(rjf): Map read in successfully.
|
||||
{
|
||||
// NOTE(rjf): Find command.
|
||||
Command_Metadata *command = get_command_metadata_from_name(cmd_string);
|
||||
|
||||
// NOTE(rjf): Find keycode.
|
||||
Key_Code keycode = dynamic_binding_key_code_from_string(key_string);
|
||||
|
||||
// NOTE(rjf): Find mods.
|
||||
i32 mod_count = 0;
|
||||
Key_Code mods[ArrayCount(mod_string)] = {0};
|
||||
for (i32 i = 0; i < ArrayCount(mod_string); i += 1){
|
||||
if (mod_string[i].str){
|
||||
mods[mod_count] = dynamic_binding_key_code_from_string(mod_string[i]);
|
||||
mod_count += 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (keycode != 0 && command != 0){
|
||||
Input_Modifier_Set mods_set = { mods, mod_count, };
|
||||
map_set_binding(mapping, map, command->proc, InputEventKind_KeyStroke, keycode, &mods_set);
|
||||
}
|
||||
else{
|
||||
config_add_error(scratch, parsed, node->result.pos,
|
||||
(keycode != 0) ? "Invalid command" :
|
||||
(command != 0) ? "Invalid key":
|
||||
"Invalid command and key");
|
||||
}
|
||||
}
|
||||
|
||||
finish_map:;
|
||||
}
|
||||
|
||||
|
||||
if (parsed->errors.first != 0){
|
||||
String_Const_u8 error_text = config_stringize_errors(app, scratch, parsed);
|
||||
print_message(app, error_text);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
||||
// BOTTOM
|
||||
|
|
@ -31,6 +31,19 @@ get_command_metadata(Custom_Command_Function *func){
|
|||
return(result);
|
||||
}
|
||||
|
||||
function Command_Metadata*
|
||||
get_command_metadata_from_name(String_Const_u8 name){
|
||||
Command_Metadata *result = 0;
|
||||
Command_Metadata *candidate = fcoder_metacmd_table;
|
||||
for (i32 i = 0; i < ArrayCount(fcoder_metacmd_table); i += 1, candidate += 1){
|
||||
if (string_match(SCu8(candidate->name, candidate->name_len), name)){
|
||||
result = candidate;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
function Token_Array
|
||||
|
|
|
@ -10,9 +10,6 @@ setup_mac_mapping(Mapping *mapping, i64 global_id, i64 file_id, i64 code_id){
|
|||
SelectMapping(mapping);
|
||||
|
||||
SelectMap(global_id);
|
||||
BindCore(default_startup, CoreCode_Startup);
|
||||
BindCore(default_try_exit, CoreCode_TryExit);
|
||||
BindCore(clipboard_record_clip, CoreCode_NewClipboardContents);
|
||||
Bind(keyboard_macro_start_recording , KeyCode_U, KeyCode_Command);
|
||||
Bind(keyboard_macro_finish_recording, KeyCode_U, KeyCode_Command, KeyCode_Shift);
|
||||
Bind(keyboard_macro_replay, KeyCode_U, KeyCode_Control);
|
||||
|
@ -56,16 +53,8 @@ setup_mac_mapping(Mapping *mapping, i64 global_id, i64 file_id, i64 code_id){
|
|||
Bind(project_fkey_command, KeyCode_F15);
|
||||
Bind(project_fkey_command, KeyCode_F16);
|
||||
Bind(exit_4coder, KeyCode_F4, KeyCode_Alt);
|
||||
BindMouseWheel(mouse_wheel_scroll);
|
||||
BindMouseWheel(mouse_wheel_change_face_size, KeyCode_Command);
|
||||
|
||||
SelectMap(file_id);
|
||||
ParentMap(global_id);
|
||||
BindTextInput(write_text_input);
|
||||
BindMouse(click_set_cursor_and_mark, MouseCode_Left);
|
||||
BindMouseRelease(click_set_cursor, MouseCode_Left);
|
||||
BindCore(click_set_cursor_and_mark, CoreCode_ClickActivateView);
|
||||
BindMouseMove(click_set_cursor_if_lbutton);
|
||||
Bind(delete_char, KeyCode_Delete);
|
||||
Bind(backspace_char, KeyCode_Backspace);
|
||||
Bind(move_up, KeyCode_Up);
|
||||
|
@ -126,8 +115,6 @@ setup_mac_mapping(Mapping *mapping, i64 global_id, i64 file_id, i64 code_id){
|
|||
Bind(view_jump_list_with_lister, KeyCode_Period, KeyCode_Command, KeyCode_Shift);
|
||||
|
||||
SelectMap(code_id);
|
||||
ParentMap(file_id);
|
||||
BindTextInput(write_text_and_auto_indent);
|
||||
Bind(move_left_alpha_numeric_boundary, KeyCode_Left, KeyCode_Command);
|
||||
Bind(move_right_alpha_numeric_boundary, KeyCode_Right, KeyCode_Command);
|
||||
Bind(move_left_alpha_numeric_or_camel_boundary, KeyCode_Left, KeyCode_Control);
|
||||
|
|
|
@ -322,8 +322,8 @@ static Command_Metadata fcoder_metacmd_table[248] = {
|
|||
{ PROC_LINKS(execute_any_cli, 0), false, "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\\custom\\4coder_cli_command.cpp", 41, 22 },
|
||||
{ PROC_LINKS(execute_previous_cli, 0), false, "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\\custom\\4coder_cli_command.cpp", 41, 7 },
|
||||
{ PROC_LINKS(exit_4coder, 0), false, "exit_4coder", 11, "Attempts to close 4coder.", 25, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 844 },
|
||||
{ PROC_LINKS(goto_beginning_of_file, 0), false, "goto_beginning_of_file", 22, "Sets the cursor to the beginning of the file.", 45, "W:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2248 },
|
||||
{ PROC_LINKS(goto_end_of_file, 0), false, "goto_end_of_file", 16, "Sets the cursor to the end of the file.", 39, "W:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2256 },
|
||||
{ PROC_LINKS(goto_beginning_of_file, 0), false, "goto_beginning_of_file", 22, "Sets the cursor to the beginning of the file.", 45, "W:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2261 },
|
||||
{ PROC_LINKS(goto_end_of_file, 0), false, "goto_end_of_file", 16, "Sets the cursor to the end of the file.", 39, "W:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2269 },
|
||||
{ PROC_LINKS(goto_first_jump, 0), false, "goto_first_jump", 15, "If a buffer containing jump locations has been locked in, goes to the first jump in the buffer.", 95, "W:\\4ed\\code\\custom\\4coder_jump_sticky.cpp", 41, 525 },
|
||||
{ PROC_LINKS(goto_first_jump_same_panel_sticky, 0), false, "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\\custom\\4coder_jump_sticky.cpp", 41, 542 },
|
||||
{ PROC_LINKS(goto_jump_at_cursor, 0), false, "goto_jump_at_cursor", 19, "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\\custom\\4coder_jump_sticky.cpp", 41, 348 },
|
||||
|
@ -452,10 +452,10 @@ static Command_Metadata fcoder_metacmd_table[248] = {
|
|||
{ PROC_LINKS(save_to_query, 0), false, "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\\custom\\4coder_base_commands.cpp", 43, 1425 },
|
||||
{ PROC_LINKS(search, 0), false, "search", 6, "Begins an incremental search down through the current buffer for a user specified string.", 89, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1107 },
|
||||
{ PROC_LINKS(search_identifier, 0), false, "search_identifier", 17, "Begins an incremental search down through the current buffer for the word or token under the cursor.", 100, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1119 },
|
||||
{ PROC_LINKS(seek_beginning_of_line, 0), false, "seek_beginning_of_line", 22, "Seeks the cursor to the beginning of the visual line.", 53, "W:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2236 },
|
||||
{ PROC_LINKS(seek_beginning_of_textual_line, 0), false, "seek_beginning_of_textual_line", 30, "Seeks the cursor to the beginning of the line across all text.", 62, "W:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2224 },
|
||||
{ PROC_LINKS(seek_end_of_line, 0), false, "seek_end_of_line", 16, "Seeks the cursor to the end of the visual line.", 47, "W:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2242 },
|
||||
{ PROC_LINKS(seek_end_of_textual_line, 0), false, "seek_end_of_textual_line", 24, "Seeks the cursor to the end of the line across all text.", 56, "W:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2230 },
|
||||
{ PROC_LINKS(seek_beginning_of_line, 0), false, "seek_beginning_of_line", 22, "Seeks the cursor to the beginning of the visual line.", 53, "W:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2249 },
|
||||
{ PROC_LINKS(seek_beginning_of_textual_line, 0), false, "seek_beginning_of_textual_line", 30, "Seeks the cursor to the beginning of the line across all text.", 62, "W:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2237 },
|
||||
{ PROC_LINKS(seek_end_of_line, 0), false, "seek_end_of_line", 16, "Seeks the cursor to the end of the visual line.", 47, "W:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2255 },
|
||||
{ PROC_LINKS(seek_end_of_textual_line, 0), false, "seek_end_of_textual_line", 24, "Seeks the cursor to the end of the line across all text.", 56, "W:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2243 },
|
||||
{ PROC_LINKS(select_all, 0), false, "select_all", 10, "Puts the cursor at the top of the file, and the mark at the bottom of the file.", 79, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 541 },
|
||||
{ PROC_LINKS(select_next_scope_absolute, 0), false, "select_next_scope_absolute", 26, "Finds the first scope started by '{' after the cursor and puts the cursor and mark on the '{' and '}'.", 102, "W:\\4ed\\code\\custom\\4coder_scope_commands.cpp", 44, 57 },
|
||||
{ PROC_LINKS(select_next_scope_after_current, 0), false, "select_next_scope_after_current", 31, "If a scope is selected, find first scope that starts after the selected scope. Otherwise find the first scope that starts after the cursor.", 139, "W:\\4ed\\code\\custom\\4coder_scope_commands.cpp", 44, 66 },
|
||||
|
|
|
@ -56,7 +56,4 @@ buffer_lex_task = managed_id_declare(app, string_u8_litexpr("attachment"), strin
|
|||
buffer_wrap_lines = managed_id_declare(app, string_u8_litexpr("attachment"), string_u8_litexpr("buffer_wrap_lines"));
|
||||
sticky_jump_marker_handle = managed_id_declare(app, string_u8_litexpr("attachment"), string_u8_litexpr("sticky_jump_marker_handle"));
|
||||
attachment_tokens = managed_id_declare(app, string_u8_litexpr("attachment"), string_u8_litexpr("attachment_tokens"));
|
||||
mapid_global = managed_id_declare(app, string_u8_litexpr("command_map"), string_u8_litexpr("mapid_global"));
|
||||
mapid_file = managed_id_declare(app, string_u8_litexpr("command_map"), string_u8_litexpr("mapid_file"));
|
||||
mapid_code = managed_id_declare(app, string_u8_litexpr("command_map"), string_u8_litexpr("mapid_code"));
|
||||
}
|
||||
|
|
|
@ -0,0 +1,140 @@
|
|||
|
||||
keys_global = {
|
||||
{ "keyboard_macro_start_recording", "U", "Control" },
|
||||
{ "keyboard_macro_finish_recording", "U", "Control", "Shift" },
|
||||
{ "keyboard_macro_replay", "U", "Alt" },
|
||||
{ "change_active_panel", "Comma", "Control" },
|
||||
{ "change_active_panel_backwards", "Comma", "Control", "Shift" },
|
||||
{ "interactive_new", "N", "Control" },
|
||||
{ "interactive_open_or_new", "O", "Control" },
|
||||
{ "open_in_other", "O", "Alt" },
|
||||
{ "interactive_kill_buffer", "K", "Control" },
|
||||
{ "interactive_switch_buffer", "I", "Control" },
|
||||
{ "project_go_to_root_directory", "H", "Control" },
|
||||
{ "save_all_dirty_buffers", "S", "Control", "Shift" },
|
||||
{ "change_to_build_panel", "Period", "Alt" },
|
||||
{ "close_build_panel", "Comma", "Alt" },
|
||||
{ "goto_next_jump", "N", "Alt" },
|
||||
{ "goto_prev_jump", "N", "Alt", "Shift" },
|
||||
{ "build_in_build_panel", "M", "Alt" },
|
||||
{ "goto_first_jump", "M", "Alt", "Shift" },
|
||||
{ "toggle_filebar", "B", "Alt" },
|
||||
{ "execute_any_cli", "Z", "Alt" },
|
||||
{ "execute_previous_cli", "Z", "Alt", "Shift" },
|
||||
{ "command_lister", "X", "Alt" },
|
||||
{ "project_command_lister", "X", "Alt", "Shift" },
|
||||
{ "quick_swap_buffer", "BackwardSlash", "Alt" },
|
||||
{ "jump_to_last_point", "P", "Control" },
|
||||
{ "list_all_functions_current_buffer_lister", "I", "Control", "Shift" },
|
||||
{ "exit_4coder", "F4", "Alt" },
|
||||
{ "project_fkey_command", "F1" },
|
||||
{ "project_fkey_command", "F2" },
|
||||
{ "project_fkey_command", "F3" },
|
||||
{ "project_fkey_command", "F4" },
|
||||
{ "project_fkey_command", "F5" },
|
||||
{ "project_fkey_command", "F6" },
|
||||
{ "project_fkey_command", "F7" },
|
||||
{ "project_fkey_command", "F8" },
|
||||
{ "project_fkey_command", "F9" },
|
||||
{ "project_fkey_command", "F10" },
|
||||
{ "project_fkey_command", "F11" },
|
||||
{ "project_fkey_command", "F12" },
|
||||
{ "project_fkey_command", "F13" },
|
||||
{ "project_fkey_command", "F14" },
|
||||
{ "project_fkey_command", "F15" },
|
||||
{ "project_fkey_command", "F16" },
|
||||
};
|
||||
|
||||
keys_file = {
|
||||
{ "delete_char", "Delete" },
|
||||
{ "backspace_char", "Backspace" },
|
||||
{ "move_up", "Up" },
|
||||
{ "move_down", "Down" },
|
||||
{ "move_left", "Left" },
|
||||
{ "move_right", "Right" },
|
||||
{ "seek_end_of_line", "End" },
|
||||
{ "seek_beginning_of_line", "Home" },
|
||||
{ "page_up", "PageUp" },
|
||||
{ "page_down", "PageDown" },
|
||||
{ "goto_beginning_of_file", "PageUp", "Control" },
|
||||
{ "goto_end_of_file", "PageDown", "Control" },
|
||||
{ "move_up_to_blank_line_end", "Up", "Control" },
|
||||
{ "move_down_to_blank_line_end", "Down", "Control" },
|
||||
{ "move_left_whitespace_boundary", "Left", "Control" },
|
||||
{ "move_right_whitespace_boundary", "Right", "Control" },
|
||||
{ "move_line_up", "Up", "Alt" },
|
||||
{ "move_line_down", "Down", "Alt" },
|
||||
{ "backspace_alpha_numeric_boundary", "Backspace", "Control" },
|
||||
{ "delete_alpha_numeric_boundary", "Delete", "Control" },
|
||||
{ "snipe_backward_whitespace_or_token_boundary", "Backspace", "Alt" },
|
||||
{ "snipe_forward_whitespace_or_token_boundary", "Delete", "Alt" },
|
||||
{ "set_mark", "Space", "Control" },
|
||||
{ "replace_in_range", "A", "Control" },
|
||||
{ "copy", "C", "Control" },
|
||||
{ "delete_range", "D", "Control" },
|
||||
{ "delete_line", "D", "Control", "Shift" },
|
||||
{ "center_view", "E", "Control" },
|
||||
{ "left_adjust_view", "E", "Control", "Shift" },
|
||||
{ "search", "F", "Control" },
|
||||
{ "list_all_locations", "F", "Control", "Shift" },
|
||||
{ "list_all_substring_locations_case_insensitive", "F", "Alt" },
|
||||
{ "goto_line", "G", "Control" },
|
||||
{ "list_all_locations_of_selection", "G", "Control", "Shift" },
|
||||
{ "snippet_lister", "J", "Control" },
|
||||
{ "kill_buffer", "K", "Control", "Shift" },
|
||||
{ "duplicate_line", "L", "Control" },
|
||||
{ "cursor_mark_swap", "M", "Control" },
|
||||
{ "reopen", "O", "Control", "Shift" },
|
||||
{ "query_replace", "Q", "Control" },
|
||||
{ "query_replace_identifier", "Q", "Control", "Shift" },
|
||||
{ "query_replace_selection", "Q", "Alt" },
|
||||
{ "reverse_search", "R", "Control" },
|
||||
{ "save", "S", "Control" },
|
||||
{ "save_all_dirty_buffers", "S", "Control", "Shift" },
|
||||
{ "search_identifier", "T", "Control" },
|
||||
{ "list_all_locations_of_identifier", "T", "Control", "Shift" },
|
||||
{ "paste_and_indent", "V", "Control" },
|
||||
{ "paste_next_and_indent", "V", "Control", "Shift" },
|
||||
{ "cut", "X", "Control" },
|
||||
{ "redo", "Y", "Control" },
|
||||
{ "undo", "Z", "Control" },
|
||||
{ "view_buffer_other_panel", "1", "Control" },
|
||||
{ "swap_panels", "2", "Control" },
|
||||
{ "if_read_only_goto_position", "Return" },
|
||||
{ "if_read_only_goto_position_same_panel", "Return", "Shift" },
|
||||
{ "view_jump_list_with_lister", "Period", "Control", "Shift" },
|
||||
};
|
||||
|
||||
keys_code = {
|
||||
{ "move_left_alpha_numeric_boundary", "Left", "Control" },
|
||||
{ "move_right_alpha_numeric_boundary", "Right", "Control" },
|
||||
{ "move_left_alpha_numeric_or_camel_boundary", "Left", "Alt" },
|
||||
{ "move_right_alpha_numeric_or_camel_boundary", "Right", "Alt" },
|
||||
{ "comment_line_toggle", "Semicolon", "Control" },
|
||||
{ "word_complete", "Tab" },
|
||||
{ "auto_indent_range", "Tab", "Control" },
|
||||
{ "auto_indent_line_at_cursor", "Tab", "Shift" },
|
||||
{ "word_complete_drop_down", "Tab", "Shift", "Control" },
|
||||
{ "write_block", "R", "Alt" },
|
||||
{ "write_todo", "T", "Alt" },
|
||||
{ "write_note", "Y", "Alt" },
|
||||
{ "list_all_locations_of_type_definition", "D", "Alt" },
|
||||
{ "list_all_locations_of_type_definition_of_identifier", "T", "Alt", "Shift" },
|
||||
{ "open_long_braces", "LeftBracket", "Control" },
|
||||
{ "open_long_braces_semicolon", "LeftBracket", "Control", "Shift" },
|
||||
{ "open_long_braces_break", "RightBracket", "Control", "Shift" },
|
||||
{ "select_surrounding_scope", "LeftBracket", "Alt" },
|
||||
{ "select_surrounding_scope_maximal", "LeftBracket", "Alt", "Shift" },
|
||||
{ "select_prev_scope_absolute", "RightBracket", "Alt" },
|
||||
{ "select_prev_top_most_scope", "RightBracket", "Alt", "Shift" },
|
||||
{ "select_next_scope_absolute", "Quote", "Alt" },
|
||||
{ "select_next_scope_after_current", "Quote", "Alt", "Shift" },
|
||||
{ "place_in_scope", "ForwardSlash", "Alt" },
|
||||
{ "delete_current_scope", "Minus", "Alt" },
|
||||
{ "if0_off", "I", "Alt" },
|
||||
{ "open_file_in_quotes", "1", "Alt" },
|
||||
{ "open_matching_file_cpp", "2", "Alt" },
|
||||
{ "write_zero_struct", "0", "Control" },
|
||||
{ "jump_to_definition_at_cursor", "W", "Control" },
|
||||
};
|
||||
|
|
@ -0,0 +1,139 @@
|
|||
|
||||
keys_global = {
|
||||
{ "keyboard_macro_start_recording", "U", "Command" },
|
||||
{ "keyboard_macro_finish_recording", "U", "Command", "Shift" },
|
||||
{ "keyboard_macro_replay", "U", "Control" },
|
||||
{ "change_active_panel", "Comma", "Command" },
|
||||
{ "change_active_panel_backwards", "Comma", "Command", "Shift" },
|
||||
{ "interactive_new", "N", "Command" },
|
||||
{ "interactive_open_or_new", "O", "Command" },
|
||||
{ "open_in_other", "O", "Control" },
|
||||
{ "interactive_kill_buffer", "K", "Command" },
|
||||
{ "interactive_switch_buffer", "I", "Command" },
|
||||
{ "project_go_to_root_directory", "H", "Command" },
|
||||
{ "save_all_dirty_buffers", "S", "Command", "Shift" },
|
||||
{ "change_to_build_panel", "Period", "Control" },
|
||||
{ "close_build_panel", "Comma", "Control" },
|
||||
{ "goto_next_jump", "N", "Control" },
|
||||
{ "goto_prev_jump", "N", "Control", "Shift" },
|
||||
{ "build_in_build_panel", "M", "Control" },
|
||||
{ "goto_first_jump", "M", "Control", "Shift" },
|
||||
{ "toggle_filebar", "B", "Control" },
|
||||
{ "execute_any_cli", "Z", "Control" },
|
||||
{ "execute_previous_cli", "Z", "Control", "Shift" },
|
||||
{ "command_lister", "X", "Control" },
|
||||
{ "project_command_lister", "X", "Control", "Shift" },
|
||||
{ "quick_swap_buffer", "BackwardSlash", "Control" },
|
||||
{ "jump_to_last_point", "P", "Command" },
|
||||
{ "list_all_functions_current_buffer_lister", "I", "Command", "Shift" },
|
||||
{ "exit_4coder", "F4", "Alt" },
|
||||
{ "project_fkey_command", "F1" },
|
||||
{ "project_fkey_command", "F2" },
|
||||
{ "project_fkey_command", "F3" },
|
||||
{ "project_fkey_command", "F4" },
|
||||
{ "project_fkey_command", "F5" },
|
||||
{ "project_fkey_command", "F6" },
|
||||
{ "project_fkey_command", "F7" },
|
||||
{ "project_fkey_command", "F8" },
|
||||
{ "project_fkey_command", "F9" },
|
||||
{ "project_fkey_command", "F10" },
|
||||
{ "project_fkey_command", "F11" },
|
||||
{ "project_fkey_command", "F12" },
|
||||
{ "project_fkey_command", "F13" },
|
||||
{ "project_fkey_command", "F14" },
|
||||
{ "project_fkey_command", "F15" },
|
||||
{ "project_fkey_command", "F16" },
|
||||
};
|
||||
|
||||
keys_file = {
|
||||
{ "delete_char", "Delete" },
|
||||
{ "backspace_char", "Backspace" },
|
||||
{ "move_up", "Up" },
|
||||
{ "move_down", "Down" },
|
||||
{ "move_left", "Left" },
|
||||
{ "move_right", "Right" },
|
||||
{ "seek_end_of_line", "End" },
|
||||
{ "seek_beginning_of_line", "Home" },
|
||||
{ "page_up", "PageUp" },
|
||||
{ "page_down", "PageDown" },
|
||||
{ "goto_beginning_of_file", "PageUp", "Command" },
|
||||
{ "goto_end_of_file", "PageDown", "Command" },
|
||||
{ "move_up_to_blank_line_end", "Up", "Command" },
|
||||
{ "move_down_to_blank_line_end", "Down", "Command" },
|
||||
{ "move_left_whitespace_boundary", "Left", "Command" },
|
||||
{ "move_right_whitespace_boundary", "Right", "Command" },
|
||||
{ "move_line_up", "Up", "Alt" },
|
||||
{ "move_line_down", "Down", "Alt" },
|
||||
{ "backspace_alpha_numeric_boundary", "Backspace", "Command" },
|
||||
{ "delete_alpha_numeric_boundary", "Delete", "Command" },
|
||||
{ "snipe_backward_whitespace_or_token_boundary", "Backspace", "Control" },
|
||||
{ "snipe_forward_whitespace_or_token_boundary", "Delete", "Control" },
|
||||
{ "set_mark", "Space", "Command" },
|
||||
{ "replace_in_range", "A", "Command" },
|
||||
{ "copy", "C", "Command" },
|
||||
{ "delete_range", "D", "Command" },
|
||||
{ "delete_line", "D", "Command", "Shift" },
|
||||
{ "center_view", "E", "Command" },
|
||||
{ "left_adjust_view", "E", "Command", "Shift" },
|
||||
{ "search", "F", "Command" },
|
||||
{ "list_all_locations", "F", "Command", "Shift" },
|
||||
{ "list_all_substring_locations_case_insensitive", "F", "Control" },
|
||||
{ "goto_line", "G", "Command" },
|
||||
{ "list_all_locations_of_selection", "G", "Command", "Shift" },
|
||||
{ "snippet_lister", "J", "Command" },
|
||||
{ "kill_buffer", "K", "Command", "Shift" },
|
||||
{ "duplicate_line", "L", "Command" },
|
||||
{ "cursor_mark_swap", "M", "Command" },
|
||||
{ "reopen", "O", "Command", "Shift" },
|
||||
{ "query_replace", "Q", "Command" },
|
||||
{ "query_replace_identifier", "Q", "Command", "Shift" },
|
||||
{ "query_replace_selection", "Q", "Control" },
|
||||
{ "reverse_search", "R", "Command" },
|
||||
{ "save", "S", "Command" },
|
||||
{ "save_all_dirty_buffers", "S", "Command", "Shift" },
|
||||
{ "search_identifier", "T", "Command" },
|
||||
{ "list_all_locations_of_identifier", "T", "Command", "Shift" },
|
||||
{ "paste_and_indent", "V", "Command" },
|
||||
{ "paste_next_and_indent", "V", "Command", "Shift" },
|
||||
{ "cut", "X", "Command" },
|
||||
{ "redo", "Y", "Command" },
|
||||
{ "undo", "Z", "Command" },
|
||||
{ "view_buffer_other_panel", "1", "Command" },
|
||||
{ "swap_panels", "2", "Command" },
|
||||
{ "if_read_only_goto_position", "Return" },
|
||||
{ "if_read_only_goto_position_same_panel", "Return", "Shift" },
|
||||
{ "view_jump_list_with_lister", "Period", "Command", "Shift" },
|
||||
};
|
||||
|
||||
keys_code = {
|
||||
{ "move_left_alpha_numeric_boundary", "Left", "Command" },
|
||||
{ "move_right_alpha_numeric_boundary", "Right", "Command" },
|
||||
{ "move_left_alpha_numeric_or_camel_boundary", "Left", "Control" },
|
||||
{ "move_right_alpha_numeric_or_camel_boundary", "Right", "Control" },
|
||||
{ "comment_line_toggle", "Semicolon", "Command" },
|
||||
{ "word_complete", "Tab" },
|
||||
{ "auto_indent_range", "Tab", "Command" },
|
||||
{ "auto_indent_line_at_cursor", "Tab", "Shift" },
|
||||
{ "word_complete_drop_down", "Tab", "Shift", "Command" },
|
||||
{ "write_block", "R", "Control" },
|
||||
{ "write_todo", "T", "Control" },
|
||||
{ "write_note", "Y", "Control" },
|
||||
{ "list_all_locations_of_type_definition", "D", "Control" },
|
||||
{ "list_all_locations_of_type_definition_of_identifier", "T", "Control", "Shift" },
|
||||
{ "open_long_braces", "LeftBracket", "Command" },
|
||||
{ "open_long_braces_semicolon", "LeftBracket", "Command", "Shift" },
|
||||
{ "open_long_braces_break", "RightBracket", "Command", "Shift" },
|
||||
{ "select_surrounding_scope", "LeftBracket", "Control" },
|
||||
{ "select_surrounding_scope_maximal", "LeftBracket", "Control", "Shift" },
|
||||
{ "select_prev_scope_absolute", "RightBracket", "Control" },
|
||||
{ "select_prev_top_most_scope", "RightBracket", "Control", "Shift" },
|
||||
{ "select_next_scope_absolute", "Quote", "Control" },
|
||||
{ "select_next_scope_after_current", "Quote", "Control", "Shift" },
|
||||
{ "place_in_scope", "ForwardSlash", "Control" },
|
||||
{ "delete_current_scope", "Minus", "Control" },
|
||||
{ "if0_off", "I", "Control" },
|
||||
{ "open_file_in_quotes", "1", "Control" },
|
||||
{ "open_matching_file_cpp", "2", "Control" },
|
||||
{ "write_zero_struct", "0", "Command" },
|
||||
{ "jump_to_definition_at_cursor", "W", "Command" },
|
||||
};
|
Loading…
Reference in New Issue