--- emacs_keymap.c 2009-01-04 19:32:32.000000000 +0000 +++ emacs_keymap.c 2009-07-19 08:23:32.796875000 +0100 @@ -417,7 +417,7 @@ { ISFUNC, rl_do_lowercase_version }, /* Meta-Z */ /* Some more punctuation. */ - { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-[ */ /* was rl_arrow_keys */ + { ISFUNC, rl_skip_csi_seq }, /* Meta-[ */ /* was rl_arrow_keys */ { ISFUNC, rl_delete_horizontal_space }, /* Meta-\ */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-] */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-^ */ --- funmap.c 2009-01-04 19:32:33.000000000 +0000 +++ funmap.c 2009-07-19 08:25:34.906250000 +0100 @@ -123,6 +123,7 @@ { "revert-line", rl_revert_line }, { "self-insert", rl_insert }, { "set-mark", rl_set_mark }, + { "skip-csi-seq", rl_skip_csi_seq }, { "start-kbd-macro", rl_start_kbd_macro }, { "tab-insert", rl_tab_insert }, { "tilde-expand", rl_tilde_expand }, --- readline.h 2009-07-19 05:28:30.000000000 +0100 +++ readline.h 2009-07-19 08:23:38.546875000 +0100 @@ -197,6 +197,7 @@ /* Miscellaneous bindable commands. */ extern int rl_abort PARAMS((int, int)); extern int rl_tty_status PARAMS((int, int)); +extern int rl_skip_csi_seq PARAMS((int, int)); /* Bindable commands for incremental and non-incremental history searching. */ extern int rl_history_search_forward PARAMS((int, int)); --- text.c 2009-01-04 19:32:34.000000000 +0000 +++ text.c 2009-07-19 08:23:45.890625000 +0100 @@ -571,6 +571,18 @@ } int +rl_skip_csi_seq (count, c) + int count, c; +{ + RL_SETSTATE(RL_STATE_MOREINPUT); + do + c = rl_read_key (); + while (c >= 0x20 && c < 0x40); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + return 0; +} + +int rl_arrow_keys (count, c) int count, c; {