#include "sh.h"
RCSID("$Id: ed.defns.c,v 1.1.1.2 2001/06/28 23:10:47 bbraun Exp $")
#include "ed.h"
static void ed_InitMetaBindings __P((void));
PFCmd CcFuncTbl[] = {
e_unassigned,
e_unassigned,
#define F_UNASSIGNED 1
e_insert,
#define F_INSERT 2
e_newline,
#define F_NEWLINE 3
e_delprev,
#define F_DELPREV 4
e_delnext,
#define F_DELNEXT 5
e_toend,
#define F_TOEND 6
e_tobeg,
#define F_TOBEG 7
e_charback,
#define F_CHARBACK 8
e_charfwd,
#define F_CHARFWD 9
e_quote,
#define F_QUOTE 10
e_startover,
#define F_STARTOVER 11
e_redisp,
#define F_REDISP 12
e_tty_int,
#define F_TTY_INT 13
e_wordback,
#define F_WORDBACK 14
e_wordfwd,
#define F_WORDFWD 15
e_cleardisp,
#define F_CLEARDISP 16
e_complete,
#define F_COMPLETE 17
e_correct,
#define F_CORRECT 18
e_up_hist,
#define F_UP_HIST 19
e_down_hist,
#define F_DOWN_HIST 20
e_up_search_hist,
#define F_UP_SEARCH_HIST 21
e_down_search_hist,
#define F_DOWN_SEARCH_HIST 22
e_helpme,
#define F_HELPME 23
e_list_choices,
#define F_LIST_CHOICES 24
e_delwordprev,
#define F_DELWORDPREV 25
e_delwordnext,
#define F_DELWORDNEXT 26
e_digit,
#define F_DIGIT 27
e_killend,
#define F_KILLEND 28
e_killbeg,
#define F_KILLBEG 29
e_metanext,
#define F_METANEXT 30
e_send_eof,
#define F_SEND_EOF 31
e_charswitch,
#define F_CHARSWITCH 32
e_which,
#define F_WHICH 33
e_yank_kill,
#define F_YANK_KILL 34
e_tty_dsusp,
#define F_TTY_DSUSP 35
e_tty_flusho,
#define F_TTY_FLUSHO 36
e_tty_quit,
#define F_TTY_QUIT 37
e_tty_tsusp,
#define F_TTY_TSUSP 38
e_tty_stopo,
#define F_TTY_STOPO 39
e_tty_starto,
#define F_TTY_STARTO 40
e_argfour,
#define F_ARGFOUR 41
e_set_mark,
#define F_SET_MARK 42
e_exchange_mark,
#define F_EXCHANGE_MARK 43
e_last_item,
#define F_LAST_ITEM 44
e_delnext_list_eof,
#define F_DELNEXT_LIST_EOF 45
v_cmd_mode,
#define V_CMD_MODE 46
v_insert,
#define V_INSERT 47
e_argdigit,
#define F_ARGDIGIT 48
e_killregion,
#define F_KILLREGION 49
e_copyregion,
#define F_COPYREGION 50
e_gcharswitch,
#define F_GCHARSWITCH 51
e_run_fg_editor,
#define F_RUN_FG_EDITOR 52
e_unassigned,
#define F_XKEY 53
e_uppercase,
#define F_CASEUPPER 54
e_lowercase,
#define F_CASELOWER 55
e_capitolcase,
#define F_CASECAPITAL 56
v_zero,
#define V_ZERO 57
v_add,
#define V_ADD 58
v_addend,
#define V_ADDEND 59
v_wordbegnext,
#define V_WORDBEGNEXT 60
e_killall,
#define F_KILLALL 61
e_unassigned,
v_insbeg,
#define V_INSBEG 63
v_replmode,
#define V_REPLMODE 64
v_replone,
#define V_REPLONE 65
v_substline,
#define V_SUBSTLINE 66
v_substchar,
#define V_SUBSTCHAR 67
v_chgtoend,
#define V_CHGTOEND 68
e_list_eof,
#define F_LIST_EOF 69
e_list_glob,
#define F_LIST_GLOB 70
e_expand_history,
#define F_EXPAND_HISTORY 71
e_magic_space,
#define F_MAGIC_SPACE 72
e_insovr,
#define F_INSOVR 73
v_cm_complete,
#define V_CM_COMPLETE 74
e_copyprev,
#define F_COPYPREV 75
e_correctl,
#define F_CORRECT_L 76
e_expand_glob,
#define F_EXPAND_GLOB 77
e_expand_vars,
#define F_EXPAND_VARS 78
e_toggle_hist,
#define F_TOGGLE_HIST 79
v_change_case,
#define V_CHGCASE 80
e_expand,
#define F_EXPAND 81
e_load_average,
#define F_LOAD_AVERAGE 82
v_delprev,
#define V_DELPREV 83
v_delmeta,
#define V_DELMETA 84
v_wordfwd,
#define V_WORDFWD 85
v_wordback,
#define V_WORDBACK 86
v_endword,
#define V_ENDWORD 87
v_eword,
#define V_EWORD 88
v_undo,
#define V_UNDO 89
v_ush_meta,
#define V_USH_META 90
v_dsh_meta,
#define V_DSH_META 91
v_rsrch_fwd,
#define V_RSRCH_FWD 92
v_rsrch_back,
#define V_RSRCH_BACK 93
v_char_fwd,
#define V_CHAR_FWD 94
v_char_back,
#define V_CHAR_BACK 95
v_chgmeta,
#define V_CHGMETA 96
e_inc_fwd,
#define F_INC_FWD 97
e_inc_back,
#define F_INC_BACK 98
v_rchar_fwd,
#define V_RCHAR_FWD 99
v_rchar_back,
#define V_RCHAR_BACK 100
v_charto_fwd,
#define V_CHARTO_FWD 101
v_charto_back,
#define V_CHARTO_BACK 102
e_normalize_path,
#define F_PATH_NORM 103
e_delnext_eof,
#define F_DELNEXT_EOF 104
e_stuff_char,
#define F_STUFF_CHAR 105
e_complete_all,
#define F_COMPLETE_ALL 106
e_list_all,
#define F_LIST_ALL 107
e_complete_fwd,
#define F_COMPLETE_FWD 108
e_complete_back,
#define F_COMPLETE_BACK 109
e_delnext_list,
#define F_DELNEXT_LIST 110
e_normalize_command,
#define F_COMMAND_NORM 111
e_dabbrev_expand,
#define F_DABBREV_EXPAND 112
e_copy_to_clipboard,
#define F_COPY_CLIP 113
e_paste_from_clipboard,
#define F_PASTE_CLIP 114
e_dosify_next,
#define F_DOSIFY_NEXT 115
e_dosify_prev,
#define F_DOSIFY_PREV 116
e_page_up,
#define F_PAGE_UP 117
e_page_down,
#define F_PAGE_DOWN 118
0
#define F_NUM_FNS 119
};
KEYCMD NumFuns = F_NUM_FNS;
KEYCMD CcKeyMap[NT_NUM_KEYS];
KEYCMD CcAltMap[NT_NUM_KEYS];
#define F_NUM_FUNCNAMES (F_NUM_FNS + 2)
struct KeyFuncs FuncNames[F_NUM_FUNCNAMES];
#ifdef WINNT_NATIVE
extern KEYCMD CcEmacsMap[];
extern KEYCMD CcViMap[];
extern KEYCMD CcViCmdMap[];
#else
KEYCMD CcEmacsMap[] = {
F_SET_MARK,
F_TOBEG,
F_CHARBACK,
F_TTY_INT,
F_DELNEXT_LIST_EOF,
F_TOEND,
F_CHARFWD,
F_UNASSIGNED,
F_DELPREV,
F_COMPLETE,
F_NEWLINE,
F_KILLEND,
F_CLEARDISP,
F_NEWLINE,
F_DOWN_HIST,
F_TTY_FLUSHO,
F_UP_HIST,
F_TTY_STARTO,
F_REDISP,
F_TTY_STOPO,
F_CHARSWITCH,
F_KILLALL,
F_QUOTE,
F_KILLREGION,
F_XKEY,
F_YANK_KILL,
F_TTY_TSUSP,
F_METANEXT,
F_TTY_QUIT,
F_TTY_DSUSP,
F_UNASSIGNED,
F_UNASSIGNED,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_DIGIT,
F_DIGIT,
F_DIGIT,
F_DIGIT,
F_DIGIT,
F_DIGIT,
F_DIGIT,
F_DIGIT,
F_DIGIT,
F_DIGIT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_DELPREV,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_LIST_CHOICES,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_DELWORDPREV,
F_COMPLETE,
F_UNASSIGNED,
F_UNASSIGNED,
F_CLEARDISP,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_RUN_FG_EDITOR,
F_COMPLETE,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_COPYPREV,
F_EXPAND_HISTORY,
F_EXPAND_HISTORY,
F_UNASSIGNED,
F_UNASSIGNED,
F_CORRECT_L,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_DABBREV_EXPAND,
F_ARGDIGIT,
F_ARGDIGIT,
F_ARGDIGIT,
F_ARGDIGIT,
F_ARGDIGIT,
F_ARGDIGIT,
F_ARGDIGIT,
F_ARGDIGIT,
F_ARGDIGIT,
F_ARGDIGIT,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_WHICH,
F_UNASSIGNED,
F_UNASSIGNED,
F_WORDBACK,
F_CASECAPITAL,
F_DELWORDNEXT,
F_UNASSIGNED,
F_WORDFWD,
F_UNASSIGNED,
F_HELPME,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_CASELOWER,
F_UNASSIGNED,
F_DOWN_SEARCH_HIST,
F_XKEY,
F_UP_SEARCH_HIST,
F_UNASSIGNED,
F_TOGGLE_HIST,
F_CORRECT,
F_UNASSIGNED,
F_CASEUPPER,
F_UNASSIGNED,
F_COPYREGION,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_XKEY,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_LAST_ITEM,
F_UNASSIGNED,
F_UNASSIGNED,
F_WORDBACK,
F_CASECAPITAL,
F_DELWORDNEXT,
F_UNASSIGNED,
F_WORDFWD,
F_UNASSIGNED,
F_HELPME,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_CASELOWER,
F_UNASSIGNED,
F_DOWN_SEARCH_HIST,
F_UNASSIGNED,
F_UP_SEARCH_HIST,
F_UNASSIGNED,
F_TOGGLE_HIST,
F_CORRECT,
F_UNASSIGNED,
F_CASEUPPER,
F_UNASSIGNED,
F_COPYREGION,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_DELWORDPREV
};
static KEYCMD CcViMap[] = {
#ifdef KSHVI
F_UNASSIGNED,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
V_DELPREV,
F_COMPLETE,
F_NEWLINE,
F_INSERT,
F_INSERT,
F_NEWLINE,
F_INSERT,
F_INSERT,
F_INSERT,
F_TTY_STARTO,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_QUOTE,
F_DELWORDPREV,
F_INSERT,
F_INSERT,
F_INSERT,
V_CMD_MODE,
F_TTY_QUIT,
F_INSERT,
F_INSERT,
F_INSERT,
#else
F_UNASSIGNED,
F_TOBEG,
F_CHARBACK,
F_TTY_INT,
F_LIST_EOF,
F_TOEND,
F_CHARFWD,
F_LIST_GLOB,
F_DELPREV,
F_COMPLETE,
F_NEWLINE,
F_KILLEND,
F_CLEARDISP,
F_NEWLINE,
F_DOWN_HIST,
F_TTY_FLUSHO,
F_UP_HIST,
F_TTY_STARTO,
F_REDISP,
F_TTY_STOPO,
F_CHARSWITCH,
F_KILLBEG,
F_QUOTE,
F_DELWORDPREV,
F_EXPAND,
F_TTY_DSUSP,
F_TTY_TSUSP,
V_CMD_MODE,
F_TTY_QUIT,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
#endif
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_INSERT,
F_DELPREV,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED
};
KEYCMD CcViCmdMap[] = {
F_UNASSIGNED,
F_TOBEG,
F_UNASSIGNED,
F_TTY_INT,
F_LIST_CHOICES,
F_TOEND,
F_UNASSIGNED,
F_LIST_GLOB,
F_CHARBACK,
V_CM_COMPLETE,
F_NEWLINE,
F_KILLEND,
F_CLEARDISP,
F_NEWLINE,
F_DOWN_HIST,
F_TTY_FLUSHO,
F_UP_HIST,
F_TTY_STARTO,
F_REDISP,
F_TTY_STOPO,
F_UNASSIGNED,
F_KILLBEG,
F_UNASSIGNED,
F_DELWORDPREV,
F_EXPAND,
F_UNASSIGNED,
F_UNASSIGNED,
F_METANEXT,
F_TTY_QUIT,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_CHARFWD,
F_EXPAND_HISTORY,
F_UNASSIGNED,
F_UNASSIGNED,
F_TOEND,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_EXPAND_GLOB,
F_DOWN_HIST,
V_RCHAR_BACK,
F_UP_HIST,
F_UNASSIGNED,
V_DSH_META,
V_ZERO,
F_ARGDIGIT,
F_ARGDIGIT,
F_ARGDIGIT,
F_ARGDIGIT,
F_ARGDIGIT,
F_ARGDIGIT,
F_ARGDIGIT,
F_ARGDIGIT,
F_ARGDIGIT,
F_UNASSIGNED,
V_RCHAR_FWD,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
V_USH_META,
F_UNASSIGNED,
V_ADDEND,
V_WORDBACK,
V_CHGTOEND,
F_KILLEND,
V_ENDWORD,
V_CHAR_BACK,
F_UNASSIGNED,
F_UNASSIGNED,
V_INSBEG,
F_DOWN_SEARCH_HIST,
F_UP_SEARCH_HIST,
F_UNASSIGNED,
F_UNASSIGNED,
V_RSRCH_BACK,
F_XKEY,
F_UNASSIGNED,
F_UNASSIGNED,
V_REPLMODE,
V_SUBSTLINE,
V_CHARTO_BACK,
F_UNASSIGNED,
F_EXPAND_VARS,
V_WORDFWD,
F_DELPREV,
F_UNASSIGNED,
F_UNASSIGNED,
F_XKEY,
F_UNASSIGNED,
F_UNASSIGNED,
F_TOBEG,
F_UNASSIGNED,
F_UNASSIGNED,
V_ADD,
F_WORDBACK,
V_CHGMETA,
V_DELMETA,
V_EWORD,
V_CHAR_FWD,
F_UNASSIGNED,
F_CHARBACK,
V_INSERT,
F_DOWN_HIST,
F_UP_HIST,
F_CHARFWD,
F_UNASSIGNED,
V_RSRCH_FWD,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
V_REPLONE,
V_SUBSTCHAR,
V_CHARTO_FWD,
V_UNDO,
F_EXPAND_VARS,
V_WORDBEGNEXT,
F_DELNEXT_EOF,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
V_CHGCASE,
F_DELPREV,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_HELPME,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_XKEY,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_XKEY,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED,
F_UNASSIGNED
};
#endif
void
editinit()
{
struct KeyFuncs *f;
#if defined(NLS_CATALOGS) || defined(WINNT_NATIVE)
int i;
for (i = 0; i < F_NUM_FUNCNAMES; i++)
xfree((ptr_t) FuncNames[i].desc);
#endif
f = FuncNames;
f->name = "backward-char";
f->func = F_CHARBACK;
f->desc = CSAVS(3, 1, "Move back a character");
f++;
f->name = "backward-delete-char";
f->func = F_DELPREV;
f->desc = CSAVS(3, 2, "Delete the character behind cursor");
f++;
f->name = "backward-delete-word";
f->func = F_DELWORDPREV;
f->desc = CSAVS(3, 3,
"Cut from beginning of current word to cursor - saved in cut buffer");
f++;
f->name = "backward-kill-line";
f->func = F_KILLBEG;
f->desc = CSAVS(3, 4,
"Cut from beginning of line to cursor - save in cut buffer");
f++;
f->name = "backward-word";
f->func = F_WORDBACK;
f->desc = CSAVS(3, 5, "Move to beginning of current word");
f++;
f->name = "beginning-of-line";
f->func = F_TOBEG;
f->desc = CSAVS(3, 6, "Move to beginning of line");
f++;
f->name = "capitalize-word";
f->func = F_CASECAPITAL;
f->desc = CSAVS(3, 7,
"Capitalize the characters from cursor to end of current word");
f++;
f->name = "change-case";
f->func = V_CHGCASE;
f->desc = CSAVS(3, 8,
"Vi change case of character under cursor and advance one character");
f++;
f->name = "change-till-end-of-line";
f->func = V_CHGTOEND;
f->desc = CSAVS(3, 9, "Vi change to end of line");
f++;
f->name = "clear-screen";
f->func = F_CLEARDISP;
f->desc = CSAVS(3, 10, "Clear screen leaving current line on top");
f++;
f->name = "complete-word";
f->func = F_COMPLETE;
f->desc = CSAVS(3, 11, "Complete current word");
f++;
f->name = "complete-word-fwd";
f->func = F_COMPLETE_FWD;
f->desc = CSAVS(3, 12, "Tab forward through files");
f++;
f->name = "complete-word-back";
f->func = F_COMPLETE_BACK;
f->desc = CSAVS(3, 13, "Tab backward through files");
f++;
f->name = "complete-word-raw";
f->func = F_COMPLETE_ALL;
f->desc = CSAVS(3, 14,
"Complete current word ignoring programmable completions");
f++;
f->name = "copy-prev-word";
f->func = F_COPYPREV;
f->desc = CSAVS(3, 15, "Copy current word to cursor");
f++;
f->name = "copy-region-as-kill";
f->func = F_COPYREGION;
f->desc = CSAVS(3, 16, "Copy area between mark and cursor to cut buffer");
f++;
f->name = "dabbrev-expand";
f->func = F_DABBREV_EXPAND;
f->desc = CSAVS(3, 17,
"Expand to preceding word for which this is a prefix");
f++;
f->name = "delete-char";
f->func = F_DELNEXT;
f->desc = CSAVS(3, 18, "Delete character under cursor");
f++;
f->name = "delete-char-or-eof";
f->func = F_DELNEXT_EOF;
f->desc = CSAVS(3, 19,
"Delete character under cursor or signal end of file on an empty line");
f++;
f->name = "delete-char-or-list";
f->func = F_DELNEXT_LIST;
f->desc = CSAVS(3, 20,
"Delete character under cursor or list completions if at end of line");
f++;
f->name = "delete-char-or-list-or-eof";
f->func = F_DELNEXT_LIST_EOF;
f->desc = CSAVS(3, 21,
"Delete character under cursor, list completions or signal end of file");
f++;
f->name = "delete-word";
f->func = F_DELWORDNEXT;
f->desc = CSAVS(3, 22,
"Cut from cursor to end of current word - save in cut buffer");
f++;
f->name = "digit";
f->func = F_DIGIT;
f->desc = CSAVS(3, 23, "Adds to argument if started or enters digit");
f++;
f->name = "digit-argument";
f->func = F_ARGDIGIT;
f->desc = CSAVS(3, 24, "Digit that starts argument");
f++;
f->name = "down-history";
f->func = F_DOWN_HIST;
f->desc = CSAVS(3, 25, "Move to next history line");
f++;
f->name = "downcase-word";
f->func = F_CASELOWER;
f->desc = CSAVS(3, 26,
"Lowercase the characters from cursor to end of current word");
f++;
f->name = "end-of-file";
f->func = F_SEND_EOF;
f->desc = CSAVS(3, 27, "Indicate end of file");
f++;
f->name = "end-of-line";
f->func = F_TOEND;
f->desc = CSAVS(3, 28, "Move cursor to end of line");
f++;
f->name = "exchange-point-and-mark";
f->func = F_EXCHANGE_MARK;
f->desc = CSAVS(3, 29, "Exchange the cursor and mark");
f++;
f->name = "expand-glob";
f->func = F_EXPAND_GLOB;
f->desc = CSAVS(3, 30, "Expand file name wildcards");
f++;
f->name = "expand-history";
f->func = F_EXPAND_HISTORY;
f->desc = CSAVS(3, 31, "Expand history escapes");
f++;
f->name = "expand-line";
f->func = F_EXPAND;
f->desc = CSAVS(3, 32, "Expand the history escapes in a line");
f++;
f->name = "expand-variables";
f->func = F_EXPAND_VARS;
f->desc = CSAVS(3, 33, "Expand variables");
f++;
f->name = "forward-char";
f->func = F_CHARFWD;
f->desc = CSAVS(3, 34, "Move forward one character");
f++;
f->name = "forward-word";
f->func = F_WORDFWD;
f->desc = CSAVS(3, 35, "Move forward to end of current word");
f++;
f->name = "gosmacs-transpose-chars";
f->func = F_GCHARSWITCH;
f->desc = CSAVS(3, 36, "Exchange the two characters before the cursor");
f++;
f->name = "history-search-backward";
f->func = F_UP_SEARCH_HIST;
f->desc = CSAVS(3, 37,
"Search in history backward for line beginning as current");
f++;
f->name = "history-search-forward";
f->func = F_DOWN_SEARCH_HIST;
f->desc = CSAVS(3, 38,
"Search in history forward for line beginning as current");
f++;
f->name = "insert-last-word";
f->func = F_LAST_ITEM;
f->desc = CSAVS(3, 39, "Insert last item of previous command");
f++;
f->name = "i-search-fwd";
f->func = F_INC_FWD;
f->desc = CSAVS(3, 40, "Incremental search forward");
f++;
f->name = "i-search-back";
f->func = F_INC_BACK;
f->desc = CSAVS(3, 41, "Incremental search backward");
f++;
f->name = "keyboard-quit";
f->func = F_STARTOVER;
f->desc = CSAVS(3, 42, "Clear line");
f++;
f->name = "kill-line";
f->func = F_KILLEND;
f->desc = CSAVS(3, 43, "Cut to end of line and save in cut buffer");
f++;
f->name = "kill-region";
f->func = F_KILLREGION;
f->desc = CSAVS(3, 44,
"Cut area between mark and cursor and save in cut buffer");
f++;
f->name = "kill-whole-line";
f->func = F_KILLALL;
f->desc = CSAVS(3, 45, "Cut the entire line and save in cut buffer");
f++;
f->name = "list-choices";
f->func = F_LIST_CHOICES;
f->desc = CSAVS(3, 46, "List choices for completion");
f++;
f->name = "list-choices-raw";
f->func = F_LIST_ALL;
f->desc = CSAVS(3, 47,
"List choices for completion overriding programmable completion");
f++;
f->name = "list-glob";
f->func = F_LIST_GLOB;
f->desc = CSAVS(3, 48, "List file name wildcard matches");
f++;
f->name = "list-or-eof";
f->func = F_LIST_EOF;
f->desc = CSAVS(3, 49,
"List choices for completion or indicate end of file if empty line");
f++;
f->name = "load-average";
f->func = F_LOAD_AVERAGE;
f->desc = CSAVS(3, 50, "Display load average and current process status");
f++;
f->name = "magic-space";
f->func = F_MAGIC_SPACE;
f->desc = CSAVS(3, 51, "Expand history escapes and insert a space");
f++;
f->name = "newline";
f->func = F_NEWLINE;
f->desc = CSAVS(3, 52, "Execute command");
f++;
f->name = "normalize-path";
f->func = F_PATH_NORM;
f->desc = CSAVS(3, 53,
"Expand pathnames, eliminating leading .'s and ..'s");
f++;
f->name = "normalize-command";
f->func = F_COMMAND_NORM;
f->desc = CSAVS(3, 54,
"Expand commands to the resulting pathname or alias");
f++;
f->name = "overwrite-mode";
f->func = F_INSOVR;
f->desc = CSAVS(3, 55,
"Switch from insert to overwrite mode or vice versa");
f++;
f->name = "prefix-meta";
f->func = F_METANEXT;
f->desc = CSAVS(3, 56, "Add 8th bit to next character typed");
f++;
f->name = "quoted-insert";
f->func = F_QUOTE;
f->desc = CSAVS(3, 57, "Add the next character typed to the line verbatim");
f++;
f->name = "redisplay";
f->func = F_REDISP;
f->desc = CSAVS(3, 58, "Redisplay everything");
f++;
f->name = "run-fg-editor";
f->func = F_RUN_FG_EDITOR;
f->desc = CSAVS(3, 59, "Restart stopped editor");
f++;
f->name = "run-help";
f->func = F_HELPME;
f->desc = CSAVS(3, 60, "Look for help on current command");
f++;
f->name = "self-insert-command";
f->func = F_INSERT;
f->desc = CSAVS(3, 61, "This character is added to the line");
f++;
f->name = "sequence-lead-in";
f->func = F_XKEY;
f->desc = CSAVS(3, 62,
"This character is the first in a character sequence");
f++;
f->name = "set-mark-command";
f->func = F_SET_MARK;
f->desc = CSAVS(3, 63, "Set the mark at cursor");
f++;
f->name = "spell-word";
f->func = F_CORRECT;
f->desc = CSAVS(3, 64, "Correct the spelling of current word");
f++;
f->name = "spell-line";
f->func = F_CORRECT_L;
f->desc = CSAVS(3, 65, "Correct the spelling of entire line");
f++;
f->name = "stuff-char";
f->func = F_STUFF_CHAR;
f->desc = CSAVS(3, 66, "Send character to tty in cooked mode");
f++;
f->name = "toggle-literal-history";
f->func = F_TOGGLE_HIST;
f->desc = CSAVS(3, 67,
"Toggle between literal and lexical current history line");
f++;
f->name = "transpose-chars";
f->func = F_CHARSWITCH;
f->desc = CSAVS(3, 68,
"Exchange the character to the left of the cursor with the one under");
f++;
f->name = "transpose-gosling";
f->func = F_GCHARSWITCH;
f->desc = CSAVS(3, 69, "Exchange the two characters before the cursor");
f++;
f->name = "tty-dsusp";
f->func = F_TTY_DSUSP;
f->desc = CSAVS(3, 70, "Tty delayed suspend character");
f++;
f->name = "tty-flush-output";
f->func = F_TTY_FLUSHO;
f->desc = CSAVS(3, 71, "Tty flush output character");
f++;
f->name = "tty-sigintr";
f->func = F_TTY_INT;
f->desc = CSAVS(3, 72, "Tty interrupt character");
f++;
f->name = "tty-sigquit";
f->func = F_TTY_QUIT;
f->desc = CSAVS(3, 73, "Tty quit character");
f++;
f->name = "tty-sigtsusp";
f->func = F_TTY_TSUSP;
f->desc = CSAVS(3, 74, "Tty suspend character");
f++;
f->name = "tty-start-output";
f->func = F_TTY_STARTO;
f->desc = CSAVS(3, 75, "Tty allow output character");
f++;
f->name = "tty-stop-output";
f->func = F_TTY_STOPO;
f->desc = CSAVS(3, 76, "Tty disallow output character");
f++;
f->name = "undefined-key";
f->func = F_UNASSIGNED;
f->desc = CSAVS(3, 77, "Indicates unbound character");
f++;
f->name = "universal-argument";
f->func = F_ARGFOUR;
f->desc = CSAVS(3, 78, "Emacs universal argument (argument times 4)");
f++;
f->name = "up-history";
f->func = F_UP_HIST;
f->desc = CSAVS(3, 79, "Move to previous history line");
f++;
f->name = "upcase-word";
f->func = F_CASEUPPER;
f->desc = CSAVS(3, 80,
"Uppercase the characters from cursor to end of current word");
f++;
f->name = "vi-beginning-of-next-word";
f->func = V_WORDBEGNEXT;
f->desc = CSAVS(3, 81, "Vi goto the beginning of next word");
f++;
f->name = "vi-add";
f->func = V_ADD;
f->desc = CSAVS(3, 82, "Vi enter insert mode after the cursor");
f++;
f->name = "vi-add-at-eol";
f->func = V_ADDEND;
f->desc = CSAVS(3, 83, "Vi enter insert mode at end of line");
f++;
f->name = "vi-chg-case";
f->func = V_CHGCASE;
f->desc = CSAVS(3, 84,
"Vi change case of character under cursor and advance one character");
f++;
f->name = "vi-chg-meta";
f->func = V_CHGMETA;
f->desc = CSAVS(3, 85, "Vi change prefix command");
f++;
f->name = "vi-chg-to-eol";
f->func = V_CHGTOEND;
f->desc = CSAVS(3, 86, "Vi change to end of line");
f++;
f->name = "vi-cmd-mode";
f->func = V_CMD_MODE;
f->desc = CSAVS(3, 87,
"Enter vi command mode (use alternative key bindings)");
f++;
f->name = "vi-cmd-mode-complete";
f->func = V_CM_COMPLETE;
f->desc = CSAVS(3, 88, "Vi command mode complete current word");
f++;
f->name = "vi-delprev";
f->func = V_DELPREV;
f->desc = CSAVS(3, 89, "Vi move to previous character (backspace)");
f++;
f->name = "vi-delmeta";
f->func = V_DELMETA;
f->desc = CSAVS(3, 90, "Vi delete prefix command");
f++;
f->name = "vi-endword";
f->func = V_ENDWORD;
f->desc = CSAVS(3, 91,
"Vi move to the end of the current space delimited word");
f++;
f->name = "vi-eword";
f->func = V_EWORD;
f->desc = CSAVS(3, 92, "Vi move to the end of the current word");
f++;
f->name = "vi-char-back";
f->func = V_CHAR_BACK;
f->desc = CSAVS(3, 93, "Vi move to the character specified backward");
f++;
f->name = "vi-char-fwd";
f->func = V_CHAR_FWD;
f->desc = CSAVS(3, 94, "Vi move to the character specified forward");
f++;
f->name = "vi-charto-back";
f->func = V_CHARTO_BACK;
f->desc = CSAVS(3, 95, "Vi move up to the character specified backward");
f++;
f->name = "vi-charto-fwd";
f->func = V_CHARTO_FWD;
f->desc = CSAVS(3, 96, "Vi move up to the character specified forward");
f++;
f->name = "vi-insert";
f->func = V_INSERT;
f->desc = CSAVS(3, 97, "Enter vi insert mode");
f++;
f->name = "vi-insert-at-bol";
f->func = V_INSBEG;
f->desc = CSAVS(3, 98, "Enter vi insert mode at beginning of line");
f++;
f->name = "vi-repeat-char-fwd";
f->func = V_RCHAR_FWD;
f->desc = CSAVS(3, 99,
"Vi repeat current character search in the same search direction");
f++;
f->name = "vi-repeat-char-back";
f->func = V_RCHAR_BACK;
f->desc = CSAVS(3, 100,
"Vi repeat current character search in the opposite search direction");
f++;
f->name = "vi-repeat-search-fwd";
f->func = V_RSRCH_FWD;
f->desc = CSAVS(3, 101,
"Vi repeat current search in the same search direction");
f++;
f->name = "vi-repeat-search-back";
f->func = V_RSRCH_BACK;
f->desc = CSAVS(3, 102,
"Vi repeat current search in the opposite search direction");
f++;
f->name = "vi-replace-char";
f->func = V_REPLONE;
f->desc = CSAVS(3, 103,
"Vi replace character under the cursor with the next character typed");
f++;
f->name = "vi-replace-mode";
f->func = V_REPLMODE;
f->desc = CSAVS(3, 104, "Vi replace mode");
f++;
f->name = "vi-search-back";
f->func = V_USH_META;
f->desc = CSAVS(3, 105, "Vi search history backward");
f++;
f->name = "vi-search-fwd";
f->func = V_DSH_META;
f->desc = CSAVS(3, 106, "Vi search history forward");
f++;
f->name = "vi-substitute-char";
f->func = V_SUBSTCHAR;
f->desc = CSAVS(3, 107,
"Vi replace character under the cursor and enter insert mode");
f++;
f->name = "vi-substitute-line";
f->func = V_SUBSTLINE;
f->desc = CSAVS(3, 108, "Vi replace entire line");
f++;
f->name = "vi-word-back";
f->func = V_WORDBACK;
f->desc = CSAVS(3, 109, "Vi move to the previous word");
f++;
f->name = "vi-word-fwd";
f->func = V_WORDFWD;
f->desc = CSAVS(3, 110, "Vi move to the next word");
f++;
f->name = "vi-undo";
f->func = V_UNDO;
f->desc = CSAVS(3, 111, "Vi undo last change");
f++;
f->name = "vi-zero";
f->func = V_ZERO;
f->desc = CSAVS(3, 112, "Vi goto the beginning of line");
f++;
f->name = "which-command";
f->func = F_WHICH;
f->desc = CSAVS(3, 113, "Perform which of current command");
f++;
f->name = "yank";
f->func = F_YANK_KILL;
f->desc = CSAVS(3, 114, "Paste cut buffer at cursor position");
f++;
f->name = "e_copy_to_clipboard";
f->func = F_COPY_CLIP;
f->desc = CSAVS(3, 115, "(win32 only)Copy cut buffer to system clipboard");
f++;
f->name = "e_paste_from_clipboard";
f->func = F_PASTE_CLIP;
f->desc = CSAVS(3, 116, "(win32 only)Paste clipboard buffer at cursor position");
f++;
f->name = "e_dosify_next";
f->func = F_DOSIFY_NEXT;
f->desc = CSAVS(3, 117, "(win32 only)Convert each '/' in next word to '\\\\'");
f++;
f->name = "e_dosify_prev";
f->func = F_DOSIFY_PREV;
f->desc = CSAVS(3, 118, "(win32 only)Convert each '/' in previous word to '\\\\'");
f++;
f->name = "e_page_up";
f->func = F_PAGE_UP;
f->desc = CSAVS(3, 118, "(win32 only)Page visible console window up");
f++;
f->name = "e_page_down";
f->func = F_PAGE_DOWN;
f->desc = CSAVS(3, 118, "(win32 only)Page visible console window down");
f++;
f->name = NULL;
f->func = 0;
f->desc = NULL;
f++;
if (f - FuncNames != F_NUM_FUNCNAMES)
abort();
}
#ifdef DEBUG_EDIT
void
CheckMaps()
{
int c1 = (NT_NUM_KEYS * sizeof(KEYCMD));
if ((sizeof(CcKeyMap)) != c1)
xprintf("CcKeyMap should be %d entries, but is %d.\r\n",
NT_NUM_KEYS, sizeof(CcKeyMap) / sizeof(KEYCMD)));
if ((sizeof(CcAltMap)) != c1)
xprintf("CcAltMap should be %d entries, but is %d.\r\n",
NT_NUM_KEYS, (sizeof(CcAltMap) / sizeof(KEYCMD)));
if ((sizeof(CcEmacsMap)) != c1)
xprintf("CcEmacsMap should be %d entries, but is %d.\r\n",
NT_NUM_KEYS, (sizeof(CcEmacsMap) / sizeof(KEYCMD)));
if ((sizeof(CcViMap)) != c1)
xprintf("CcViMap should be %d entries, but is %d.\r\n",
NT_NUM_KEYS, (sizeof(CcViMap) / sizeof(KEYCMD)));
if ((sizeof(CcViCmdMap)) != c1)
xprintf("CcViCmdMap should be %d entries, but is %d.\r\n",
NT_NUM_KEYS, (sizeof(CcViCmdMap) / sizeof(KEYCMD)));
}
#endif
bool MapsAreInited = 0;
bool NLSMapsAreInited = 0;
bool NoNLSRebind;
void
ed_InitNLSMaps()
{
register int i;
if (AsciiOnly)
return;
if (NoNLSRebind)
return;
for (i = 0200; i <= 0377; i++) {
if (Isprint(i)) {
CcKeyMap[i] = F_INSERT;
}
}
NLSMapsAreInited = 1;
}
static void
ed_InitMetaBindings()
{
Char buf[3];
int i;
CStr cstr;
KEYCMD *map;
map = CcKeyMap;
for (i = 0; i <= 0377 && CcKeyMap[i] != F_METANEXT; i++)
continue;
if (i > 0377) {
for (i = 0; i <= 0377 && CcAltMap[i] != F_METANEXT; i++)
continue;
if (i > 0377) {
i = CTL_ESC('\033');
if (VImode)
map = CcAltMap;
}
else {
map = CcAltMap;
}
}
buf[0] = (Char) i;
buf[2] = 0;
cstr.buf = buf;
cstr.len = 2;
for (i = 0200; i <= 0377; i++) {
if (map[i] != F_INSERT && map[i] != F_UNASSIGNED && map[i] != F_XKEY) {
#ifdef IS_ASCII
buf[1] = i & ASCII;
#else
buf[1] = _toebcdic[_toascii[i] & ASCII];
#endif
AddXkey(&cstr, XmapCmd((int) map[i]), XK_CMD);
}
}
map[buf[0]] = F_XKEY;
}
void
ed_InitVIMaps()
{
register int i;
VImode = 1;
ResetXmap();
for (i = 0; i < NT_NUM_KEYS; i++) {
CcKeyMap[i] = CcViMap[i];
CcAltMap[i] = CcViCmdMap[i];
}
ed_InitMetaBindings();
ed_InitNLSMaps();
ResetArrowKeys();
BindArrowKeys();
}
void
ed_InitEmacsMaps()
{
int i;
Char buf[3];
CStr cstr;
cstr.buf = buf;
cstr.len = 2;
VImode = 0;
ResetXmap();
for (i = 0; i < NT_NUM_KEYS; i++) {
CcKeyMap[i] = CcEmacsMap[i];
CcAltMap[i] = F_UNASSIGNED;
}
ed_InitMetaBindings();
ed_InitNLSMaps();
buf[0] = CTL_ESC('\030');
buf[2] = 0;
buf[1] = CTL_ESC('\030');
AddXkey(&cstr, XmapCmd(F_EXCHANGE_MARK), XK_CMD);
buf[1] = '*';
AddXkey(&cstr, XmapCmd(F_EXPAND_GLOB), XK_CMD);
buf[1] = '$';
AddXkey(&cstr, XmapCmd(F_EXPAND_VARS), XK_CMD);
buf[1] = 'G';
AddXkey(&cstr, XmapCmd(F_LIST_GLOB), XK_CMD);
buf[1] = 'g';
AddXkey(&cstr, XmapCmd(F_LIST_GLOB), XK_CMD);
buf[1] = 'n';
AddXkey(&cstr, XmapCmd(F_PATH_NORM), XK_CMD);
buf[1] = 'N';
AddXkey(&cstr, XmapCmd(F_PATH_NORM), XK_CMD);
buf[1] = '?';
AddXkey(&cstr, XmapCmd(F_COMMAND_NORM), XK_CMD);
buf[1] = '\t';
AddXkey(&cstr, XmapCmd(F_COMPLETE_ALL), XK_CMD);
buf[1] = CTL_ESC('\004');
AddXkey(&cstr, XmapCmd(F_LIST_ALL), XK_CMD);
ResetArrowKeys();
BindArrowKeys();
}
void
ed_InitMaps()
{
if (MapsAreInited)
return;
#ifndef IS_ASCII
{
KEYCMD temp[NT_NUM_KEYS];
static KEYCMD *const list[3] = { CcEmacsMap, CcViMap, CcViCmdMap };
register int i, table;
for (table=0; table<3; ++table)
{
for (i = 0; i < NT_NUM_KEYS; i++) {
temp[i] = list[table][i];
}
for (i = 0; i < NT_NUM_KEYS; i++) {
list[table][_toebcdic[i]] = temp[i];
}
}
}
#endif
#ifdef VIDEFAULT
ed_InitVIMaps();
#else
ed_InitEmacsMaps();
#endif
MapsAreInited = 1;
}