diff options
Diffstat (limited to 'src/edit_globalmap.erl')
-rw-r--r-- | src/edit_globalmap.erl | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/src/edit_globalmap.erl b/src/edit_globalmap.erl new file mode 100644 index 0000000..8751f95 --- /dev/null +++ b/src/edit_globalmap.erl @@ -0,0 +1,126 @@ +%%%---------------------------------------------------------------------- +%%% File : edit_globalmap.erl +%%% Author : Luke Gorrie <luke@bluetail.com> +%%% Purpose : Global keymap +%%% Created : 23 Sep 2000 by Luke Gorrie <luke@bluetail.com> +%%%---------------------------------------------------------------------- + +-module(edit_globalmap). +-author('luke@bluetail.com'). + +-export([init/0]). + +%% Initialise global keymap +init() -> + Map = edit_keymap:new(global_map), + edit_keymap:bind_each(Map, bindings()), + edit_keymap:new(global_cx_map), + edit_keymap:bind_each(global_cx_map, cx_bindings()), + edit_keymap:new(minibuffer_map), + edit_keymap:bind_each(minibuffer_map, minibuffer_bindings()), + edit_keymap:new(term_escape_map), + edit_keymap:bind_each(term_escape_map, term_escape_bindings()), + edit_keymap:new(help_map), + edit_keymap:bind_each(help_map, help_bindings()), + edit_keymap:new(empty_keymap), + global_map. + +bindings() -> + [ + %% Motion + {"C-a", {edit_lib, beginning_of_line, []}}, + {"C-b", {edit_lib, backward_char, []}}, + {"C-e", {edit_lib, end_of_line, []}}, + {"C-f", {edit_lib, forward_char, []}}, + {"M-b", {edit_lib, backward_word, []}}, + {"M-f", {edit_lib, forward_word, []}}, + {"M-<", {edit_lib, start_of_buffer, []}}, + {"M->", {edit_lib, end_of_buffer, []}}, + {"C-n", {edit_lib, next_line, []}}, + {"C-p", {edit_lib, previous_line, []}}, + {"C-M-a", {edit_erlang, beginning_of_function, []}}, + {"C-v", {edit_lib, scroll_down, []}}, + {"M-v", {edit_lib, scroll_up, []}}, + {"C-l", {edit_lib, recenter, []}}, + %% Editing + {"C-h", {edit_lib, delete_char_backward, []}}, + {"C-?", {edit_lib, delete_char_backward, []}}, + {"C-d", {edit_lib, delete_char_forward, []}}, + {"M-d", {edit_lib, delete_word_forward, []}}, + {"C-k", {edit_lib, kill_line, []}}, + {"C-w", {edit_lib, kill_region, [true]}}, + {"M-w", {edit_lib, kill_region, [false]}}, + {"C-y", {edit_lib, yank, []}}, + {"C-o", {edit_lib, open_line, []}}, + {"C-_", {edit_lib, undo, []}}, + {"C-/", {edit_lib, undo, []}}, + {"C-u", {edit_lib, undo, []}}, + %% Searching + {"C-s", {edit_lib, search, [forward]}}, + {"C-r", {edit_lib, search, [backward]}}, + {"C-M-s", {edit_lib, regexp_search, [forward]}}, + {"C-M-r", {edit_lib, regexp_search, [backward]}}, + %% Misc + {"C-@", {edit_lib, set_mark, []}}, + {"M-!", {edit_lib, unix_command, []}}, + {"C-t", {edit_lib, printf, []}}, + {"M-:", {edit_eval, eval_expression, []}}, + {"M-x", {edit_extended, execute_extended_command, []}}, + {"C-g", {edit_lib, abort, []}}, + %% Keymaps + {"M-[", {keymap, term_escape_map}}, + {"C-x", {keymap, global_cx_map}}, + %% Help + {"M-h", {keymap, help_map}}, + %% self insert commands (\r becomes \n) + {$\r, {edit_lib, self_insert_command, [$\n]}} + | [{Ch, {edit_lib, self_insert_command, [Ch]}} || Ch <- self_inserts()] + ]. + +%% ESC [ <key> - for arrows etc +term_escape_bindings() -> + [{"A", {edit_lib, previous_line, []}}, + {"B", {edit_lib, next_line, []}}, + {"C", {edit_lib, forward_char, []}}, + {"D", {edit_lib, backward_char, []}}]. + +%% Bindings after C-x prefix +cx_bindings() -> + [{"C-x", {edit_lib, exchange_point_and_mark, []}}, + {"C-c", {edit_lib, quit, []}}, + {"C-f", {edit_file, find_file, []}}, + {"C-s", {edit_file, save_file, []}}, + {"C-m", {edit_eval, interactive_eval, []}}, + {"i", {edit_eval, erlang_interaction_mode, []}}, + {"f", {edit_lib, fundamental_mode, []}}, + {"r", {edit_eval, back_to_start, []}}, + {"b", {edit_lib, switch_to_buffer, []}}, + {"k", {edit_lib, kill_buffer, []}}, + {"h", {edit_lib, mark_whole_buffer, []}}, + {"o", {edit_lib, next_window, []}}, + {"0", {edit_lib, delete_window, []}}, + {"1", {edit_lib, delete_other_windows, []}}, + {"2", {edit_lib, split_window_vertically, []}}, +% {"e", {edit_erlang, erlang_mode, []}}, + {"d", {edit_lib, buffer_cord_info, []}} + ]. + +minibuffer_bindings() -> + [{"C-m", {edit_extended, take_argument, []}}, + {"C-g", {edit_extended, abort, []}}, + {"C-i", {edit_complete, complete, []}}, + %% generic history + {"M-p", {edit_extended, history_move, [up]}}, + {"M-n", {edit_extended, history_move, [down]}}, + {"M-r", {edit_extended, history_search, []}} + ]. + +help_bindings() -> + [{"k", {edit_help, describe_key, []}}, + {"s", {edit_help, find_source, []}}]. + +self_inserts() -> + %% HACK + "\n\t" ++ lists:seq(32, 126). + %%"\r\n\t" ++ (lists:seq(32, 126) -- [127]). + |