home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / D / CLISP / CLISPSRC.TAR / clisp-1995-01-01 / src / readline / vi_keymap.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-03-16  |  39.5 KB  |  1,002 lines

  1. /* vi_keymap.c -- changed by Bruno Haible, 16 March 1993 */
  2.  
  3. /* vi_keymap.c -- the keymap for vi_mode in readline (). */
  4.  
  5. /* Copyright (C) 1988, 1989, 1991 Free Software Foundation, Inc.
  6.  
  7.    This file is part of GNU Readline, a library for reading lines
  8.    of text with interactive input and history editing.
  9.  
  10.    Readline is free software; you can redistribute it and/or modify
  11.    it under the terms of the GNU General Public License as published by
  12.    the Free Software Foundation; either version 2 of the License, or
  13.    (at your option) any later version.
  14.  
  15.    Readline is distributed in the hope that it will be useful,
  16.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.    GNU General Public License for more details.
  19.  
  20.    You should have received a copy of the GNU General Public License
  21.    along with this program; if not, write to the Free Software
  22.    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  23.  
  24. extern KEYMAP_ENTRY_ARRAY vi_escape_keymap;
  25.  
  26. /* The keymap arrays for handling vi mode. */
  27. KEYMAP_ENTRY_ARRAY vi_movement_keymap = {
  28.  
  29.   /* The regular control keys come first. */
  30.   { ISFUNC, (Function *)0x0 },                /* Control-@ */
  31.   { ISFUNC, (Function *)0x0 },                /* Control-a */
  32.   { ISFUNC, (Function *)0x0 },                /* Control-b */
  33.   { ISFUNC, (Function *)0x0 },                /* Control-c */
  34.   { ISFUNC, (Function *) rl_vi_eof_maybe },        /* Control-d */
  35.   { ISFUNC, (Function *) rl_emacs_editing_mode },    /* Control-e */
  36.   { ISFUNC, (Function *)0x0 },                /* Control-f */
  37.   { ISFUNC, (Function *) rl_abort },            /* Control-g */
  38.   { ISFUNC, (Function *) rl_rubout },            /* Control-h */
  39.   { ISFUNC, (Function *)0x0 },                /* Control-i */
  40.   { ISFUNC, (Function *) rl_newline },            /* Control-j */
  41.   { ISFUNC, (Function *) rl_kill_line },        /* Control-k */
  42.   { ISFUNC, (Function *) rl_clear_screen },        /* Control-l */
  43.   { ISFUNC, (Function *) rl_newline },            /* Control-m */
  44.   { ISFUNC, (Function *) rl_get_next_history },        /* Control-n */
  45.   { ISFUNC, (Function *)0x0 },                /* Control-o */
  46.   { ISFUNC, (Function *) rl_get_previous_history },    /* Control-p */
  47.   { ISFUNC, (Function *) rl_quoted_insert },        /* Control-q */
  48.   { ISFUNC, (Function *) rl_reverse_search_history },    /* Control-r */
  49.   { ISFUNC, (Function *) rl_forward_search_history },    /* Control-s */
  50.   { ISFUNC, (Function *) rl_transpose_chars },        /* Control-t */
  51.   { ISFUNC, (Function *) rl_unix_line_discard },    /* Control-u */
  52.   { ISFUNC, (Function *) rl_quoted_insert },        /* Control-v */
  53.   { ISFUNC, (Function *) rl_unix_word_rubout },        /* Control-w */
  54.   { ISFUNC, (Function *)0x0 },                /* Control-x */
  55.   { ISFUNC, (Function *) rl_yank },            /* Control-y */
  56.   { ISFUNC, (Function *)0x0 },                /* Control-z */
  57.  
  58.   { ISKMAP, (Function *)vi_escape_keymap },        /* Control-[ */
  59.   { ISFUNC, (Function *)0x0 },                /* Control-\ */
  60.   { ISFUNC, (Function *)0x0 },                /* Control-] */
  61.   { ISFUNC, (Function *)0x0 },                /* Control-^ */
  62.   { ISFUNC, (Function *) rl_undo_command },        /* Control-_ */
  63.  
  64.   /* The start of printing characters. */
  65.   { ISFUNC, (Function *) rl_forward },            /* SPACE */
  66.   { ISFUNC, (Function *)0x0 },                /* ! */
  67.   { ISFUNC, (Function *)0x0 },                /* " */
  68.   { ISFUNC, (Function *) rl_vi_comment },        /* # */
  69.   { ISFUNC, (Function *) rl_end_of_line },        /* $ */
  70.   { ISFUNC, (Function *) rl_vi_match },            /* % */
  71.   { ISFUNC, (Function *)0x0 },                /* & */
  72.   { ISFUNC, (Function *)0x0 },                /* ' */
  73.   { ISFUNC, (Function *)0x0 },                /* ( */
  74.   { ISFUNC, (Function *)0x0 },                /* ) */
  75.   { ISFUNC, (Function *) rl_vi_complete },        /* * */
  76.   { ISFUNC, (Function *) rl_get_next_history},        /* + */
  77.   { ISFUNC, (Function *) rl_vi_char_search },        /* , */
  78.   { ISFUNC, (Function *) rl_get_previous_history },    /* - */
  79.   { ISFUNC, (Function *)0x0 },                /* . */
  80.   { ISFUNC, (Function *) rl_vi_search },        /* / */
  81.  
  82.   /* Regular digits. */
  83.   { ISFUNC, (Function *) rl_vi_arg_digit },        /* 0 */
  84.   { ISFUNC, (Function *) rl_vi_arg_digit },        /* 1 */
  85.   { ISFUNC, (Function *) rl_vi_arg_digit },        /* 2 */
  86.   { ISFUNC, (Function *) rl_vi_arg_digit },        /* 3 */
  87.   { ISFUNC, (Function *) rl_vi_arg_digit },        /* 4 */
  88.   { ISFUNC, (Function *) rl_vi_arg_digit },        /* 5 */
  89.   { ISFUNC, (Function *) rl_vi_arg_digit },        /* 6 */
  90.   { ISFUNC, (Function *) rl_vi_arg_digit },        /* 7 */
  91.   { ISFUNC, (Function *) rl_vi_arg_digit },        /* 8 */
  92.   { ISFUNC, (Function *) rl_vi_arg_digit },        /* 9 */
  93.  
  94.   /* A little more punctuation. */
  95.   { ISFUNC, (Function *)0x0 },                /* : */
  96.   { ISFUNC, (Function *) rl_vi_char_search },        /* ; */
  97.   { ISFUNC, (Function *)0x0 },                /* < */
  98.   { ISFUNC, (Function *) rl_vi_complete },        /* = */
  99.   { ISFUNC, (Function *)0x0 },                /* > */
  100.   { ISFUNC, (Function *) rl_vi_search },        /* ? */
  101.   { ISFUNC, (Function *)0x0 },                /* @ */
  102.  
  103.   /* Uppercase alphabet. */
  104.   { ISFUNC, (Function *) rl_vi_append_eol },        /* A */
  105.   { ISFUNC, (Function *) rl_vi_prev_word},        /* B */
  106.   { ISFUNC, (Function *) rl_vi_change_to },        /* C */
  107.   { ISFUNC, (Function *) rl_vi_delete_to },        /* D */
  108.   { ISFUNC, (Function *) rl_vi_end_word },        /* E */
  109.   { ISFUNC, (Function *) rl_vi_char_search },        /* F */
  110.   { ISFUNC, (Function *) rl_vi_fetch_history },        /* G */
  111.   { ISFUNC, (Function *)0x0 },                /* H */
  112.   { ISFUNC, (Function *) rl_vi_insert_beg },        /* I */
  113.   { ISFUNC, (Function *)0x0 },                /* J */
  114.   { ISFUNC, (Function *)0x0 },                /* K */
  115.   { ISFUNC, (Function *)0x0 },                /* L */
  116.   { ISFUNC, (Function *)0x0 },                /* M */
  117.   { ISFUNC, (Function *) rl_vi_search_again },        /* N */
  118.   { ISFUNC, (Function *)0x0 },                /* O */
  119.   { ISFUNC, (Function *) rl_vi_put },            /* P */
  120.   { ISFUNC, (Function *)0x0 },                /* Q */
  121.   { ISFUNC, (Function *) rl_vi_replace },        /* R */
  122.   { ISFUNC, (Function *) rl_vi_subst },            /* S */
  123.   { ISFUNC, (Function *) rl_vi_char_search },        /* T */
  124.   { ISFUNC, (Function *) rl_revert_line },        /* U */
  125.   { ISFUNC, (Function *)0x0 },                /* V */
  126.   { ISFUNC, (Function *) rl_vi_next_word },        /* W */
  127.   { ISFUNC, (Function *) rl_rubout },            /* X */
  128.   { ISFUNC, (Function *) rl_vi_yank_to },        /* Y */
  129.   { ISFUNC, (Function *)0x0 },                /* Z */
  130.  
  131.   /* Some more punctuation. */
  132.   { ISFUNC, (Function *)0x0 },            /* [ */
  133.   { ISFUNC, (Function *) rl_vi_complete },    /* \ */
  134.   { ISFUNC, (Function *)0x0 },            /* ] */
  135.   { ISFUNC, (Function *) rl_vi_first_print },    /* ^ */
  136.   { ISFUNC, (Function *) rl_vi_yank_arg },    /* _ */
  137.   { ISFUNC, (Function *)0x0 },            /* ` */
  138.  
  139.   /* Lowercase alphabet. */
  140.   { ISFUNC, (Function *) rl_vi_append_mode },        /* a */
  141.   { ISFUNC, (Function *) rl_vi_prev_word },        /* b */
  142.   { ISFUNC, (Function *) rl_vi_change_to },        /* c */
  143.   { ISFUNC, (Function *) rl_vi_delete_to },        /* d */
  144.   { ISFUNC, (Function *) rl_vi_end_word },        /* e */
  145.   { ISFUNC, (Function *) rl_vi_char_search },        /* f */
  146.   { ISFUNC, (Function *)0x0 },                /* g */
  147.   { ISFUNC, (Function *) rl_backward },            /* h */
  148.   { ISFUNC, (Function *) rl_vi_insertion_mode },    /* i */
  149.   { ISFUNC, (Function *) rl_get_next_history },        /* j */
  150.   { ISFUNC, (Function *) rl_get_previous_history },    /* k */
  151.   { ISFUNC, (Function *) rl_forward },            /* l */
  152.   { ISFUNC, (Function *)0x0 },                /* m */
  153.   { ISFUNC, (Function *) rl_vi_search_again },        /* n */
  154.   { ISFUNC, (Function *)0x0 },                /* o */
  155.   { ISFUNC, (Function *) rl_vi_put },            /* p */
  156.   { ISFUNC, (Function *)0x0 },                /* q */
  157.   { ISFUNC, (Function *) rl_vi_change_char },        /* r */
  158.   { ISFUNC, (Function *) rl_vi_subst },            /* s */
  159.   { ISFUNC, (Function *) rl_vi_char_search },        /* t */
  160.   { ISFUNC, (Function *) rl_undo_command },        /* u */
  161.   { ISFUNC, (Function *)0x0 },                /* v */
  162.   { ISFUNC, (Function *) rl_vi_next_word },        /* w */
  163.   { ISFUNC, (Function *) rl_vi_delete },        /* x */
  164.   { ISFUNC, (Function *) rl_vi_yank_to },        /* y */
  165.   { ISFUNC, (Function *)0x0 },                /* z */
  166.  
  167.   /* Final punctuation. */
  168.   { ISFUNC, (Function *)0x0 },            /* { */
  169.   { ISFUNC, (Function *) rl_vi_column },    /* | */
  170.   { ISFUNC, (Function *)0x0 },            /* } */
  171.   { ISFUNC, (Function *) rl_vi_change_case },    /* ~ */
  172.   { ISFUNC, (Function *) rl_backward },        /* RUBOUT */
  173.  
  174. #if NUMCHARS==256
  175.   /* Latin-1 or DOS characters */
  176.   { ISFUNC, (Function *)0x0 },
  177.   { ISFUNC, (Function *)0x0 },
  178.   { ISFUNC, (Function *)0x0 },
  179.   { ISFUNC, (Function *)0x0 },
  180.   { ISFUNC, (Function *)0x0 },
  181.   { ISFUNC, (Function *)0x0 },
  182.   { ISFUNC, (Function *)0x0 },
  183.   { ISFUNC, (Function *)0x0 },
  184.   { ISFUNC, (Function *)0x0 },
  185.   { ISFUNC, (Function *)0x0 },
  186.   { ISFUNC, (Function *)0x0 },
  187.   { ISFUNC, (Function *)0x0 },
  188.   { ISFUNC, (Function *)0x0 },
  189.   { ISFUNC, (Function *)0x0 },
  190.   { ISFUNC, (Function *)0x0 },
  191.   { ISFUNC, (Function *)0x0 },
  192.   { ISFUNC, (Function *)0x0 },
  193.   { ISFUNC, (Function *)0x0 },
  194.   { ISFUNC, (Function *)0x0 },
  195.   { ISFUNC, (Function *)0x0 },
  196.   { ISFUNC, (Function *)0x0 },
  197.   { ISFUNC, (Function *)0x0 },
  198.   { ISFUNC, (Function *)0x0 },
  199.   { ISFUNC, (Function *)0x0 },
  200.   { ISFUNC, (Function *)0x0 },
  201.   { ISFUNC, (Function *)0x0 },
  202.   { ISFUNC, (Function *)0x0 },
  203.   { ISFUNC, (Function *)0x0 },
  204.   { ISFUNC, (Function *)0x0 },
  205.   { ISFUNC, (Function *)0x0 },
  206.   { ISFUNC, (Function *)0x0 },
  207.   { ISFUNC, (Function *)0x0 },
  208.   { ISFUNC, (Function *)0x0 },
  209.   { ISFUNC, (Function *)0x0 },
  210.   { ISFUNC, (Function *)0x0 },
  211.   { ISFUNC, (Function *)0x0 },
  212.   { ISFUNC, (Function *)0x0 },
  213.   { ISFUNC, (Function *)0x0 },
  214.   { ISFUNC, (Function *)0x0 },
  215.   { ISFUNC, (Function *)0x0 },
  216.   { ISFUNC, (Function *)0x0 },
  217.   { ISFUNC, (Function *)0x0 },
  218.   { ISFUNC, (Function *)0x0 },
  219.   { ISFUNC, (Function *)0x0 },
  220.   { ISFUNC, (Function *)0x0 },
  221.   { ISFUNC, (Function *)0x0 },
  222.   { ISFUNC, (Function *)0x0 },
  223.   { ISFUNC, (Function *)0x0 },
  224.   { ISFUNC, (Function *)0x0 },
  225.   { ISFUNC, (Function *)0x0 },
  226.   { ISFUNC, (Function *)0x0 },
  227.   { ISFUNC, (Function *)0x0 },
  228.   { ISFUNC, (Function *)0x0 },
  229.   { ISFUNC, (Function *)0x0 },
  230.   { ISFUNC, (Function *)0x0 },
  231.   { ISFUNC, (Function *)0x0 },
  232.   { ISFUNC, (Function *)0x0 },
  233.   { ISFUNC, (Function *)0x0 },
  234.   { ISFUNC, (Function *)0x0 },
  235.   { ISFUNC, (Function *)0x0 },
  236.   { ISFUNC, (Function *)0x0 },
  237.   { ISFUNC, (Function *)0x0 },
  238.   { ISFUNC, (Function *)0x0 },
  239.   { ISFUNC, (Function *)0x0 },
  240.   { ISFUNC, (Function *)0x0 },
  241.   { ISFUNC, (Function *)0x0 },
  242.   { ISFUNC, (Function *)0x0 },
  243.   { ISFUNC, (Function *)0x0 },
  244.   { ISFUNC, (Function *)0x0 },
  245.   { ISFUNC, (Function *)0x0 },
  246.   { ISFUNC, (Function *)0x0 },
  247.   { ISFUNC, (Function *)0x0 },
  248.   { ISFUNC, (Function *)0x0 },
  249.   { ISFUNC, (Function *)0x0 },
  250.   { ISFUNC, (Function *)0x0 },
  251.   { ISFUNC, (Function *)0x0 },
  252.   { ISFUNC, (Function *)0x0 },
  253.   { ISFUNC, (Function *)0x0 },
  254.   { ISFUNC, (Function *)0x0 },
  255.   { ISFUNC, (Function *)0x0 },
  256.   { ISFUNC, (Function *)0x0 },
  257.   { ISFUNC, (Function *)0x0 },
  258.   { ISFUNC, (Function *)0x0 },
  259.   { ISFUNC, (Function *)0x0 },
  260.   { ISFUNC, (Function *)0x0 },
  261.   { ISFUNC, (Function *)0x0 },
  262.   { ISFUNC, (Function *)0x0 },
  263.   { ISFUNC, (Function *)0x0 },
  264.   { ISFUNC, (Function *)0x0 },
  265.   { ISFUNC, (Function *)0x0 },
  266.   { ISFUNC, (Function *)0x0 },
  267.   { ISFUNC, (Function *)0x0 },
  268.   { ISFUNC, (Function *)0x0 },
  269.   { ISFUNC, (Function *)0x0 },
  270.   { ISFUNC, (Function *)0x0 },
  271.   { ISFUNC, (Function *)0x0 },
  272.   { ISFUNC, (Function *)0x0 },
  273.   { ISFUNC, (Function *)0x0 },
  274.   { ISFUNC, (Function *)0x0 },
  275.   { ISFUNC, (Function *)0x0 },
  276.   { ISFUNC, (Function *)0x0 },
  277.   { ISFUNC, (Function *)0x0 },
  278.   { ISFUNC, (Function *)0x0 },
  279.   { ISFUNC, (Function *)0x0 },
  280.   { ISFUNC, (Function *)0x0 },
  281.   { ISFUNC, (Function *)0x0 },
  282.   { ISFUNC, (Function *)0x0 },
  283.   { ISFUNC, (Function *)0x0 },
  284.   { ISFUNC, (Function *)0x0 },
  285.   { ISFUNC, (Function *)0x0 },
  286.   { ISFUNC, (Function *)0x0 },
  287.   { ISFUNC, (Function *)0x0 },
  288.   { ISFUNC, (Function *)0x0 },
  289.   { ISFUNC, (Function *)0x0 },
  290.   { ISFUNC, (Function *)0x0 },
  291.   { ISFUNC, (Function *)0x0 },
  292.   { ISFUNC, (Function *)0x0 },
  293.   { ISFUNC, (Function *)0x0 },
  294.   { ISFUNC, (Function *)0x0 },
  295.   { ISFUNC, (Function *)0x0 },
  296.   { ISFUNC, (Function *)0x0 },
  297.   { ISFUNC, (Function *)0x0 },
  298.   { ISFUNC, (Function *)0x0 },
  299.   { ISFUNC, (Function *)0x0 },
  300.   { ISFUNC, (Function *)0x0 },
  301.   { ISFUNC, (Function *)0x0 },
  302.   { ISFUNC, (Function *)0x0 },
  303.   { ISFUNC, (Function *)0x0 },
  304. #endif
  305.  
  306. };
  307.  
  308.  
  309. KEYMAP_ENTRY_ARRAY vi_insertion_keymap = {
  310.  
  311.   /* The regular control keys come first. */
  312.   { ISFUNC, (Function *)0x0 },            /* Control-@ */
  313.   { ISFUNC, (Function *) rl_insert },        /* Control-a */
  314.   { ISFUNC, (Function *) rl_insert },        /* Control-b */
  315.   { ISFUNC, (Function *) rl_insert },        /* Control-c */
  316.   { ISFUNC, (Function *) rl_vi_eof_maybe },    /* Control-d */
  317.   { ISFUNC, (Function *) rl_insert },        /* Control-e */
  318.   { ISFUNC, (Function *) rl_insert },        /* Control-f */
  319.   { ISFUNC, (Function *) rl_insert },        /* Control-g */
  320.   { ISFUNC, (Function *) rl_rubout },        /* Control-h */
  321.   { ISFUNC, (Function *) rl_complete },        /* Control-i */
  322.   { ISFUNC, (Function *) rl_newline },        /* Control-j */
  323.   { ISFUNC, (Function *) rl_insert },        /* Control-k */
  324.   { ISFUNC, (Function *) rl_insert },        /* Control-l */
  325.   { ISFUNC, (Function *) rl_newline },        /* Control-m */
  326.   { ISFUNC, (Function *) rl_insert },        /* Control-n */
  327.   { ISFUNC, (Function *) rl_insert },        /* Control-o */
  328.   { ISFUNC, (Function *) rl_insert },        /* Control-p */
  329.   { ISFUNC, (Function *) rl_insert },        /* Control-q */
  330.   { ISFUNC, (Function *) rl_reverse_search_history }, /* Control-r */
  331.   { ISFUNC, (Function *) rl_forward_search_history }, /* Control-s */
  332.   { ISFUNC, (Function *) rl_transpose_chars },    /* Control-t */
  333.   { ISFUNC, (Function *) rl_unix_line_discard },/* Control-u */
  334.   { ISFUNC, (Function *) rl_quoted_insert },    /* Control-v */
  335.   { ISFUNC, (Function *) rl_unix_word_rubout },    /* Control-w */
  336.   { ISFUNC, (Function *) rl_insert },        /* Control-x */
  337.   { ISFUNC, (Function *) rl_yank },        /* Control-y */
  338.   { ISFUNC, (Function *) rl_insert },        /* Control-z */
  339.  
  340.   { ISFUNC, (Function *) rl_vi_movement_mode },    /* Control-[ */
  341.   { ISFUNC, (Function *) rl_insert },        /* Control-\ */
  342.   { ISFUNC, (Function *) rl_insert },        /* Control-] */
  343.   { ISFUNC, (Function *) rl_insert },        /* Control-^ */
  344.   { ISFUNC, (Function *) rl_undo_command },    /* Control-_ */
  345.  
  346.   /* The start of printing characters. */
  347.   { ISFUNC, (Function *) rl_insert },        /* SPACE */
  348.   { ISFUNC, (Function *) rl_insert },        /* ! */
  349.   { ISFUNC, (Function *) rl_insert },        /* " */
  350.   { ISFUNC, (Function *) rl_insert },        /* # */
  351.   { ISFUNC, (Function *) rl_insert },        /* $ */
  352.   { ISFUNC, (Function *) rl_insert },        /* % */
  353.   { ISFUNC, (Function *) rl_insert },        /* & */
  354.   { ISFUNC, (Function *) rl_insert },        /* ' */
  355.   { ISFUNC, (Function *) rl_insert },        /* ( */
  356.   { ISFUNC, (Function *) rl_insert },        /* ) */
  357.   { ISFUNC, (Function *) rl_insert },        /* * */
  358.   { ISFUNC, (Function *) rl_insert },        /* + */
  359.   { ISFUNC, (Function *) rl_insert },        /* , */
  360.   { ISFUNC, (Function *) rl_insert },        /* - */
  361.   { ISFUNC, (Function *) rl_insert },        /* . */
  362.   { ISFUNC, (Function *) rl_insert },        /* / */
  363.  
  364.   /* Regular digits. */
  365.   { ISFUNC, (Function *) rl_insert },        /* 0 */
  366.   { ISFUNC, (Function *) rl_insert },        /* 1 */
  367.   { ISFUNC, (Function *) rl_insert },        /* 2 */
  368.   { ISFUNC, (Function *) rl_insert },        /* 3 */
  369.   { ISFUNC, (Function *) rl_insert },        /* 4 */
  370.   { ISFUNC, (Function *) rl_insert },        /* 5 */
  371.   { ISFUNC, (Function *) rl_insert },        /* 6 */
  372.   { ISFUNC, (Function *) rl_insert },        /* 7 */
  373.   { ISFUNC, (Function *) rl_insert },        /* 8 */
  374.   { ISFUNC, (Function *) rl_insert },        /* 9 */
  375.  
  376.   /* A little more punctuation. */
  377.   { ISFUNC, (Function *) rl_insert },        /* : */
  378.   { ISFUNC, (Function *) rl_insert },        /* ; */
  379.   { ISFUNC, (Function *) rl_insert },        /* < */
  380.   { ISFUNC, (Function *) rl_insert },        /* = */
  381.   { ISFUNC, (Function *) rl_insert },        /* > */
  382.   { ISFUNC, (Function *) rl_insert },        /* ? */
  383.   { ISFUNC, (Function *) rl_insert },        /* @ */
  384.  
  385.   /* Uppercase alphabet. */
  386.   { ISFUNC, (Function *) rl_insert },        /* A */
  387.   { ISFUNC, (Function *) rl_insert },        /* B */
  388.   { ISFUNC, (Function *) rl_insert },        /* C */
  389.   { ISFUNC, (Function *) rl_insert },        /* D */
  390.   { ISFUNC, (Function *) rl_insert },        /* E */
  391.   { ISFUNC, (Function *) rl_insert },        /* F */
  392.   { ISFUNC, (Function *) rl_insert },        /* G */
  393.   { ISFUNC, (Function *) rl_insert },        /* H */
  394.   { ISFUNC, (Function *) rl_insert },        /* I */
  395.   { ISFUNC, (Function *) rl_insert },        /* J */
  396.   { ISFUNC, (Function *) rl_insert },        /* K */
  397.   { ISFUNC, (Function *) rl_insert },        /* L */
  398.   { ISFUNC, (Function *) rl_insert },        /* M */
  399.   { ISFUNC, (Function *) rl_insert },        /* N */
  400.   { ISFUNC, (Function *) rl_insert },        /* O */
  401.   { ISFUNC, (Function *) rl_insert },        /* P */
  402.   { ISFUNC, (Function *) rl_insert },        /* Q */
  403.   { ISFUNC, (Function *) rl_insert },        /* R */
  404.   { ISFUNC, (Function *) rl_insert },        /* S */
  405.   { ISFUNC, (Function *) rl_insert },        /* T */
  406.   { ISFUNC, (Function *) rl_insert },        /* U */
  407.   { ISFUNC, (Function *) rl_insert },        /* V */
  408.   { ISFUNC, (Function *) rl_insert },        /* W */
  409.   { ISFUNC, (Function *) rl_insert },        /* X */
  410.   { ISFUNC, (Function *) rl_insert },        /* Y */
  411.   { ISFUNC, (Function *) rl_insert },        /* Z */
  412.  
  413.   /* Some more punctuation. */
  414.   { ISFUNC, (Function *) rl_insert },        /* [ */
  415.   { ISFUNC, (Function *) rl_insert },        /* \ */
  416.   { ISFUNC, (Function *) rl_insert },        /* ] */
  417.   { ISFUNC, (Function *) rl_insert },        /* ^ */
  418.   { ISFUNC, (Function *) rl_insert },        /* _ */
  419.   { ISFUNC, (Function *) rl_insert },        /* ` */
  420.  
  421.   /* Lowercase alphabet. */
  422.   { ISFUNC, (Function *) rl_insert },        /* a */
  423.   { ISFUNC, (Function *) rl_insert },        /* b */
  424.   { ISFUNC, (Function *) rl_insert },        /* c */
  425.   { ISFUNC, (Function *) rl_insert },        /* d */
  426.   { ISFUNC, (Function *) rl_insert },        /* e */
  427.   { ISFUNC, (Function *) rl_insert },        /* f */
  428.   { ISFUNC, (Function *) rl_insert },        /* g */
  429.   { ISFUNC, (Function *) rl_insert },        /* h */
  430.   { ISFUNC, (Function *) rl_insert },        /* i */
  431.   { ISFUNC, (Function *) rl_insert },        /* j */
  432.   { ISFUNC, (Function *) rl_insert },        /* k */
  433.   { ISFUNC, (Function *) rl_insert },        /* l */
  434.   { ISFUNC, (Function *) rl_insert },        /* m */
  435.   { ISFUNC, (Function *) rl_insert },        /* n */
  436.   { ISFUNC, (Function *) rl_insert },        /* o */
  437.   { ISFUNC, (Function *) rl_insert },        /* p */
  438.   { ISFUNC, (Function *) rl_insert },        /* q */
  439.   { ISFUNC, (Function *) rl_insert },        /* r */
  440.   { ISFUNC, (Function *) rl_insert },        /* s */
  441.   { ISFUNC, (Function *) rl_insert },        /* t */
  442.   { ISFUNC, (Function *) rl_insert },        /* u */
  443.   { ISFUNC, (Function *) rl_insert },        /* v */
  444.   { ISFUNC, (Function *) rl_insert },        /* w */
  445.   { ISFUNC, (Function *) rl_insert },        /* x */
  446.   { ISFUNC, (Function *) rl_insert },        /* y */
  447.   { ISFUNC, (Function *) rl_insert },        /* z */
  448.  
  449.   /* Final punctuation. */
  450.   { ISFUNC, (Function *) rl_insert },        /* { */
  451.   { ISFUNC, (Function *) rl_insert },        /* | */
  452.   { ISFUNC, (Function *) rl_insert },        /* } */
  453.   { ISFUNC, (Function *) rl_insert },        /* ~ */
  454.   { ISFUNC, (Function *) rl_rubout },        /* RUBOUT */
  455.  
  456. #ifdef ISOLATIN
  457.   /* Latin-1 characters */
  458.   { ISFUNC, (Function *)0x0 },
  459.   { ISFUNC, (Function *)0x0 },
  460.   { ISFUNC, (Function *)0x0 },
  461.   { ISFUNC, (Function *)0x0 },
  462.   { ISFUNC, (Function *)0x0 },
  463.   { ISFUNC, (Function *)0x0 },
  464.   { ISFUNC, (Function *)0x0 },
  465.   { ISFUNC, (Function *)0x0 },
  466.   { ISFUNC, (Function *)0x0 },
  467.   { ISFUNC, (Function *)0x0 },
  468.   { ISFUNC, (Function *)0x0 },
  469.   { ISFUNC, (Function *)0x0 },
  470.   { ISFUNC, (Function *)0x0 },
  471.   { ISFUNC, (Function *)0x0 },
  472.   { ISFUNC, (Function *)0x0 },
  473.   { ISFUNC, (Function *)0x0 },
  474.   { ISFUNC, (Function *)0x0 },
  475.   { ISFUNC, (Function *)0x0 },
  476.   { ISFUNC, (Function *)0x0 },
  477.   { ISFUNC, (Function *)0x0 },
  478.   { ISFUNC, (Function *)0x0 },
  479.   { ISFUNC, (Function *)0x0 },
  480.   { ISFUNC, (Function *)0x0 },
  481.   { ISFUNC, (Function *)0x0 },
  482.   { ISFUNC, (Function *)0x0 },
  483.   { ISFUNC, (Function *)0x0 },
  484.   { ISFUNC, (Function *)0x0 },
  485.   { ISFUNC, (Function *)0x0 },
  486.   { ISFUNC, (Function *)0x0 },
  487.   { ISFUNC, (Function *)0x0 },
  488.   { ISFUNC, (Function *)0x0 },
  489.   { ISFUNC, (Function *)0x0 },
  490.   { ISFUNC, (Function *) rl_insert },    /* nobreakspace */
  491.   { ISFUNC, (Function *) rl_insert },    /* inv. exclamation */
  492.   { ISFUNC, (Function *) rl_insert },    /* U.S. cent */
  493.   { ISFUNC, (Function *) rl_insert },    /* British pound */
  494.   { ISFUNC, (Function *) rl_insert },    /* general currency */
  495.   { ISFUNC, (Function *) rl_insert },    /* Japanese yen */
  496.   { ISFUNC, (Function *) rl_insert },    /* broken bar */
  497.   { ISFUNC, (Function *) rl_insert },    /* section */
  498.   { ISFUNC, (Function *) rl_insert },    /* umlaut accent */
  499.   { ISFUNC, (Function *) rl_insert },    /* copyright */
  500.   { ISFUNC, (Function *) rl_insert },    /* femin. ordinal */
  501.   { ISFUNC, (Function *) rl_insert },    /* open guillemets */
  502.   { ISFUNC, (Function *) rl_insert },    /* not sign */
  503.   { ISFUNC, (Function *) rl_insert },    /* hyphen */
  504.   { ISFUNC, (Function *) rl_insert },    /* registered trade */
  505.   { ISFUNC, (Function *) rl_insert },    /* macron */
  506.   { ISFUNC, (Function *) rl_insert },    /* degree */
  507.   { ISFUNC, (Function *) rl_insert },    /* plus/minus */
  508.   { ISFUNC, (Function *) rl_insert },    /* power 2 */
  509.   { ISFUNC, (Function *) rl_insert },    /* power 3 */
  510.   { ISFUNC, (Function *) rl_insert },    /* accent acute */
  511.   { ISFUNC, (Function *) rl_insert },    /* Greek mu */
  512.   { ISFUNC, (Function *) rl_insert },    /* paragraph */
  513.   { ISFUNC, (Function *) rl_insert },    /* middle dot */
  514.   { ISFUNC, (Function *) rl_insert },    /* cedilla */
  515.   { ISFUNC, (Function *) rl_insert },    /* power 1 */
  516.   { ISFUNC, (Function *) rl_insert },    /* masc. ordinal */
  517.   { ISFUNC, (Function *) rl_insert },    /* close guillemets */
  518.   { ISFUNC, (Function *) rl_insert },    /* one fourth */
  519.   { ISFUNC, (Function *) rl_insert },    /* one half */
  520.   { ISFUNC, (Function *) rl_insert },    /* three fourth */
  521.   { ISFUNC, (Function *) rl_insert },    /* inv. question */
  522.   { ISFUNC, (Function *) rl_insert },    /* A accent grave */
  523.   { ISFUNC, (Function *) rl_insert },    /* A accent acute */
  524.   { ISFUNC, (Function *) rl_insert },    /* A circumflex */
  525.   { ISFUNC, (Function *) rl_insert },    /* A tilde */
  526.   { ISFUNC, (Function *) rl_insert },    /* A umlaut */
  527.   { ISFUNC, (Function *) rl_insert },    /* A degree */
  528.   { ISFUNC, (Function *) rl_insert },    /* AE ligature */
  529.   { ISFUNC, (Function *) rl_insert },    /* C cedilla */
  530.   { ISFUNC, (Function *) rl_insert },    /* E accent grave */
  531.   { ISFUNC, (Function *) rl_insert },    /* E accent acute */
  532.   { ISFUNC, (Function *) rl_insert },    /* E circumflex */
  533.   { ISFUNC, (Function *) rl_insert },    /* E umlaut */
  534.   { ISFUNC, (Function *) rl_insert },    /* I accent grave */
  535.   { ISFUNC, (Function *) rl_insert },    /* I accent acute */
  536.   { ISFUNC, (Function *) rl_insert },    /* I circumflex */
  537.   { ISFUNC, (Function *) rl_insert },    /* I umlaut */
  538.   { ISFUNC, (Function *) rl_insert },    /* D stroke */
  539.   { ISFUNC, (Function *) rl_insert },    /* N tilde */
  540.   { ISFUNC, (Function *) rl_insert },    /* O accent grave */
  541.   { ISFUNC, (Function *) rl_insert },    /* O accent acute */
  542.   { ISFUNC, (Function *) rl_insert },    /* O circumflex */
  543.   { ISFUNC, (Function *) rl_insert },    /* O tilde */
  544.   { ISFUNC, (Function *) rl_insert },    /* O umlaut */
  545.   { ISFUNC, (Function *) rl_insert },    /* multiply */
  546.   { ISFUNC, (Function *) rl_insert },    /* O crossbar */
  547.   { ISFUNC, (Function *) rl_insert },    /* U accent grave */
  548.   { ISFUNC, (Function *) rl_insert },    /* U accent acute */
  549.   { ISFUNC, (Function *) rl_insert },    /* U circumflex */
  550.   { ISFUNC, (Function *) rl_insert },    /* U umlaut */
  551.   { ISFUNC, (Function *) rl_insert },    /* Y accent acute */
  552.   { ISFUNC, (Function *) rl_insert },    /* Thorn */
  553.   { ISFUNC, (Function *) rl_insert },    /* sharp s */
  554.   { ISFUNC, (Function *) rl_insert },    /* a accent grave */
  555.   { ISFUNC, (Function *) rl_insert },    /* a accent acute */
  556.   { ISFUNC, (Function *) rl_insert },    /* a circumflex */
  557.   { ISFUNC, (Function *) rl_insert },    /* a tilde */
  558.   { ISFUNC, (Function *) rl_insert },    /* a umlaut */
  559.   { ISFUNC, (Function *) rl_insert },    /* a degree */
  560.   { ISFUNC, (Function *) rl_insert },    /* ae ligature */
  561.   { ISFUNC, (Function *) rl_insert },    /* c cedilla */
  562.   { ISFUNC, (Function *) rl_insert },    /* e accent grave */
  563.   { ISFUNC, (Function *) rl_insert },    /* e accent acute */
  564.   { ISFUNC, (Function *) rl_insert },    /* e circumflex */
  565.   { ISFUNC, (Function *) rl_insert },    /* e umlaut */
  566.   { ISFUNC, (Function *) rl_insert },    /* i accent grave */
  567.   { ISFUNC, (Function *) rl_insert },    /* i accent acute */
  568.   { ISFUNC, (Function *) rl_insert },    /* i circumflex */
  569.   { ISFUNC, (Function *) rl_insert },    /* i umlaut */
  570.   { ISFUNC, (Function *) rl_insert },    /* d stroke */
  571.   { ISFUNC, (Function *) rl_insert },    /* n tilde */
  572.   { ISFUNC, (Function *) rl_insert },    /* o accent grave */
  573.   { ISFUNC, (Function *) rl_insert },    /* o accent acute */
  574.   { ISFUNC, (Function *) rl_insert },    /* o circumflex */
  575.   { ISFUNC, (Function *) rl_insert },    /* o tilde */
  576.   { ISFUNC, (Function *) rl_insert },    /* o umlaut */
  577.   { ISFUNC, (Function *) rl_insert },    /* divide */
  578.   { ISFUNC, (Function *) rl_insert },    /* o crossbar */
  579.   { ISFUNC, (Function *) rl_insert },    /* u accent grave */
  580.   { ISFUNC, (Function *) rl_insert },    /* u accent acute */
  581.   { ISFUNC, (Function *) rl_insert },    /* u circumflex */
  582.   { ISFUNC, (Function *) rl_insert },    /* u umlaut */
  583.   { ISFUNC, (Function *) rl_insert },    /* y accent acute */
  584.   { ISFUNC, (Function *) rl_insert },    /* thorn */
  585.   { ISFUNC, (Function *) rl_insert },    /* y umlaut */
  586. #endif
  587.  
  588. #ifdef DOSCHARS
  589.   /* DOS characters */
  590.   { ISFUNC, (Function *) rl_insert },
  591.   { ISFUNC, (Function *) rl_insert },
  592.   { ISFUNC, (Function *) rl_insert },
  593.   { ISFUNC, (Function *) rl_insert },
  594.   { ISFUNC, (Function *) rl_insert },
  595.   { ISFUNC, (Function *) rl_insert },
  596.   { ISFUNC, (Function *) rl_insert },
  597.   { ISFUNC, (Function *) rl_insert },
  598.   { ISFUNC, (Function *) rl_insert },
  599.   { ISFUNC, (Function *) rl_insert },
  600.   { ISFUNC, (Function *) rl_insert },
  601.   { ISFUNC, (Function *) rl_insert },
  602.   { ISFUNC, (Function *) rl_insert },
  603.   { ISFUNC, (Function *) rl_insert },
  604.   { ISFUNC, (Function *) rl_insert },
  605.   { ISFUNC, (Function *) rl_insert },
  606.   { ISFUNC, (Function *) rl_insert },
  607.   { ISFUNC, (Function *) rl_insert },
  608.   { ISFUNC, (Function *) rl_insert },
  609.   { ISFUNC, (Function *) rl_insert },
  610.   { ISFUNC, (Function *) rl_insert },
  611.   { ISFUNC, (Function *) rl_insert },
  612.   { ISFUNC, (Function *) rl_insert },
  613.   { ISFUNC, (Function *) rl_insert },
  614.   { ISFUNC, (Function *) rl_insert },
  615.   { ISFUNC, (Function *) rl_insert },
  616.   { ISFUNC, (Function *) rl_insert },
  617.   { ISFUNC, (Function *) rl_insert },
  618.   { ISFUNC, (Function *) rl_insert },
  619.   { ISFUNC, (Function *) rl_insert },
  620.   { ISFUNC, (Function *) rl_insert },
  621.   { ISFUNC, (Function *) rl_insert },
  622.   { ISFUNC, (Function *) rl_insert },
  623.   { ISFUNC, (Function *) rl_insert },
  624.   { ISFUNC, (Function *) rl_insert },
  625.   { ISFUNC, (Function *) rl_insert },
  626.   { ISFUNC, (Function *) rl_insert },
  627.   { ISFUNC, (Function *) rl_insert },
  628.   { ISFUNC, (Function *) rl_insert },
  629.   { ISFUNC, (Function *) rl_insert },
  630.   { ISFUNC, (Function *) rl_insert },
  631.   { ISFUNC, (Function *) rl_insert },
  632.   { ISFUNC, (Function *) rl_insert },
  633.   { ISFUNC, (Function *) rl_insert },
  634.   { ISFUNC, (Function *) rl_insert },
  635.   { ISFUNC, (Function *) rl_insert },
  636.   { ISFUNC, (Function *) rl_insert },
  637.   { ISFUNC, (Function *) rl_insert },
  638.   { ISFUNC, (Function *) rl_insert },
  639.   { ISFUNC, (Function *) rl_insert },
  640.   { ISFUNC, (Function *) rl_insert },
  641.   { ISFUNC, (Function *) rl_insert },
  642.   { ISFUNC, (Function *) rl_insert },
  643.   { ISFUNC, (Function *) rl_insert },
  644.   { ISFUNC, (Function *) rl_insert },
  645.   { ISFUNC, (Function *) rl_insert },
  646.   { ISFUNC, (Function *) rl_insert },
  647.   { ISFUNC, (Function *) rl_insert },
  648.   { ISFUNC, (Function *) rl_insert },
  649.   { ISFUNC, (Function *) rl_insert },
  650.   { ISFUNC, (Function *) rl_insert },
  651.   { ISFUNC, (Function *) rl_insert },
  652.   { ISFUNC, (Function *) rl_insert },
  653.   { ISFUNC, (Function *) rl_insert },
  654.   { ISFUNC, (Function *) rl_insert },
  655.   { ISFUNC, (Function *) rl_insert },
  656.   { ISFUNC, (Function *) rl_insert },
  657.   { ISFUNC, (Function *) rl_insert },
  658.   { ISFUNC, (Function *) rl_insert },
  659.   { ISFUNC, (Function *) rl_insert },
  660.   { ISFUNC, (Function *) rl_insert },
  661.   { ISFUNC, (Function *) rl_insert },
  662.   { ISFUNC, (Function *) rl_insert },
  663.   { ISFUNC, (Function *) rl_insert },
  664.   { ISFUNC, (Function *) rl_insert },
  665.   { ISFUNC, (Function *) rl_insert },
  666.   { ISFUNC, (Function *) rl_insert },
  667.   { ISFUNC, (Function *) rl_insert },
  668.   { ISFUNC, (Function *) rl_insert },
  669.   { ISFUNC, (Function *) rl_insert },
  670.   { ISFUNC, (Function *) rl_insert },
  671.   { ISFUNC, (Function *) rl_insert },
  672.   { ISFUNC, (Function *) rl_insert },
  673.   { ISFUNC, (Function *) rl_insert },
  674.   { ISFUNC, (Function *) rl_insert },
  675.   { ISFUNC, (Function *) rl_insert },
  676.   { ISFUNC, (Function *) rl_insert },
  677.   { ISFUNC, (Function *) rl_insert },
  678.   { ISFUNC, (Function *) rl_insert },
  679.   { ISFUNC, (Function *) rl_insert },
  680.   { ISFUNC, (Function *) rl_insert },
  681.   { ISFUNC, (Function *) rl_insert },
  682.   { ISFUNC, (Function *) rl_insert },
  683.   { ISFUNC, (Function *) rl_insert },
  684.   { ISFUNC, (Function *) rl_insert },
  685.   { ISFUNC, (Function *) rl_insert },
  686.   { ISFUNC, (Function *) rl_insert },
  687.   { ISFUNC, (Function *) rl_insert },
  688.   { ISFUNC, (Function *) rl_insert },
  689.   { ISFUNC, (Function *) rl_insert },
  690.   { ISFUNC, (Function *) rl_insert },
  691.   { ISFUNC, (Function *) rl_insert },
  692.   { ISFUNC, (Function *) rl_insert },
  693.   { ISFUNC, (Function *) rl_insert },
  694.   { ISFUNC, (Function *) rl_insert },
  695.   { ISFUNC, (Function *) rl_insert },
  696.   { ISFUNC, (Function *) rl_insert },
  697.   { ISFUNC, (Function *) rl_insert },
  698.   { ISFUNC, (Function *) rl_insert },
  699.   { ISFUNC, (Function *) rl_insert },
  700.   { ISFUNC, (Function *) rl_insert },
  701.   { ISFUNC, (Function *) rl_insert },
  702.   { ISFUNC, (Function *) rl_insert },
  703.   { ISFUNC, (Function *) rl_insert },
  704.   { ISFUNC, (Function *) rl_insert },
  705.   { ISFUNC, (Function *) rl_insert },
  706.   { ISFUNC, (Function *) rl_insert },
  707.   { ISFUNC, (Function *) rl_insert },
  708.   { ISFUNC, (Function *) rl_insert },
  709.   { ISFUNC, (Function *) rl_insert },
  710.   { ISFUNC, (Function *) rl_insert },
  711.   { ISFUNC, (Function *) rl_insert },
  712.   { ISFUNC, (Function *) rl_insert },
  713.   { ISFUNC, (Function *) rl_insert },
  714.   { ISFUNC, (Function *) rl_insert },
  715.   { ISFUNC, (Function *) rl_insert },
  716.   { ISFUNC, (Function *) rl_insert },
  717.   { ISFUNC, (Function *) rl_insert },
  718. #endif
  719.  
  720. };
  721.  
  722. KEYMAP_ENTRY_ARRAY vi_escape_keymap = {
  723.  
  724.   /* The regular control keys come first. */
  725.   { ISFUNC, (Function *)0x0 },            /* Control-@ */
  726.   { ISFUNC, (Function *)0x0 },            /* Control-a */
  727.   { ISFUNC, (Function *)0x0 },            /* Control-b */
  728.   { ISFUNC, (Function *)0x0 },            /* Control-c */
  729.   { ISFUNC, (Function *)0x0 },            /* Control-d */
  730.   { ISFUNC, (Function *)0x0 },            /* Control-e */
  731.   { ISFUNC, (Function *)0x0 },            /* Control-f */
  732.   { ISFUNC, (Function *)0x0 },            /* Control-g */
  733.   { ISFUNC, (Function *)0x0 },            /* Control-h */
  734.   { ISFUNC, (Function *) rl_tab_insert},    /* Control-i */
  735.   { ISFUNC, (Function *) rl_emacs_editing_mode},/* Control-j */
  736.   { ISFUNC, (Function *) rl_kill_line },    /* Control-k */
  737.   { ISFUNC, (Function *)0x0 },            /* Control-l */
  738.   { ISFUNC, (Function *) rl_emacs_editing_mode},/* Control-m */
  739.   { ISFUNC, (Function *)0x0 },            /* Control-n */
  740.   { ISFUNC, (Function *)0x0 },            /* Control-o */
  741.   { ISFUNC, (Function *)0x0 },            /* Control-p */
  742.   { ISFUNC, (Function *)0x0 },            /* Control-q */
  743.   { ISFUNC, (Function *)0x0 },            /* Control-r */
  744.   { ISFUNC, (Function *)0x0 },            /* Control-s */
  745.   { ISFUNC, (Function *)0x0 },            /* Control-t */
  746.   { ISFUNC, (Function *)0x0 },            /* Control-u */
  747.   { ISFUNC, (Function *)0x0 },            /* Control-v */
  748.   { ISFUNC, (Function *)0x0 },            /* Control-w */
  749.   { ISFUNC, (Function *)0x0 },            /* Control-x */
  750.   { ISFUNC, (Function *)0x0 },            /* Control-y */
  751.   { ISFUNC, (Function *)0x0 },            /* Control-z */
  752.  
  753.   { ISFUNC, (Function *) rl_vi_movement_mode },    /* Control-[ */
  754.   { ISFUNC, (Function *)0x0 },            /* Control-\ */
  755.   { ISFUNC, (Function *)0x0 },            /* Control-] */
  756.   { ISFUNC, (Function *)0x0 },            /* Control-^ */
  757.   { ISFUNC, (Function *) rl_undo_command },    /* Control-_ */
  758.  
  759.   /* The start of printing characters. */
  760.   { ISFUNC, (Function *)0x0 },        /* SPACE */
  761.   { ISFUNC, (Function *)0x0 },        /* ! */
  762.   { ISFUNC, (Function *)0x0 },        /* " */
  763.   { ISFUNC, (Function *)0x0 },        /* # */
  764.   { ISFUNC, (Function *)0x0 },        /* $ */
  765.   { ISFUNC, (Function *)0x0 },        /* % */
  766.   { ISFUNC, (Function *)0x0 },        /* & */
  767.   { ISFUNC, (Function *)0x0 },        /* ' */
  768.   { ISFUNC, (Function *)0x0 },        /* ( */
  769.   { ISFUNC, (Function *)0x0 },        /* ) */
  770.   { ISFUNC, (Function *)0x0 },        /* * */
  771.   { ISFUNC, (Function *)0x0 },        /* + */
  772.   { ISFUNC, (Function *)0x0 },        /* , */
  773.   { ISFUNC, (Function *)0x0 },        /* - */
  774.   { ISFUNC, (Function *)0x0 },        /* . */
  775.   { ISFUNC, (Function *)0x0 },        /* / */
  776.  
  777.   /* Regular digits. */
  778.   { ISFUNC, (Function *) rl_vi_arg_digit },    /* 0 */
  779.   { ISFUNC, (Function *) rl_vi_arg_digit },    /* 1 */
  780.   { ISFUNC, (Function *) rl_vi_arg_digit },    /* 2 */
  781.   { ISFUNC, (Function *) rl_vi_arg_digit },    /* 3 */
  782.   { ISFUNC, (Function *) rl_vi_arg_digit },    /* 4 */
  783.   { ISFUNC, (Function *) rl_vi_arg_digit },    /* 5 */
  784.   { ISFUNC, (Function *) rl_vi_arg_digit },    /* 6 */
  785.   { ISFUNC, (Function *) rl_vi_arg_digit },    /* 7 */
  786.   { ISFUNC, (Function *) rl_vi_arg_digit },    /* 8 */
  787.   { ISFUNC, (Function *) rl_vi_arg_digit },    /* 9 */
  788.  
  789.   /* A little more punctuation. */
  790.   { ISFUNC, (Function *)0x0 },        /* : */
  791.   { ISFUNC, (Function *)0x0 },        /* ; */
  792.   { ISFUNC, (Function *)0x0 },        /* < */
  793.   { ISFUNC, (Function *)0x0 },        /* = */
  794.   { ISFUNC, (Function *)0x0 },        /* > */
  795.   { ISFUNC, (Function *)0x0 },        /* ? */
  796.   { ISFUNC, (Function *)0x0 },        /* @ */
  797.  
  798.   /* Uppercase alphabet. */
  799.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* A */
  800.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* B */
  801.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* C */
  802.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* D */
  803.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* E */
  804.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* F */
  805.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* G */
  806.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* H */
  807.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* I */
  808.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* J */
  809.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* K */
  810.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* L */
  811.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* M */
  812.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* N */
  813.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* O */
  814.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* P */
  815.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* Q */
  816.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* R */
  817.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* S */
  818.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* T */
  819.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* U */
  820.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* V */
  821.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* W */
  822.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* X */
  823.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* Y */
  824.   { ISFUNC, (Function *) rl_do_lowercase_version },    /* Z */
  825.  
  826.   /* Some more punctuation. */
  827.   { ISFUNC, (Function *)0x0 },        /* [ */
  828.   { ISFUNC, (Function *)0x0 },        /* \ */
  829.   { ISFUNC, (Function *)0x0 },        /* ] */
  830.   { ISFUNC, (Function *)0x0 },        /* ^ */
  831.   { ISFUNC, (Function *)0x0 },        /* _ */
  832.   { ISFUNC, (Function *)0x0 },        /* ` */
  833.  
  834.   /* Lowercase alphabet. */
  835.   { ISFUNC, (Function *)0x0 },        /* a */
  836.   { ISFUNC, (Function *)0x0 },        /* b */
  837.   { ISFUNC, (Function *)0x0 },        /* c */
  838.   { ISFUNC, (Function *)0x0 },        /* d */
  839.   { ISFUNC, (Function *)0x0 },        /* e */
  840.   { ISFUNC, (Function *)0x0 },        /* f */
  841.   { ISFUNC, (Function *)0x0 },        /* g */
  842.   { ISFUNC, (Function *)0x0 },        /* h */
  843.   { ISFUNC, (Function *)0x0 },        /* i */
  844.   { ISFUNC, (Function *)0x0 },        /* j */
  845.   { ISFUNC, (Function *)0x0 },        /* k */
  846.   { ISFUNC, (Function *)0x0 },        /* l */
  847.   { ISFUNC, (Function *)0x0 },        /* m */
  848.   { ISFUNC, (Function *)0x0 },        /* n */
  849.   { ISFUNC, (Function *)0x0 },        /* o */
  850.   { ISFUNC, (Function *)0x0 },        /* p */
  851.   { ISFUNC, (Function *)0x0 },        /* q */
  852.   { ISFUNC, (Function *)0x0 },        /* r */
  853.   { ISFUNC, (Function *)0x0 },        /* s */
  854.   { ISFUNC, (Function *)0x0 },        /* t */
  855.   { ISFUNC, (Function *)0x0 },        /* u */
  856.   { ISFUNC, (Function *)0x0 },        /* v */
  857.   { ISFUNC, (Function *)0x0 },        /* w */
  858.   { ISFUNC, (Function *)0x0 },        /* x */
  859.   { ISFUNC, (Function *)0x0 },        /* y */
  860.   { ISFUNC, (Function *)0x0 },        /* z */
  861.  
  862.   /* Final punctuation. */
  863.   { ISFUNC, (Function *)0x0 },              /* { */
  864.   { ISFUNC, (Function *)0x0 },              /* | */
  865.   { ISFUNC, (Function *)0x0 },              /* } */
  866.   { ISFUNC, (Function *)0x0 },              /* ~ */
  867.   { ISFUNC, (Function *) rl_backward_kill_word }, /* RUBOUT */
  868.  
  869. #if NUMCHARS==256
  870.   /* Latin-1 or DOS characters */
  871.   { ISFUNC, (Function *)0x0 },
  872.   { ISFUNC, (Function *)0x0 },
  873.   { ISFUNC, (Function *)0x0 },
  874.   { ISFUNC, (Function *)0x0 },
  875.   { ISFUNC, (Function *)0x0 },
  876.   { ISFUNC, (Function *)0x0 },
  877.   { ISFUNC, (Function *)0x0 },
  878.   { ISFUNC, (Function *)0x0 },
  879.   { ISFUNC, (Function *)0x0 },
  880.   { ISFUNC, (Function *)0x0 },
  881.   { ISFUNC, (Function *)0x0 },
  882.   { ISFUNC, (Function *)0x0 },
  883.   { ISFUNC, (Function *)0x0 },
  884.   { ISFUNC, (Function *)0x0 },
  885.   { ISFUNC, (Function *)0x0 },
  886.   { ISFUNC, (Function *)0x0 },
  887.   { ISFUNC, (Function *)0x0 },
  888.   { ISFUNC, (Function *)0x0 },
  889.   { ISFUNC, (Function *)0x0 },
  890.   { ISFUNC, (Function *)0x0 },
  891.   { ISFUNC, (Function *)0x0 },
  892.   { ISFUNC, (Function *)0x0 },
  893.   { ISFUNC, (Function *)0x0 },
  894.   { ISFUNC, (Function *)0x0 },
  895.   { ISFUNC, (Function *)0x0 },
  896.   { ISFUNC, (Function *)0x0 },
  897.   { ISFUNC, (Function *)0x0 },
  898.   { ISFUNC, (Function *)0x0 },
  899.   { ISFUNC, (Function *)0x0 },
  900.   { ISFUNC, (Function *)0x0 },
  901.   { ISFUNC, (Function *)0x0 },
  902.   { ISFUNC, (Function *)0x0 },
  903.   { ISFUNC, (Function *)0x0 },
  904.   { ISFUNC, (Function *)0x0 },
  905.   { ISFUNC, (Function *)0x0 },
  906.   { ISFUNC, (Function *)0x0 },
  907.   { ISFUNC, (Function *)0x0 },
  908.   { ISFUNC, (Function *)0x0 },
  909.   { ISFUNC, (Function *)0x0 },
  910.   { ISFUNC, (Function *)0x0 },
  911.   { ISFUNC, (Function *)0x0 },
  912.   { ISFUNC, (Function *)0x0 },
  913.   { ISFUNC, (Function *)0x0 },
  914.   { ISFUNC, (Function *)0x0 },
  915.   { ISFUNC, (Function *)0x0 },
  916.   { ISFUNC, (Function *)0x0 },
  917.   { ISFUNC, (Function *)0x0 },
  918.   { ISFUNC, (Function *)0x0 },
  919.   { ISFUNC, (Function *)0x0 },
  920.   { ISFUNC, (Function *)0x0 },
  921.   { ISFUNC, (Function *)0x0 },
  922.   { ISFUNC, (Function *)0x0 },
  923.   { ISFUNC, (Function *)0x0 },
  924.   { ISFUNC, (Function *)0x0 },
  925.   { ISFUNC, (Function *)0x0 },
  926.   { ISFUNC, (Function *)0x0 },
  927.   { ISFUNC, (Function *)0x0 },
  928.   { ISFUNC, (Function *)0x0 },
  929.   { ISFUNC, (Function *)0x0 },
  930.   { ISFUNC, (Function *)0x0 },
  931.   { ISFUNC, (Function *)0x0 },
  932.   { ISFUNC, (Function *)0x0 },
  933.   { ISFUNC, (Function *)0x0 },
  934.   { ISFUNC, (Function *)0x0 },
  935.   { ISFUNC, (Function *)0x0 },
  936.   { ISFUNC, (Function *)0x0 },
  937.   { ISFUNC, (Function *)0x0 },
  938.   { ISFUNC, (Function *)0x0 },
  939.   { ISFUNC, (Function *)0x0 },
  940.   { ISFUNC, (Function *)0x0 },
  941.   { ISFUNC, (Function *)0x0 },
  942.   { ISFUNC, (Function *)0x0 },
  943.   { ISFUNC, (Function *)0x0 },
  944.   { ISFUNC, (Function *)0x0 },
  945.   { ISFUNC, (Function *)0x0 },
  946.   { ISFUNC, (Function *)0x0 },
  947.   { ISFUNC, (Function *)0x0 },
  948.   { ISFUNC, (Function *)0x0 },
  949.   { ISFUNC, (Function *)0x0 },
  950.   { ISFUNC, (Function *)0x0 },
  951.   { ISFUNC, (Function *)0x0 },
  952.   { ISFUNC, (Function *)0x0 },
  953.   { ISFUNC, (Function *)0x0 },
  954.   { ISFUNC, (Function *)0x0 },
  955.   { ISFUNC, (Function *)0x0 },
  956.   { ISFUNC, (Function *)0x0 },
  957.   { ISFUNC, (Function *)0x0 },
  958.   { ISFUNC, (Function *)0x0 },
  959.   { ISFUNC, (Function *)0x0 },
  960.   { ISFUNC, (Function *)0x0 },
  961.   { ISFUNC, (Function *)0x0 },
  962.   { ISFUNC, (Function *)0x0 },
  963.   { ISFUNC, (Function *)0x0 },
  964.   { ISFUNC, (Function *)0x0 },
  965.   { ISFUNC, (Function *)0x0 },
  966.   { ISFUNC, (Function *)0x0 },
  967.   { ISFUNC, (Function *)0x0 },
  968.   { ISFUNC, (Function *)0x0 },
  969.   { ISFUNC, (Function *)0x0 },
  970.   { ISFUNC, (Function *)0x0 },
  971.   { ISFUNC, (Function *)0x0 },
  972.   { ISFUNC, (Function *)0x0 },
  973.   { ISFUNC, (Function *)0x0 },
  974.   { ISFUNC, (Function *)0x0 },
  975.   { ISFUNC, (Function *)0x0 },
  976.   { ISFUNC, (Function *)0x0 },
  977.   { ISFUNC, (Function *)0x0 },
  978.   { ISFUNC, (Function *)0x0 },
  979.   { ISFUNC, (Function *)0x0 },
  980.   { ISFUNC, (Function *)0x0 },
  981.   { ISFUNC, (Function *)0x0 },
  982.   { ISFUNC, (Function *)0x0 },
  983.   { ISFUNC, (Function *)0x0 },
  984.   { ISFUNC, (Function *)0x0 },
  985.   { ISFUNC, (Function *)0x0 },
  986.   { ISFUNC, (Function *)0x0 },
  987.   { ISFUNC, (Function *)0x0 },
  988.   { ISFUNC, (Function *)0x0 },
  989.   { ISFUNC, (Function *)0x0 },
  990.   { ISFUNC, (Function *)0x0 },
  991.   { ISFUNC, (Function *)0x0 },
  992.   { ISFUNC, (Function *)0x0 },
  993.   { ISFUNC, (Function *)0x0 },
  994.   { ISFUNC, (Function *)0x0 },
  995.   { ISFUNC, (Function *)0x0 },
  996.   { ISFUNC, (Function *)0x0 },
  997.   { ISFUNC, (Function *)0x0 },
  998.   { ISFUNC, (Function *)0x0 },
  999. #endif
  1000.  
  1001. };
  1002.