2 * ed.defns.c: Editor function definitions and initialization
5 * Copyright (c) 1980, 1991 The Regents of the University of California.
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 * 3. Neither the name of the University nor the names of its contributors
17 * may be used to endorse or promote products derived from this software
18 * without specific prior written permission.
20 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35 static void ed_InitMetaBindings (void);
37 PFCmd CcFuncTbl
[] = { /* table of available commands */
39 /* no #define here -- this is a dummy to detect initing of the key map */
41 #define F_UNASSIGNED 1
61 #define F_STARTOVER 11
71 #define F_CLEARDISP 16
79 #define F_DOWN_HIST 20
81 #define F_UP_SEARCH_HIST 21
83 #define F_DOWN_SEARCH_HIST 22
87 #define F_LIST_CHOICES 24
89 #define F_DELWORDPREV 25
91 #define F_DELWORDNEXT 26
101 #define F_SEND_EOF 31
103 #define F_CHARSWITCH 32
107 #define F_YANK_KILL 34
109 #define F_TTY_DSUSP 35
111 #define F_TTY_FLUSHO 36
113 #define F_TTY_QUIT 37
115 #define F_TTY_TSUSP 38
117 #define F_TTY_STOPO 39
119 #define F_TTY_STARTO 40
123 #define F_SET_MARK 42
125 #define F_EXCHANGE_MARK 43
127 #define F_LAST_ITEM 44
129 #define F_DELNEXT_LIST_EOF 45
131 #define V_CMD_MODE 46
135 #define F_ARGDIGIT 48
137 #define F_KILLREGION 49
139 #define F_COPYREGION 50
141 #define F_GCHARSWITCH 51
143 #define F_RUN_FG_EDITOR 52
144 e_unassigned
, /* place holder for sequence lead in character */
147 #define F_CASEUPPER 54
149 #define F_CASELOWER 55
151 #define F_CASECAPITAL 56
159 #define V_WORDBEGNEXT 60
163 /* F_EXTENDNEXT removed */
167 #define V_REPLMODE 64
171 #define V_SUBSTLINE 66
173 #define V_SUBSTCHAR 67
175 #define V_CHGTOEND 68
177 #define F_LIST_EOF 69
179 #define F_LIST_GLOB 70
181 #define F_EXPAND_HISTORY 71
183 #define F_MAGIC_SPACE 72
187 #define V_CM_COMPLETE 74
189 #define F_COPYPREV 75
191 #define F_CORRECT_L 76
193 #define F_EXPAND_GLOB 77
195 #define F_EXPAND_VARS 78
197 #define F_TOGGLE_HIST 79
203 #define F_LOAD_AVERAGE 82
211 #define V_WORDBACK 86
219 #define V_USH_META 90
221 #define V_DSH_META 91
223 #define V_RSRCH_FWD 92
225 #define V_RSRCH_BACK 93
227 #define V_CHAR_FWD 94
229 #define V_CHAR_BACK 95
235 #define F_INC_BACK 98
237 #define V_RCHAR_FWD 99
239 #define V_RCHAR_BACK 100
241 #define V_CHARTO_FWD 101
243 #define V_CHARTO_BACK 102
245 #define F_PATH_NORM 103
246 e_delnext_eof
, /* added by mtk@ari.ncl.omron.co.jp (920818) */
247 #define F_DELNEXT_EOF 104
249 #define F_STUFF_CHAR 105
251 #define F_COMPLETE_ALL 106
253 #define F_LIST_ALL 107
255 #define F_COMPLETE_FWD 108
257 #define F_COMPLETE_BACK 109
259 #define F_DELNEXT_LIST 110
261 #define F_COMMAND_NORM 111
263 #define F_DABBREV_EXPAND 112
265 #define F_DOSIFY_NEXT 113
267 #define F_DOSIFY_PREV 114
269 #define F_PAGE_UP 115
271 #define F_PAGE_DOWN 116
273 #define F_YANK_POP 117
275 #define F_NEWLINE_HOLD 118
277 #define F_NEWLINE_DOWN_HIST 119
279 #define F_NUM_FNS 120
283 KEYCMD NumFuns
= F_NUM_FNS
;
285 KEYCMD CcKeyMap
[NT_NUM_KEYS
]; /* the real key map */
286 KEYCMD CcAltMap
[NT_NUM_KEYS
]; /* the alternative key map */
287 #define F_NUM_FUNCNAMES (F_NUM_FNS + 2)
288 struct KeyFuncs FuncNames
[F_NUM_FUNCNAMES
];
291 extern KEYCMD CcEmacsMap
[];
292 extern KEYCMD CcViMap
[];
293 extern KEYCMD CcViCmdMap
[];
294 #else /* !WINNT_NATIVE*/
295 KEYCMD CcEmacsMap
[] = {
296 /* keymap table, each index into above tbl; should be 256*sizeof(KEYCMD)
303 F_DELNEXT_LIST_EOF
, /* ^D */
306 F_UNASSIGNED
, /* ^G */
311 F_CLEARDISP
, /* ^L */
313 F_DOWN_HIST
, /* ^N */
314 F_TTY_FLUSHO
, /* ^O */
316 F_TTY_STARTO
, /* ^Q */
318 F_TTY_STOPO
, /* ^S */
319 F_CHARSWITCH
, /* ^T */
322 F_KILLREGION
, /* ^W */
324 F_YANK_KILL
, /* ^Y */
325 F_TTY_TSUSP
, /* ^Z */
328 F_TTY_DSUSP
, /* ^] */
329 F_UNASSIGNED
, /* ^^ */
330 F_UNASSIGNED
, /* ^_ */
331 F_INSERT
, /* SPACE */
427 F_UNASSIGNED
, /* M-^@ */
428 F_UNASSIGNED
, /* M-^A */
429 F_UNASSIGNED
, /* M-^B */
430 F_UNASSIGNED
, /* M-^C */
431 F_LIST_CHOICES
, /* M-^D */
432 F_UNASSIGNED
, /* M-^E */
433 F_UNASSIGNED
, /* M-^F */
434 F_UNASSIGNED
, /* M-^G */
435 F_DELWORDPREV
, /* M-^H */
436 F_COMPLETE
, /* M-^I */
437 F_UNASSIGNED
, /* M-^J */
438 F_UNASSIGNED
, /* M-^K */
439 F_CLEARDISP
, /* M-^L */
440 F_UNASSIGNED
, /* M-^M */
441 F_UNASSIGNED
, /* M-^N */
442 F_UNASSIGNED
, /* M-^O */
443 F_UNASSIGNED
, /* M-^P */
444 F_UNASSIGNED
, /* M-^Q */
445 F_UNASSIGNED
, /* M-^R */
446 F_UNASSIGNED
, /* M-^S */
447 F_UNASSIGNED
, /* M-^T */
448 F_UNASSIGNED
, /* M-^U */
449 F_UNASSIGNED
, /* M-^V */
450 F_UNASSIGNED
, /* M-^W */
451 F_UNASSIGNED
, /* M-^X */
452 F_UNASSIGNED
, /* M-^Y */
453 F_RUN_FG_EDITOR
, /* M-^Z */
454 F_COMPLETE
, /* M-^[ */
455 F_UNASSIGNED
, /* M-^\ */
456 F_UNASSIGNED
, /* M-^] */
457 F_UNASSIGNED
, /* M-^^ */
458 F_COPYPREV
, /* M-^_ */
459 F_EXPAND_HISTORY
, /* M-SPACE */
460 F_EXPAND_HISTORY
, /* M-! */
461 F_UNASSIGNED
, /* M-" */
462 F_UNASSIGNED
, /* M-# */
463 F_CORRECT_L
, /* M-$ */
464 F_UNASSIGNED
, /* M-% */
465 F_UNASSIGNED
, /* M-& */
466 F_UNASSIGNED
, /* M-' */
467 F_UNASSIGNED
, /* M-( */
468 F_UNASSIGNED
, /* M-) */
469 F_UNASSIGNED
, /* M-* */
470 F_UNASSIGNED
, /* M-+ */
471 F_UNASSIGNED
, /* M-, */
472 F_UNASSIGNED
, /* M-- */
473 F_UNASSIGNED
, /* M-. */
474 F_DABBREV_EXPAND
, /* M-/ */
475 F_ARGDIGIT
, /* M-0 */
476 F_ARGDIGIT
, /* M-1 */
477 F_ARGDIGIT
, /* M-2 */
478 F_ARGDIGIT
, /* M-3 */
479 F_ARGDIGIT
, /* M-4 */
480 F_ARGDIGIT
, /* M-5 */
481 F_ARGDIGIT
, /* M-6 */
482 F_ARGDIGIT
, /* M-7 */
483 F_ARGDIGIT
, /* M-8 */
484 F_ARGDIGIT
, /* M-9 */
485 F_UNASSIGNED
, /* M-: */
486 F_UNASSIGNED
, /* M-; */
487 F_UNASSIGNED
, /* M-< */
488 F_UNASSIGNED
, /* M-= */
489 F_UNASSIGNED
, /* M-> */
491 F_UNASSIGNED
, /* M-@ */
492 F_NEWLINE_HOLD
, /* M-A */
493 F_WORDBACK
, /* M-B */
494 F_CASECAPITAL
, /* M-C */
495 F_DELWORDNEXT
, /* M-D */
496 F_UNASSIGNED
, /* M-E */
498 F_UNASSIGNED
, /* M-G */
500 F_UNASSIGNED
, /* M-I */
501 F_UNASSIGNED
, /* M-J */
502 F_UNASSIGNED
, /* M-K */
503 F_CASELOWER
, /* M-L */
504 F_UNASSIGNED
, /* M-M */
505 F_DOWN_SEARCH_HIST
, /* M-N */
506 F_XKEY
, /* M-O *//* extended key esc PWP Mar 88 */
507 F_UP_SEARCH_HIST
, /* M-P */
508 F_UNASSIGNED
, /* M-Q */
509 F_TOGGLE_HIST
, /* M-R */
511 F_UNASSIGNED
, /* M-T */
512 F_CASEUPPER
, /* M-U */
513 F_UNASSIGNED
, /* M-V */
514 F_COPYREGION
, /* M-W */
515 F_UNASSIGNED
, /* M-X */
516 F_YANK_POP
, /* M-Y */
517 F_UNASSIGNED
, /* M-Z */
518 F_XKEY
, /* M-[ *//* extended key esc -mf Oct 87 */
519 F_UNASSIGNED
, /* M-\ */
520 F_UNASSIGNED
, /* M-] */
521 F_UNASSIGNED
, /* M-^ */
522 F_LAST_ITEM
, /* M-_ */
523 F_UNASSIGNED
, /* M-` */
524 F_NEWLINE_HOLD
, /* M-a */
525 F_WORDBACK
, /* M-b */
526 F_CASECAPITAL
, /* M-c */
527 F_DELWORDNEXT
, /* M-d */
528 F_UNASSIGNED
, /* M-e */
530 F_UNASSIGNED
, /* M-g */
532 F_UNASSIGNED
, /* M-i */
533 F_UNASSIGNED
, /* M-j */
534 F_UNASSIGNED
, /* M-k */
535 F_CASELOWER
, /* M-l */
536 F_UNASSIGNED
, /* M-m */
537 F_DOWN_SEARCH_HIST
, /* M-n */
538 F_UNASSIGNED
, /* M-o */
539 F_UP_SEARCH_HIST
, /* M-p */
540 F_UNASSIGNED
, /* M-q */
541 F_TOGGLE_HIST
, /* M-r */
543 F_UNASSIGNED
, /* M-t */
544 F_CASEUPPER
, /* M-u */
545 F_UNASSIGNED
, /* M-v */
546 F_COPYREGION
, /* M-w */
547 F_UNASSIGNED
, /* M-x */
548 F_YANK_POP
, /* M-y */
549 F_UNASSIGNED
, /* M-z */
550 F_UNASSIGNED
, /* M-{ */
551 F_UNASSIGNED
, /* M-| */
552 F_UNASSIGNED
, /* M-} */
553 F_UNASSIGNED
, /* M-~ */
554 F_DELWORDPREV
/* M-^? */
558 * keymap table for vi. Each index into above tbl; should be
559 * 256 entries long. Vi mode uses a sticky-extend to do command mode:
560 * insert mode characters are in the normal keymap, and command mode
561 * in the extended keymap.
563 static KEYCMD CcViMap
[] = {
565 F_UNASSIGNED
, /* ^@ */
573 V_DELPREV
, /* ^H */ /* BackSpace key */
574 F_COMPLETE
, /* ^I */ /* Tab Key */
582 F_TTY_STARTO
, /* ^Q */
588 F_DELWORDPREV
, /* ^W */ /* Only until start edit pos */
592 V_CMD_MODE
, /* ^[ */ /* [ Esc ] key */
598 F_UNASSIGNED
, /* ^@ */ /* NOTE: These mapping do NOT */
599 F_TOBEG
, /* ^A */ /* Correspond well to the KSH */
600 F_CHARBACK
, /* ^B */ /* VI editting assignments */
601 F_TTY_INT
, /* ^C */ /* On the other hand they are */
602 F_LIST_EOF
, /* ^D */ /* convenient any many people */
603 F_TOEND
, /* ^E */ /* have gotten used to them */
605 F_LIST_GLOB
, /* ^G */
606 F_DELPREV
, /* ^H */ /* BackSpace key */
607 F_COMPLETE
, /* ^I */ /* Tab Key */
610 F_CLEARDISP
, /* ^L */
612 F_DOWN_HIST
, /* ^N */
613 F_TTY_FLUSHO
, /* ^O */
615 F_TTY_STARTO
, /* ^Q */
617 F_TTY_STOPO
, /* ^S */
618 F_CHARSWITCH
, /* ^T */
621 F_DELWORDPREV
, /* ^W */
623 F_TTY_DSUSP
, /* ^Y */
624 F_TTY_TSUSP
, /* ^Z */
627 F_UNASSIGNED
, /* ^] */
628 F_UNASSIGNED
, /* ^^ */
629 F_UNASSIGNED
, /* ^_ */
631 F_INSERT
, /* SPACE */
727 F_UNASSIGNED
, /* M-^@ */
728 F_UNASSIGNED
, /* M-^A */
729 F_UNASSIGNED
, /* M-^B */
730 F_UNASSIGNED
, /* M-^C */
731 F_UNASSIGNED
, /* M-^D */
732 F_UNASSIGNED
, /* M-^E */
733 F_UNASSIGNED
, /* M-^F */
734 F_UNASSIGNED
, /* M-^G */
735 F_UNASSIGNED
, /* M-^H */
736 F_UNASSIGNED
, /* M-^I */
737 F_UNASSIGNED
, /* M-^J */
738 F_UNASSIGNED
, /* M-^K */
739 F_UNASSIGNED
, /* M-^L */
740 F_UNASSIGNED
, /* M-^M */
741 F_UNASSIGNED
, /* M-^N */
742 F_UNASSIGNED
, /* M-^O */
743 F_UNASSIGNED
, /* M-^P */
744 F_UNASSIGNED
, /* M-^Q */
745 F_UNASSIGNED
, /* M-^R */
746 F_UNASSIGNED
, /* M-^S */
747 F_UNASSIGNED
, /* M-^T */
748 F_UNASSIGNED
, /* M-^U */
749 F_UNASSIGNED
, /* M-^V */
750 F_UNASSIGNED
, /* M-^W */
751 F_UNASSIGNED
, /* M-^X */
752 F_UNASSIGNED
, /* M-^Y */
753 F_UNASSIGNED
, /* M-^Z */
754 F_UNASSIGNED
, /* M-^[ */
755 F_UNASSIGNED
, /* M-^\ */
756 F_UNASSIGNED
, /* M-^] */
757 F_UNASSIGNED
, /* M-^^ */
758 F_UNASSIGNED
, /* M-^_ */
759 F_UNASSIGNED
, /* M-SPACE */
760 F_UNASSIGNED
, /* M-! */
761 F_UNASSIGNED
, /* M-" */
762 F_UNASSIGNED
, /* M-# */
763 F_UNASSIGNED
, /* M-$ */
764 F_UNASSIGNED
, /* M-% */
765 F_UNASSIGNED
, /* M-& */
766 F_UNASSIGNED
, /* M-' */
767 F_UNASSIGNED
, /* M-( */
768 F_UNASSIGNED
, /* M-) */
769 F_UNASSIGNED
, /* M-* */
770 F_UNASSIGNED
, /* M-+ */
771 F_UNASSIGNED
, /* M-, */
772 F_UNASSIGNED
, /* M-- */
773 F_UNASSIGNED
, /* M-. */
774 F_UNASSIGNED
, /* M-/ */
775 F_UNASSIGNED
, /* M-0 */
776 F_UNASSIGNED
, /* M-1 */
777 F_UNASSIGNED
, /* M-2 */
778 F_UNASSIGNED
, /* M-3 */
779 F_UNASSIGNED
, /* M-4 */
780 F_UNASSIGNED
, /* M-5 */
781 F_UNASSIGNED
, /* M-6 */
782 F_UNASSIGNED
, /* M-7 */
783 F_UNASSIGNED
, /* M-8 */
784 F_UNASSIGNED
, /* M-9 */
785 F_UNASSIGNED
, /* M-: */
786 F_UNASSIGNED
, /* M-; */
787 F_UNASSIGNED
, /* M-< */
788 F_UNASSIGNED
, /* M-= */
789 F_UNASSIGNED
, /* M-> */
790 F_UNASSIGNED
, /* M-? */
791 F_UNASSIGNED
, /* M-@ */
792 F_UNASSIGNED
, /* M-A */
793 F_UNASSIGNED
, /* M-B */
794 F_UNASSIGNED
, /* M-C */
795 F_UNASSIGNED
, /* M-D */
796 F_UNASSIGNED
, /* M-E */
797 F_UNASSIGNED
, /* M-F */
798 F_UNASSIGNED
, /* M-G */
799 F_UNASSIGNED
, /* M-H */
800 F_UNASSIGNED
, /* M-I */
801 F_UNASSIGNED
, /* M-J */
802 F_UNASSIGNED
, /* M-K */
803 F_UNASSIGNED
, /* M-L */
804 F_UNASSIGNED
, /* M-M */
805 F_UNASSIGNED
, /* M-N */
806 F_UNASSIGNED
, /* M-O */
807 F_UNASSIGNED
, /* M-P */
808 F_UNASSIGNED
, /* M-Q */
809 F_UNASSIGNED
, /* M-R */
810 F_UNASSIGNED
, /* M-S */
811 F_UNASSIGNED
, /* M-T */
812 F_UNASSIGNED
, /* M-U */
813 F_UNASSIGNED
, /* M-V */
814 F_UNASSIGNED
, /* M-W */
815 F_UNASSIGNED
, /* M-X */
816 F_UNASSIGNED
, /* M-Y */
817 F_UNASSIGNED
, /* M-Z */
818 F_UNASSIGNED
, /* M-[ */
819 F_UNASSIGNED
, /* M-\ */
820 F_UNASSIGNED
, /* M-] */
821 F_UNASSIGNED
, /* M-^ */
822 F_UNASSIGNED
, /* M-_ */
823 F_UNASSIGNED
, /* M-` */
824 F_UNASSIGNED
, /* M-a */
825 F_UNASSIGNED
, /* M-b */
826 F_UNASSIGNED
, /* M-c */
827 F_UNASSIGNED
, /* M-d */
828 F_UNASSIGNED
, /* M-e */
829 F_UNASSIGNED
, /* M-f */
830 F_UNASSIGNED
, /* M-g */
831 F_UNASSIGNED
, /* M-h */
832 F_UNASSIGNED
, /* M-i */
833 F_UNASSIGNED
, /* M-j */
834 F_UNASSIGNED
, /* M-k */
835 F_UNASSIGNED
, /* M-l */
836 F_UNASSIGNED
, /* M-m */
837 F_UNASSIGNED
, /* M-n */
838 F_UNASSIGNED
, /* M-o */
839 F_UNASSIGNED
, /* M-p */
840 F_UNASSIGNED
, /* M-q */
841 F_UNASSIGNED
, /* M-r */
842 F_UNASSIGNED
, /* M-s */
843 F_UNASSIGNED
, /* M-t */
844 F_UNASSIGNED
, /* M-u */
845 F_UNASSIGNED
, /* M-v */
846 F_UNASSIGNED
, /* M-w */
847 F_UNASSIGNED
, /* M-x */
848 F_UNASSIGNED
, /* M-y */
849 F_UNASSIGNED
, /* M-z */
850 F_UNASSIGNED
, /* M-{ */
851 F_UNASSIGNED
, /* M-| */
852 F_UNASSIGNED
, /* M-} */
853 F_UNASSIGNED
, /* M-~ */
854 F_UNASSIGNED
/* M-^? */
857 KEYCMD CcViCmdMap
[] = {
858 F_UNASSIGNED
, /* ^@ */
860 F_UNASSIGNED
, /* ^B */
862 F_LIST_CHOICES
, /* ^D */
864 F_UNASSIGNED
, /* ^F */
865 F_LIST_GLOB
, /* ^G */
867 V_CM_COMPLETE
, /* ^I */
870 F_CLEARDISP
, /* ^L */
872 F_DOWN_HIST
, /* ^N */
873 F_TTY_FLUSHO
, /* ^O */
875 F_TTY_STARTO
, /* ^Q */
877 F_TTY_STOPO
, /* ^S */
878 F_UNASSIGNED
, /* ^T */
880 F_UNASSIGNED
, /* ^V */
881 F_DELWORDPREV
, /* ^W */
883 F_UNASSIGNED
, /* ^Y */
884 F_UNASSIGNED
, /* ^Z */
887 F_UNASSIGNED
, /* ^] */
888 F_UNASSIGNED
, /* ^^ */
889 F_UNASSIGNED
, /* ^_ */
890 F_CHARFWD
, /* SPACE */
891 F_EXPAND_HISTORY
, /* ! */
892 F_UNASSIGNED
, /* " */
893 F_UNASSIGNED
, /* # */
895 F_UNASSIGNED
, /* % */
896 F_UNASSIGNED
, /* & */
897 F_UNASSIGNED
, /* ' */
898 F_UNASSIGNED
, /* ( */
899 F_UNASSIGNED
, /* ) */
900 F_EXPAND_GLOB
, /* * */
902 V_RCHAR_BACK
, /* , */
904 F_UNASSIGNED
, /* . */
916 F_UNASSIGNED
, /* : */
918 F_UNASSIGNED
, /* < */
919 F_UNASSIGNED
, /* = */
920 F_UNASSIGNED
, /* > */
922 F_UNASSIGNED
, /* @ */
929 F_UNASSIGNED
, /* G */
930 F_UNASSIGNED
, /* H */
932 F_DOWN_SEARCH_HIST
, /* J */
933 F_UP_SEARCH_HIST
, /* K */
934 F_UNASSIGNED
, /* L */
935 F_UNASSIGNED
, /* M */
936 V_RSRCH_BACK
, /* N */
938 F_UNASSIGNED
, /* P */
939 F_UNASSIGNED
, /* Q */
942 V_CHARTO_BACK
, /* T */
943 F_UNASSIGNED
, /* U */
944 F_EXPAND_VARS
, /* V */
947 F_UNASSIGNED
, /* Y */
948 F_UNASSIGNED
, /* Z */
950 F_UNASSIGNED
, /* \ */
951 F_UNASSIGNED
, /* ] */
953 F_UNASSIGNED
, /* _ */
954 F_UNASSIGNED
, /* ` */
961 F_UNASSIGNED
, /* g */
967 F_UNASSIGNED
, /* m */
969 F_UNASSIGNED
, /* o */
970 F_UNASSIGNED
, /* p */
971 F_UNASSIGNED
, /* q */
974 V_CHARTO_FWD
, /* t */
976 F_EXPAND_VARS
, /* v */
977 V_WORDBEGNEXT
, /* w */
978 F_DELNEXT_EOF
, /* x */
979 F_UNASSIGNED
, /* y */
980 F_UNASSIGNED
, /* z */
981 F_UNASSIGNED
, /* { */
982 F_UNASSIGNED
, /* | */
983 F_UNASSIGNED
, /* } */
986 F_UNASSIGNED
, /* M-^@ */
987 F_UNASSIGNED
, /* M-^A */
988 F_UNASSIGNED
, /* M-^B */
989 F_UNASSIGNED
, /* M-^C */
990 F_UNASSIGNED
, /* M-^D */
991 F_UNASSIGNED
, /* M-^E */
992 F_UNASSIGNED
, /* M-^F */
993 F_UNASSIGNED
, /* M-^G */
994 F_UNASSIGNED
, /* M-^H */
995 F_UNASSIGNED
, /* M-^I */
996 F_UNASSIGNED
, /* M-^J */
997 F_UNASSIGNED
, /* M-^K */
998 F_UNASSIGNED
, /* M-^L */
999 F_UNASSIGNED
, /* M-^M */
1000 F_UNASSIGNED
, /* M-^N */
1001 F_UNASSIGNED
, /* M-^O */
1002 F_UNASSIGNED
, /* M-^P */
1003 F_UNASSIGNED
, /* M-^Q */
1004 F_UNASSIGNED
, /* M-^R */
1005 F_UNASSIGNED
, /* M-^S */
1006 F_UNASSIGNED
, /* M-^T */
1007 F_UNASSIGNED
, /* M-^U */
1008 F_UNASSIGNED
, /* M-^V */
1009 F_UNASSIGNED
, /* M-^W */
1010 F_UNASSIGNED
, /* M-^X */
1011 F_UNASSIGNED
, /* M-^Y */
1012 F_UNASSIGNED
, /* M-^Z */
1013 F_UNASSIGNED
, /* M-^[ */
1014 F_UNASSIGNED
, /* M-^\ */
1015 F_UNASSIGNED
, /* M-^] */
1016 F_UNASSIGNED
, /* M-^^ */
1017 F_UNASSIGNED
, /* M-^_ */
1018 F_UNASSIGNED
, /* M-SPACE */
1019 F_UNASSIGNED
, /* M-! */
1020 F_UNASSIGNED
, /* M-" */
1021 F_UNASSIGNED
, /* M-# */
1022 F_UNASSIGNED
, /* M-$ */
1023 F_UNASSIGNED
, /* M-% */
1024 F_UNASSIGNED
, /* M-& */
1025 F_UNASSIGNED
, /* M-' */
1026 F_UNASSIGNED
, /* M-( */
1027 F_UNASSIGNED
, /* M-) */
1028 F_UNASSIGNED
, /* M-* */
1029 F_UNASSIGNED
, /* M-+ */
1030 F_UNASSIGNED
, /* M-, */
1031 F_UNASSIGNED
, /* M-- */
1032 F_UNASSIGNED
, /* M-. */
1033 F_UNASSIGNED
, /* M-/ */
1034 F_UNASSIGNED
, /* M-0 */
1035 F_UNASSIGNED
, /* M-1 */
1036 F_UNASSIGNED
, /* M-2 */
1037 F_UNASSIGNED
, /* M-3 */
1038 F_UNASSIGNED
, /* M-4 */
1039 F_UNASSIGNED
, /* M-5 */
1040 F_UNASSIGNED
, /* M-6 */
1041 F_UNASSIGNED
, /* M-7 */
1042 F_UNASSIGNED
, /* M-8 */
1043 F_UNASSIGNED
, /* M-9 */
1044 F_UNASSIGNED
, /* M-: */
1045 F_UNASSIGNED
, /* M-; */
1046 F_UNASSIGNED
, /* M-< */
1047 F_UNASSIGNED
, /* M-= */
1048 F_UNASSIGNED
, /* M-> */
1050 F_UNASSIGNED
, /* M-@ */
1051 F_UNASSIGNED
, /* M-A */
1052 F_UNASSIGNED
, /* M-B */
1053 F_UNASSIGNED
, /* M-C */
1054 F_UNASSIGNED
, /* M-D */
1055 F_UNASSIGNED
, /* M-E */
1056 F_UNASSIGNED
, /* M-F */
1057 F_UNASSIGNED
, /* M-G */
1058 F_UNASSIGNED
, /* M-H */
1059 F_UNASSIGNED
, /* M-I */
1060 F_UNASSIGNED
, /* M-J */
1061 F_UNASSIGNED
, /* M-K */
1062 F_UNASSIGNED
, /* M-L */
1063 F_UNASSIGNED
, /* M-M */
1064 F_UNASSIGNED
, /* M-N */
1065 F_XKEY
, /* M-O *//* extended key esc PWP Mar 88 */
1066 F_UNASSIGNED
, /* M-P */
1067 F_UNASSIGNED
, /* M-Q */
1068 F_UNASSIGNED
, /* M-R */
1069 F_UNASSIGNED
, /* M-S */
1070 F_UNASSIGNED
, /* M-T */
1071 F_UNASSIGNED
, /* M-U */
1072 F_UNASSIGNED
, /* M-V */
1073 F_UNASSIGNED
, /* M-W */
1074 F_UNASSIGNED
, /* M-X */
1075 F_UNASSIGNED
, /* M-Y */
1076 F_UNASSIGNED
, /* M-Z */
1077 F_XKEY
, /* M-[ *//* extended key esc -mf Oct 87 */
1078 F_UNASSIGNED
, /* M-\ */
1079 F_UNASSIGNED
, /* M-] */
1080 F_UNASSIGNED
, /* M-^ */
1081 F_UNASSIGNED
, /* M-_ */
1082 F_UNASSIGNED
, /* M-` */
1083 F_UNASSIGNED
, /* M-a */
1084 F_UNASSIGNED
, /* M-b */
1085 F_UNASSIGNED
, /* M-c */
1086 F_UNASSIGNED
, /* M-d */
1087 F_UNASSIGNED
, /* M-e */
1088 F_UNASSIGNED
, /* M-f */
1089 F_UNASSIGNED
, /* M-g */
1090 F_UNASSIGNED
, /* M-h */
1091 F_UNASSIGNED
, /* M-i */
1092 F_UNASSIGNED
, /* M-j */
1093 F_UNASSIGNED
, /* M-k */
1094 F_UNASSIGNED
, /* M-l */
1095 F_UNASSIGNED
, /* M-m */
1096 F_UNASSIGNED
, /* M-n */
1097 F_UNASSIGNED
, /* M-o */
1098 F_UNASSIGNED
, /* M-p */
1099 F_UNASSIGNED
, /* M-q */
1100 F_UNASSIGNED
, /* M-r */
1101 F_UNASSIGNED
, /* M-s */
1102 F_UNASSIGNED
, /* M-t */
1103 F_UNASSIGNED
, /* M-u */
1104 F_UNASSIGNED
, /* M-v */
1105 F_UNASSIGNED
, /* M-w */
1106 F_UNASSIGNED
, /* M-x */
1107 F_UNASSIGNED
, /* M-y */
1108 F_UNASSIGNED
, /* M-z */
1109 F_UNASSIGNED
, /* M-{ */
1110 F_UNASSIGNED
, /* M-| */
1111 F_UNASSIGNED
, /* M-} */
1112 F_UNASSIGNED
, /* M-~ */
1113 F_UNASSIGNED
/* M-^? */
1115 #endif /* WINNT_NATIVE */
1123 #if defined(NLS_CATALOGS) || defined(WINNT_NATIVE)
1126 for (i
= 0; i
< F_NUM_FUNCNAMES
; i
++)
1127 xfree((ptr_t
)(intptr_t)FuncNames
[i
].desc
);
1131 f
->name
= "backward-char";
1132 f
->func
= F_CHARBACK
;
1133 f
->desc
= CSAVS(3, 1, "Move back a character");
1136 f
->name
= "backward-delete-char";
1137 f
->func
= F_DELPREV
;
1138 f
->desc
= CSAVS(3, 2, "Delete the character behind cursor");
1141 f
->name
= "backward-delete-word";
1142 f
->func
= F_DELWORDPREV
;
1143 f
->desc
= CSAVS(3, 3,
1144 "Cut from beginning of current word to cursor - saved in cut buffer");
1147 f
->name
= "backward-kill-line";
1148 f
->func
= F_KILLBEG
;
1149 f
->desc
= CSAVS(3, 4,
1150 "Cut from beginning of line to cursor - save in cut buffer");
1153 f
->name
= "backward-word";
1154 f
->func
= F_WORDBACK
;
1155 f
->desc
= CSAVS(3, 5, "Move to beginning of current word");
1158 f
->name
= "beginning-of-line";
1160 f
->desc
= CSAVS(3, 6, "Move to beginning of line");
1163 f
->name
= "capitalize-word";
1164 f
->func
= F_CASECAPITAL
;
1165 f
->desc
= CSAVS(3, 7,
1166 "Capitalize the characters from cursor to end of current word");
1169 f
->name
= "change-case";
1170 f
->func
= V_CHGCASE
;
1171 f
->desc
= CSAVS(3, 8,
1172 "Vi change case of character under cursor and advance one character");
1175 f
->name
= "change-till-end-of-line";
1176 f
->func
= V_CHGTOEND
; /* backward compat. */
1177 f
->desc
= CSAVS(3, 9, "Vi change to end of line");
1180 f
->name
= "clear-screen";
1181 f
->func
= F_CLEARDISP
;
1182 f
->desc
= CSAVS(3, 10, "Clear screen leaving current line on top");
1185 f
->name
= "complete-word";
1186 f
->func
= F_COMPLETE
;
1187 f
->desc
= CSAVS(3, 11, "Complete current word");
1190 f
->name
= "complete-word-fwd";
1191 f
->func
= F_COMPLETE_FWD
;
1192 f
->desc
= CSAVS(3, 12, "Tab forward through files");
1195 f
->name
= "complete-word-back";
1196 f
->func
= F_COMPLETE_BACK
;
1197 f
->desc
= CSAVS(3, 13, "Tab backward through files");
1200 f
->name
= "complete-word-raw";
1201 f
->func
= F_COMPLETE_ALL
;
1202 f
->desc
= CSAVS(3, 14,
1203 "Complete current word ignoring programmable completions");
1206 f
->name
= "copy-prev-word";
1207 f
->func
= F_COPYPREV
;
1208 f
->desc
= CSAVS(3, 15, "Copy current word to cursor");
1211 f
->name
= "copy-region-as-kill";
1212 f
->func
= F_COPYREGION
;
1213 f
->desc
= CSAVS(3, 16, "Copy area between mark and cursor to cut buffer");
1216 f
->name
= "dabbrev-expand";
1217 f
->func
= F_DABBREV_EXPAND
;
1218 f
->desc
= CSAVS(3, 17,
1219 "Expand to preceding word for which this is a prefix");
1222 f
->name
= "delete-char";
1223 f
->func
= F_DELNEXT
;
1224 f
->desc
= CSAVS(3, 18, "Delete character under cursor");
1227 f
->name
= "delete-char-or-eof";
1228 f
->func
= F_DELNEXT_EOF
;
1229 f
->desc
= CSAVS(3, 19,
1230 "Delete character under cursor or signal end of file on an empty line");
1233 f
->name
= "delete-char-or-list";
1234 f
->func
= F_DELNEXT_LIST
;
1235 f
->desc
= CSAVS(3, 20,
1236 "Delete character under cursor or list completions if at end of line");
1239 f
->name
= "delete-char-or-list-or-eof";
1240 f
->func
= F_DELNEXT_LIST_EOF
;
1241 f
->desc
= CSAVS(3, 21,
1242 "Delete character under cursor, list completions or signal end of file");
1245 f
->name
= "delete-word";
1246 f
->func
= F_DELWORDNEXT
;
1247 f
->desc
= CSAVS(3, 22,
1248 "Cut from cursor to end of current word - save in cut buffer");
1253 f
->desc
= CSAVS(3, 23, "Adds to argument if started or enters digit");
1256 f
->name
= "digit-argument";
1257 f
->func
= F_ARGDIGIT
;
1258 f
->desc
= CSAVS(3, 24, "Digit that starts argument");
1261 f
->name
= "down-history";
1262 f
->func
= F_DOWN_HIST
;
1263 f
->desc
= CSAVS(3, 25, "Move to next history line");
1266 f
->name
= "downcase-word";
1267 f
->func
= F_CASELOWER
;
1268 f
->desc
= CSAVS(3, 26,
1269 "Lowercase the characters from cursor to end of current word");
1272 f
->name
= "end-of-file";
1273 f
->func
= F_SEND_EOF
;
1274 f
->desc
= CSAVS(3, 27, "Indicate end of file");
1277 f
->name
= "end-of-line";
1279 f
->desc
= CSAVS(3, 28, "Move cursor to end of line");
1282 f
->name
= "exchange-point-and-mark";
1283 f
->func
= F_EXCHANGE_MARK
;
1284 f
->desc
= CSAVS(3, 29, "Exchange the cursor and mark");
1287 f
->name
= "expand-glob";
1288 f
->func
= F_EXPAND_GLOB
;
1289 f
->desc
= CSAVS(3, 30, "Expand file name wildcards");
1292 f
->name
= "expand-history";
1293 f
->func
= F_EXPAND_HISTORY
;
1294 f
->desc
= CSAVS(3, 31, "Expand history escapes");
1297 f
->name
= "expand-line";
1299 f
->desc
= CSAVS(3, 32, "Expand the history escapes in a line");
1302 f
->name
= "expand-variables";
1303 f
->func
= F_EXPAND_VARS
;
1304 f
->desc
= CSAVS(3, 33, "Expand variables");
1307 f
->name
= "forward-char";
1308 f
->func
= F_CHARFWD
;
1309 f
->desc
= CSAVS(3, 34, "Move forward one character");
1312 f
->name
= "forward-word";
1313 f
->func
= F_WORDFWD
;
1314 f
->desc
= CSAVS(3, 35, "Move forward to end of current word");
1317 f
->name
= "gosmacs-transpose-chars";
1318 f
->func
= F_GCHARSWITCH
;
1319 f
->desc
= CSAVS(3, 36, "Exchange the two characters before the cursor");
1322 f
->name
= "history-search-backward";
1323 f
->func
= F_UP_SEARCH_HIST
;
1324 f
->desc
= CSAVS(3, 37,
1325 "Search in history backward for line beginning as current");
1328 f
->name
= "history-search-forward";
1329 f
->func
= F_DOWN_SEARCH_HIST
;
1330 f
->desc
= CSAVS(3, 38,
1331 "Search in history forward for line beginning as current");
1334 f
->name
= "insert-last-word";
1335 f
->func
= F_LAST_ITEM
;
1336 f
->desc
= CSAVS(3, 39, "Insert last item of previous command");
1339 f
->name
= "i-search-fwd";
1340 f
->func
= F_INC_FWD
;
1341 f
->desc
= CSAVS(3, 40, "Incremental search forward");
1344 f
->name
= "i-search-back";
1345 f
->func
= F_INC_BACK
;
1346 f
->desc
= CSAVS(3, 41, "Incremental search backward");
1349 f
->name
= "keyboard-quit";
1350 f
->func
= F_STARTOVER
;
1351 f
->desc
= CSAVS(3, 42, "Clear line");
1354 f
->name
= "kill-line";
1355 f
->func
= F_KILLEND
;
1356 f
->desc
= CSAVS(3, 43, "Cut to end of line and save in cut buffer");
1359 f
->name
= "kill-region";
1360 f
->func
= F_KILLREGION
;
1361 f
->desc
= CSAVS(3, 44,
1362 "Cut area between mark and cursor and save in cut buffer");
1365 f
->name
= "kill-whole-line";
1366 f
->func
= F_KILLALL
;
1367 f
->desc
= CSAVS(3, 45, "Cut the entire line and save in cut buffer");
1370 f
->name
= "list-choices";
1371 f
->func
= F_LIST_CHOICES
;
1372 f
->desc
= CSAVS(3, 46, "List choices for completion");
1375 f
->name
= "list-choices-raw";
1376 f
->func
= F_LIST_ALL
;
1377 f
->desc
= CSAVS(3, 47,
1378 "List choices for completion overriding programmable completion");
1381 f
->name
= "list-glob";
1382 f
->func
= F_LIST_GLOB
;
1383 f
->desc
= CSAVS(3, 48, "List file name wildcard matches");
1386 f
->name
= "list-or-eof";
1387 f
->func
= F_LIST_EOF
;
1388 f
->desc
= CSAVS(3, 49,
1389 "List choices for completion or indicate end of file if empty line");
1392 f
->name
= "load-average";
1393 f
->func
= F_LOAD_AVERAGE
;
1394 f
->desc
= CSAVS(3, 50, "Display load average and current process status");
1397 f
->name
= "magic-space";
1398 f
->func
= F_MAGIC_SPACE
;
1399 f
->desc
= CSAVS(3, 51, "Expand history escapes and insert a space");
1402 f
->name
= "newline";
1403 f
->func
= F_NEWLINE
;
1404 f
->desc
= CSAVS(3, 52, "Execute command");
1407 f
->name
= "newline-and-hold";
1408 f
->func
= F_NEWLINE_HOLD
;
1409 f
->desc
= CSAVS(3, 122, "Execute command and keep current line");
1412 f
->name
= "newline-and-down-history";
1413 f
->func
= F_NEWLINE_DOWN_HIST
;
1414 f
->desc
= CSAVS(3, 123, "Execute command and move to next history line");
1417 f
->name
= "normalize-path";
1418 f
->func
= F_PATH_NORM
;
1419 f
->desc
= CSAVS(3, 53,
1420 "Expand pathnames, eliminating leading .'s and ..'s");
1423 f
->name
= "normalize-command";
1424 f
->func
= F_COMMAND_NORM
;
1425 f
->desc
= CSAVS(3, 54,
1426 "Expand commands to the resulting pathname or alias");
1429 f
->name
= "overwrite-mode";
1431 f
->desc
= CSAVS(3, 55,
1432 "Switch from insert to overwrite mode or vice versa");
1435 f
->name
= "prefix-meta";
1436 f
->func
= F_METANEXT
;
1437 f
->desc
= CSAVS(3, 56, "Add 8th bit to next character typed");
1440 f
->name
= "quoted-insert";
1442 f
->desc
= CSAVS(3, 57, "Add the next character typed to the line verbatim");
1445 f
->name
= "redisplay";
1447 f
->desc
= CSAVS(3, 58, "Redisplay everything");
1450 f
->name
= "run-fg-editor";
1451 f
->func
= F_RUN_FG_EDITOR
;
1452 f
->desc
= CSAVS(3, 59, "Restart stopped editor");
1455 f
->name
= "run-help";
1457 f
->desc
= CSAVS(3, 60, "Look for help on current command");
1460 f
->name
= "self-insert-command";
1462 f
->desc
= CSAVS(3, 61, "This character is added to the line");
1465 f
->name
= "sequence-lead-in";
1467 f
->desc
= CSAVS(3, 62,
1468 "This character is the first in a character sequence");
1471 f
->name
= "set-mark-command";
1472 f
->func
= F_SET_MARK
;
1473 f
->desc
= CSAVS(3, 63, "Set the mark at cursor");
1476 f
->name
= "spell-word";
1477 f
->func
= F_CORRECT
;
1478 f
->desc
= CSAVS(3, 64, "Correct the spelling of current word");
1481 f
->name
= "spell-line";
1482 f
->func
= F_CORRECT_L
;
1483 f
->desc
= CSAVS(3, 65, "Correct the spelling of entire line");
1486 f
->name
= "stuff-char";
1487 f
->func
= F_STUFF_CHAR
;
1488 f
->desc
= CSAVS(3, 66, "Send character to tty in cooked mode");
1491 f
->name
= "toggle-literal-history";
1492 f
->func
= F_TOGGLE_HIST
;
1493 f
->desc
= CSAVS(3, 67,
1494 "Toggle between literal and lexical current history line");
1497 f
->name
= "transpose-chars";
1498 f
->func
= F_CHARSWITCH
;
1499 f
->desc
= CSAVS(3, 68,
1500 "Exchange the character to the left of the cursor with the one under");
1503 f
->name
= "transpose-gosling";
1504 f
->func
= F_GCHARSWITCH
;
1505 f
->desc
= CSAVS(3, 69, "Exchange the two characters before the cursor");
1508 f
->name
= "tty-dsusp";
1509 f
->func
= F_TTY_DSUSP
;
1510 f
->desc
= CSAVS(3, 70, "Tty delayed suspend character");
1513 f
->name
= "tty-flush-output";
1514 f
->func
= F_TTY_FLUSHO
;
1515 f
->desc
= CSAVS(3, 71, "Tty flush output character");
1518 f
->name
= "tty-sigintr";
1519 f
->func
= F_TTY_INT
;
1520 f
->desc
= CSAVS(3, 72, "Tty interrupt character");
1523 f
->name
= "tty-sigquit";
1524 f
->func
= F_TTY_QUIT
;
1525 f
->desc
= CSAVS(3, 73, "Tty quit character");
1528 f
->name
= "tty-sigtsusp";
1529 f
->func
= F_TTY_TSUSP
;
1530 f
->desc
= CSAVS(3, 74, "Tty suspend character");
1533 f
->name
= "tty-start-output";
1534 f
->func
= F_TTY_STARTO
;
1535 f
->desc
= CSAVS(3, 75, "Tty allow output character");
1538 f
->name
= "tty-stop-output";
1539 f
->func
= F_TTY_STOPO
;
1540 f
->desc
= CSAVS(3, 76, "Tty disallow output character");
1543 f
->name
= "undefined-key";
1544 f
->func
= F_UNASSIGNED
;
1545 f
->desc
= CSAVS(3, 77, "Indicates unbound character");
1548 f
->name
= "universal-argument";
1549 f
->func
= F_ARGFOUR
;
1550 f
->desc
= CSAVS(3, 78, "Emacs universal argument (argument times 4)");
1553 f
->name
= "up-history";
1554 f
->func
= F_UP_HIST
;
1555 f
->desc
= CSAVS(3, 79, "Move to previous history line");
1558 f
->name
= "upcase-word";
1559 f
->func
= F_CASEUPPER
;
1560 f
->desc
= CSAVS(3, 80,
1561 "Uppercase the characters from cursor to end of current word");
1564 f
->name
= "vi-beginning-of-next-word";
1565 f
->func
= V_WORDBEGNEXT
;
1566 f
->desc
= CSAVS(3, 81, "Vi goto the beginning of next word");
1571 f
->desc
= CSAVS(3, 82, "Vi enter insert mode after the cursor");
1574 f
->name
= "vi-add-at-eol";
1576 f
->desc
= CSAVS(3, 83, "Vi enter insert mode at end of line");
1579 f
->name
= "vi-chg-case";
1580 f
->func
= V_CHGCASE
;
1581 f
->desc
= CSAVS(3, 84,
1582 "Vi change case of character under cursor and advance one character");
1585 f
->name
= "vi-chg-meta";
1586 f
->func
= V_CHGMETA
;
1587 f
->desc
= CSAVS(3, 85, "Vi change prefix command");
1590 f
->name
= "vi-chg-to-eol";
1591 f
->func
= V_CHGTOEND
;
1592 f
->desc
= CSAVS(3, 86, "Vi change to end of line");
1595 f
->name
= "vi-cmd-mode";
1596 f
->func
= V_CMD_MODE
;
1597 f
->desc
= CSAVS(3, 87,
1598 "Enter vi command mode (use alternative key bindings)");
1601 f
->name
= "vi-cmd-mode-complete";
1602 f
->func
= V_CM_COMPLETE
;
1603 f
->desc
= CSAVS(3, 88, "Vi command mode complete current word");
1606 f
->name
= "vi-delprev";
1607 f
->func
= V_DELPREV
;
1608 f
->desc
= CSAVS(3, 89, "Vi move to previous character (backspace)");
1611 f
->name
= "vi-delmeta";
1612 f
->func
= V_DELMETA
;
1613 f
->desc
= CSAVS(3, 90, "Vi delete prefix command");
1616 f
->name
= "vi-endword";
1617 f
->func
= V_ENDWORD
;
1618 f
->desc
= CSAVS(3, 91,
1619 "Vi move to the end of the current space delimited word");
1622 f
->name
= "vi-eword";
1624 f
->desc
= CSAVS(3, 92, "Vi move to the end of the current word");
1627 f
->name
= "vi-char-back";
1628 f
->func
= V_CHAR_BACK
;
1629 f
->desc
= CSAVS(3, 93, "Vi move to the character specified backward");
1632 f
->name
= "vi-char-fwd";
1633 f
->func
= V_CHAR_FWD
;
1634 f
->desc
= CSAVS(3, 94, "Vi move to the character specified forward");
1637 f
->name
= "vi-charto-back";
1638 f
->func
= V_CHARTO_BACK
;
1639 f
->desc
= CSAVS(3, 95, "Vi move up to the character specified backward");
1642 f
->name
= "vi-charto-fwd";
1643 f
->func
= V_CHARTO_FWD
;
1644 f
->desc
= CSAVS(3, 96, "Vi move up to the character specified forward");
1647 f
->name
= "vi-insert";
1649 f
->desc
= CSAVS(3, 97, "Enter vi insert mode");
1652 f
->name
= "vi-insert-at-bol";
1654 f
->desc
= CSAVS(3, 98, "Enter vi insert mode at beginning of line");
1657 f
->name
= "vi-repeat-char-fwd";
1658 f
->func
= V_RCHAR_FWD
;
1659 f
->desc
= CSAVS(3, 99,
1660 "Vi repeat current character search in the same search direction");
1663 f
->name
= "vi-repeat-char-back";
1664 f
->func
= V_RCHAR_BACK
;
1665 f
->desc
= CSAVS(3, 100,
1666 "Vi repeat current character search in the opposite search direction");
1669 f
->name
= "vi-repeat-search-fwd";
1670 f
->func
= V_RSRCH_FWD
;
1671 f
->desc
= CSAVS(3, 101,
1672 "Vi repeat current search in the same search direction");
1675 f
->name
= "vi-repeat-search-back";
1676 f
->func
= V_RSRCH_BACK
;
1677 f
->desc
= CSAVS(3, 102,
1678 "Vi repeat current search in the opposite search direction");
1681 f
->name
= "vi-replace-char";
1682 f
->func
= V_REPLONE
;
1683 f
->desc
= CSAVS(3, 103,
1684 "Vi replace character under the cursor with the next character typed");
1687 f
->name
= "vi-replace-mode";
1688 f
->func
= V_REPLMODE
;
1689 f
->desc
= CSAVS(3, 104, "Vi replace mode");
1692 f
->name
= "vi-search-back";
1693 f
->func
= V_USH_META
;
1694 f
->desc
= CSAVS(3, 105, "Vi search history backward");
1697 f
->name
= "vi-search-fwd";
1698 f
->func
= V_DSH_META
;
1699 f
->desc
= CSAVS(3, 106, "Vi search history forward");
1702 f
->name
= "vi-substitute-char";
1703 f
->func
= V_SUBSTCHAR
;
1704 f
->desc
= CSAVS(3, 107,
1705 "Vi replace character under the cursor and enter insert mode");
1708 f
->name
= "vi-substitute-line";
1709 f
->func
= V_SUBSTLINE
;
1710 f
->desc
= CSAVS(3, 108, "Vi replace entire line");
1713 f
->name
= "vi-word-back";
1714 f
->func
= V_WORDBACK
;
1715 f
->desc
= CSAVS(3, 109, "Vi move to the previous word");
1718 f
->name
= "vi-word-fwd";
1719 f
->func
= V_WORDFWD
;
1720 f
->desc
= CSAVS(3, 110, "Vi move to the next word");
1723 f
->name
= "vi-undo";
1725 f
->desc
= CSAVS(3, 111, "Vi undo last change");
1728 f
->name
= "vi-zero";
1730 f
->desc
= CSAVS(3, 112, "Vi goto the beginning of line");
1733 f
->name
= "which-command";
1735 f
->desc
= CSAVS(3, 113, "Perform which of current command");
1739 f
->func
= F_YANK_KILL
;
1740 f
->desc
= CSAVS(3, 114, "Paste cut buffer at cursor position");
1743 f
->name
= "yank-pop";
1744 f
->func
= F_YANK_POP
;
1745 f
->desc
= CSAVS(3, 115,
1746 "Replace just-yanked text with yank from earlier kill");
1749 f
->name
= "e_dosify_next";
1750 f
->func
= F_DOSIFY_NEXT
;
1751 f
->desc
= CSAVS(3, 118,
1752 "(WIN32 only) Convert each '/' in next word to '\\\\'");
1755 f
->name
= "e_dosify_prev";
1756 f
->func
= F_DOSIFY_PREV
;
1757 f
->desc
= CSAVS(3, 119,
1758 "(WIN32 only) Convert each '/' in previous word to '\\\\'");
1761 f
->name
= "e_page_up";
1762 f
->func
= F_PAGE_UP
;
1763 f
->desc
= CSAVS(3, 120, "(WIN32 only) Page visible console window up");
1766 f
->name
= "e_page_down";
1767 f
->func
= F_PAGE_DOWN
;
1768 f
->desc
= CSAVS(3, 121, "(WIN32 only) Page visible console window down");
1776 if (f
- FuncNames
!= F_NUM_FUNCNAMES
)
1783 { /* check the size of the key maps */
1784 size_t c1
= NT_NUM_KEYS
* sizeof(KEYCMD
);
1786 if (sizeof(CcKeyMap
) != c1
)
1787 xprintf("CcKeyMap should be %u entries, but is %zu.\r\n",
1788 NT_NUM_KEYS
, sizeof(CcKeyMap
) / sizeof(KEYCMD
));
1790 if (sizeof(CcAltMap
) != c1
)
1791 xprintf("CcAltMap should be %u entries, but is %zu.\r\n",
1792 NT_NUM_KEYS
, sizeof(CcAltMap
) / sizeof(KEYCMD
));
1794 if (sizeof(CcEmacsMap
) != c1
)
1795 xprintf("CcEmacsMap should be %u entries, but is %zu.\r\n",
1796 NT_NUM_KEYS
, sizeof(CcEmacsMap
) / sizeof(KEYCMD
));
1798 if (sizeof(CcViMap
) != c1
)
1799 xprintf("CcViMap should be %u entries, but is %zu.\r\n",
1800 NT_NUM_KEYS
, sizeof(CcViMap
) / sizeof(KEYCMD
));
1802 if (sizeof(CcViCmdMap
) != c1
)
1803 xprintf("CcViCmdMap should be %u entries, but is %zu.\r\n",
1804 NT_NUM_KEYS
, sizeof(CcViCmdMap
) / sizeof(KEYCMD
));
1809 int MapsAreInited
= 0;
1810 int NLSMapsAreInited
= 0;
1814 ed_InitNLSMaps(void)
1822 for (i
= 0200; i
<= 0377; i
++) {
1823 if (Isprint(CTL_ESC(i
))) {
1824 CcKeyMap
[CTL_ESC(i
)] = F_INSERT
;
1827 NLSMapsAreInited
= 1;
1831 ed_InitMetaBindings(void)
1839 for (i
= 0; i
<= 0377 && CcKeyMap
[CTL_ESC(i
)] != F_METANEXT
; i
++)
1842 for (i
= 0; i
<= 0377 && CcAltMap
[CTL_ESC(i
)] != F_METANEXT
; i
++)
1853 buf
[0] = (Char
)CTL_ESC(i
);
1857 for (i
= 0200; i
<= 0377; i
++) {
1858 if (map
[CTL_ESC(i
)] != F_INSERT
&& map
[CTL_ESC(i
)] != F_UNASSIGNED
&& map
[CTL_ESC(i
)] != F_XKEY
) {
1859 buf
[1] = CTL_ESC(i
& ASCII
);
1860 AddXkey(&cstr
, XmapCmd((int) map
[CTL_ESC(i
)]), XK_CMD
);
1863 map
[(unsigned char)buf
[0]] = F_XKEY
;
1876 for (i
= 0; i
< NT_NUM_KEYS
; i
++) {
1877 CcKeyMap
[i
] = CcViMap
[i
];
1878 CcAltMap
[i
] = CcViCmdMap
[i
];
1880 ed_InitMetaBindings();
1887 ed_InitEmacsMaps(void)
1896 if (adrof(STRvimode
))
1901 for (i
= 0; i
< NT_NUM_KEYS
; i
++) {
1902 CcKeyMap
[i
] = CcEmacsMap
[i
];
1903 CcAltMap
[i
] = F_UNASSIGNED
;
1905 ed_InitMetaBindings();
1907 buf
[0] = CTL_ESC('\030');
1909 buf
[1] = CTL_ESC('\030');
1910 AddXkey(&cstr
, XmapCmd(F_EXCHANGE_MARK
), XK_CMD
);
1912 AddXkey(&cstr
, XmapCmd(F_EXPAND_GLOB
), XK_CMD
);
1914 AddXkey(&cstr
, XmapCmd(F_EXPAND_VARS
), XK_CMD
);
1916 AddXkey(&cstr
, XmapCmd(F_LIST_GLOB
), XK_CMD
);
1918 AddXkey(&cstr
, XmapCmd(F_LIST_GLOB
), XK_CMD
);
1920 AddXkey(&cstr
, XmapCmd(F_PATH_NORM
), XK_CMD
);
1922 AddXkey(&cstr
, XmapCmd(F_PATH_NORM
), XK_CMD
);
1924 AddXkey(&cstr
, XmapCmd(F_COMMAND_NORM
), XK_CMD
);
1926 AddXkey(&cstr
, XmapCmd(F_COMPLETE_ALL
), XK_CMD
);
1927 buf
[1] = CTL_ESC('\004'); /* ^D */
1928 AddXkey(&cstr
, XmapCmd(F_LIST_ALL
), XK_CMD
);
1939 /* This machine has an EBCDIC charset. The assumptions made for the
1940 * initialized keymaps therefore don't hold, since they are based on
1941 * ASCII (or ISO8859-1).
1942 * Here, we do a one-time transformation to EBCDIC environment
1943 * for the key initializations.
1946 KEYCMD temp
[NT_NUM_KEYS
];
1947 static KEYCMD
*const list
[3] = { CcEmacsMap
, CcViMap
, CcViCmdMap
};
1950 for (table
=0; table
<3; ++table
)
1952 /* copy ASCII ordered map to temp table */
1953 for (i
= 0; i
< NT_NUM_KEYS
; i
++) {
1954 temp
[i
] = list
[table
][i
];
1956 /* write back as EBCDIC ordered map */
1957 for (i
= 0; i
< NT_NUM_KEYS
; i
++) {
1958 list
[table
][_toebcdic
[i
]] = temp
[i
];
1962 #endif /* !IS_ASCII */