home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / gnu / gdb-4.12.tar.gz / gdb-4.12.tar / gdb-4.12 / readline / vi_keymap.c < prev    next >
C/C++ Source or Header  |  1994-02-03  |  18KB  |  469 lines

  1. /* vi_keymap.c -- the keymap for vi_mode in readline (). */
  2.  
  3. /* Copyright (C) 1988, 1989, 1991 Free Software Foundation, Inc.
  4.  
  5.    This file is part of GNU Readline, a library for reading lines
  6.    of text with interactive input and history editing.
  7.  
  8.    Readline is free software; you can redistribute it and/or modify
  9.    it under the terms of the GNU General Public License as published by
  10.    the Free Software Foundation; either version 2 of the License, or
  11.    (at your option) any later version.
  12.  
  13.    Readline is distributed in the hope that it will be useful,
  14.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16.    GNU General Public License for more details.
  17.  
  18.    You should have received a copy of the GNU General Public License
  19.    along with this program; if not, write to the Free Software
  20.    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  21.  
  22. extern KEYMAP_ENTRY_ARRAY vi_escape_keymap;
  23.  
  24. /* The keymap arrays for handling vi mode. */
  25. KEYMAP_ENTRY_ARRAY vi_movement_keymap = {
  26.  
  27.   /* The regular control keys come first. */
  28.   { ISFUNC, (Function *)0x0 },        /* Control-@ */
  29.   { ISFUNC, (Function *)0x0 },        /* Control-a */
  30.   { ISFUNC, (Function *)0x0 },        /* Control-b */
  31.   { ISFUNC, (Function *)0x0 },        /* Control-c */
  32.   { ISFUNC, rl_vi_eof_maybe },        /* Control-d */
  33.   { ISFUNC, rl_emacs_editing_mode },    /* Control-e */
  34.   { ISFUNC, (Function *)0x0 },        /* Control-f */
  35.   { ISFUNC, rl_abort },            /* Control-g */
  36.   { ISFUNC, rl_rubout },        /* Control-h */
  37.   { ISFUNC, (Function *)0x0 },        /* Control-i */
  38.   { ISFUNC, rl_newline },        /* Control-j */
  39.   { ISFUNC, rl_kill_line },        /* Control-k */
  40.   { ISFUNC, rl_clear_screen },        /* Control-l */
  41.   { ISFUNC, rl_newline },        /* Control-m */
  42.   { ISFUNC, rl_get_next_history },    /* Control-n */
  43.   { ISFUNC, (Function *)0x0 },        /* Control-o */
  44.   { ISFUNC, rl_get_previous_history },    /* Control-p */
  45.   { ISFUNC, rl_quoted_insert },        /* Control-q */
  46.   { ISFUNC, rl_reverse_search_history }, /* Control-r */
  47.   { ISFUNC, rl_forward_search_history }, /* Control-s */
  48.   { ISFUNC, rl_transpose_chars },    /* Control-t */
  49.   { ISFUNC, rl_unix_line_discard },    /* Control-u */
  50.   { ISFUNC, rl_quoted_insert },        /* Control-v */
  51.   { ISFUNC, rl_unix_word_rubout },    /* Control-w */
  52.   { ISFUNC, (Function *)0x0 },        /* Control-x */
  53.   { ISFUNC, rl_yank },            /* Control-y */
  54.   { ISFUNC, (Function *)0x0 },        /* Control-z */
  55.  
  56.   { ISKMAP, (Function *)vi_escape_keymap }, /* Control-[ */
  57.   { ISFUNC, (Function *)0x0 },        /* Control-\ */
  58.   { ISFUNC, (Function *)0x0 },        /* Control-] */
  59.   { ISFUNC, (Function *)0x0 },        /* Control-^ */
  60.   { ISFUNC, rl_undo_command },        /* Control-_ */
  61.  
  62.   /* The start of printing characters. */
  63.   { ISFUNC, rl_forward },        /* SPACE */
  64.   { ISFUNC, (Function *)0x0 },        /* ! */
  65.   { ISFUNC, (Function *)0x0 },        /* " */
  66.   { ISFUNC, rl_vi_comment },        /* # */
  67.   { ISFUNC, rl_end_of_line },        /* $ */
  68.   { ISFUNC, rl_vi_match },        /* % */
  69.   { ISFUNC, (Function *)0x0 },        /* & */
  70.   { ISFUNC, (Function *)0x0 },        /* ' */
  71.   { ISFUNC, (Function *)0x0 },        /* ( */
  72.   { ISFUNC, (Function *)0x0 },        /* ) */
  73.   { ISFUNC, rl_vi_complete },        /* * */
  74.   { ISFUNC, rl_get_next_history},    /* + */
  75.   { ISFUNC, rl_vi_char_search },    /* , */
  76.   { ISFUNC, rl_get_previous_history },    /* - */
  77.   { ISFUNC, (Function *)0x0 },        /* . */
  78.   { ISFUNC, rl_vi_search },        /* / */
  79.  
  80.   /* Regular digits. */
  81.   { ISFUNC, rl_vi_arg_digit },        /* 0 */
  82.   { ISFUNC, rl_vi_arg_digit },        /* 1 */
  83.   { ISFUNC, rl_vi_arg_digit },        /* 2 */
  84.   { ISFUNC, rl_vi_arg_digit },        /* 3 */
  85.   { ISFUNC, rl_vi_arg_digit },        /* 4 */
  86.   { ISFUNC, rl_vi_arg_digit },        /* 5 */
  87.   { ISFUNC, rl_vi_arg_digit },        /* 6 */
  88.   { ISFUNC, rl_vi_arg_digit },        /* 7 */
  89.   { ISFUNC, rl_vi_arg_digit },        /* 8 */
  90.   { ISFUNC, rl_vi_arg_digit },        /* 9 */
  91.  
  92.   /* A little more punctuation. */
  93.   { ISFUNC, (Function *)0x0 },        /* : */
  94.   { ISFUNC, rl_vi_char_search },    /* ; */
  95.   { ISFUNC, (Function *)0x0 },        /* < */
  96.   { ISFUNC, rl_vi_complete },        /* = */
  97.   { ISFUNC, (Function *)0x0 },        /* > */
  98.   { ISFUNC, rl_vi_search },        /* ? */
  99.   { ISFUNC, (Function *)0x0 },        /* @ */
  100.  
  101.   /* Uppercase alphabet. */
  102.   { ISFUNC, rl_vi_append_eol },        /* A */
  103.   { ISFUNC, rl_vi_prev_word},        /* B */
  104.   { ISFUNC, rl_vi_change_to },        /* C */
  105.   { ISFUNC, rl_vi_delete_to },        /* D */
  106.   { ISFUNC, rl_vi_end_word },        /* E */
  107.   { ISFUNC, rl_vi_char_search },    /* F */
  108.   { ISFUNC, rl_vi_fetch_history },    /* G */
  109.   { ISFUNC, (Function *)0x0 },        /* H */
  110.   { ISFUNC, rl_vi_insert_beg },        /* I */
  111.   { ISFUNC, (Function *)0x0 },        /* J */
  112.   { ISFUNC, (Function *)0x0 },        /* K */
  113.   { ISFUNC, (Function *)0x0 },        /* L */
  114.   { ISFUNC, (Function *)0x0 },        /* M */
  115.   { ISFUNC, rl_vi_search_again },    /* N */
  116.   { ISFUNC, (Function *)0x0 },        /* O */
  117.   { ISFUNC, rl_vi_put },        /* P */
  118.   { ISFUNC, (Function *)0x0 },        /* Q */
  119.   { ISFUNC, rl_vi_replace },        /* R */
  120.   { ISFUNC, rl_vi_subst },        /* S */
  121.   { ISFUNC, rl_vi_char_search },    /* T */
  122.   { ISFUNC, rl_revert_line },        /* U */
  123.   { ISFUNC, (Function *)0x0 },        /* V */
  124.   { ISFUNC, rl_vi_next_word },        /* W */
  125.   { ISFUNC, rl_rubout },        /* X */
  126.   { ISFUNC, rl_vi_yank_to },        /* Y */
  127.   { ISFUNC, (Function *)0x0 },        /* Z */
  128.  
  129.   /* Some more punctuation. */
  130.   { ISFUNC, (Function *)0x0 },        /* [ */
  131.   { ISFUNC, rl_vi_complete },        /* \ */
  132.   { ISFUNC, (Function *)0x0 },        /* ] */
  133.   { ISFUNC, rl_vi_first_print },    /* ^ */
  134.   { ISFUNC, rl_vi_yank_arg },        /* _ */
  135.   { ISFUNC, (Function *)0x0 },        /* ` */
  136.  
  137.   /* Lowercase alphabet. */
  138.   { ISFUNC, rl_vi_append_mode },    /* a */
  139.   { ISFUNC, rl_vi_prev_word },        /* b */
  140.   { ISFUNC, rl_vi_change_to },        /* c */
  141.   { ISFUNC, rl_vi_delete_to },        /* d */
  142.   { ISFUNC, rl_vi_end_word },        /* e */
  143.   { ISFUNC, rl_vi_char_search },    /* f */
  144.   { ISFUNC, (Function *)0x0 },        /* g */
  145.   { ISFUNC, rl_backward },        /* h */
  146.   { ISFUNC, rl_vi_insertion_mode },    /* i */
  147.   { ISFUNC, rl_get_next_history },    /* j */
  148.   { ISFUNC, rl_get_previous_history },    /* k */
  149.   { ISFUNC, rl_forward },        /* l */
  150.   { ISFUNC, (Function *)0x0 },        /* m */
  151.   { ISFUNC, rl_vi_search_again },    /* n */
  152.   { ISFUNC, (Function *)0x0 },        /* o */
  153.   { ISFUNC, rl_vi_put },        /* p */
  154.   { ISFUNC, (Function *)0x0 },        /* q */
  155.   { ISFUNC, rl_vi_change_char },    /* r */
  156.   { ISFUNC, rl_vi_subst },        /* s */
  157.   { ISFUNC, rl_vi_char_search },    /* t */
  158.   { ISFUNC, rl_undo_command },        /* u */
  159.   { ISFUNC, (Function *)0x0 },        /* v */
  160.   { ISFUNC, rl_vi_next_word },        /* w */
  161.   { ISFUNC, rl_vi_delete },        /* x */
  162.   { ISFUNC, rl_vi_yank_to },        /* y */
  163.   { ISFUNC, (Function *)0x0 },        /* z */
  164.  
  165.   /* Final punctuation. */
  166.   { ISFUNC, (Function *)0x0 },        /* { */
  167.   { ISFUNC, rl_vi_column },        /* | */
  168.   { ISFUNC, (Function *)0x0 },        /* } */
  169.   { ISFUNC, rl_vi_change_case },    /* ~ */
  170.   { ISFUNC, rl_backward }        /* RUBOUT */
  171. };
  172.  
  173.  
  174. KEYMAP_ENTRY_ARRAY vi_insertion_keymap = {
  175.  
  176.   /* The regular control keys come first. */
  177.   { ISFUNC, (Function *)0x0 },        /* Control-@ */
  178.   { ISFUNC, rl_insert },        /* Control-a */
  179.   { ISFUNC, rl_insert },        /* Control-b */
  180.   { ISFUNC, rl_insert },        /* Control-c */
  181.   { ISFUNC, rl_vi_eof_maybe },        /* Control-d */
  182.   { ISFUNC, rl_insert },        /* Control-e */
  183.   { ISFUNC, rl_insert },        /* Control-f */
  184.   { ISFUNC, rl_insert },        /* Control-g */
  185.   { ISFUNC, rl_rubout },        /* Control-h */
  186.   { ISFUNC, rl_complete },        /* Control-i */
  187.   { ISFUNC, rl_newline },        /* Control-j */
  188.   { ISFUNC, rl_insert },        /* Control-k */
  189.   { ISFUNC, rl_insert },        /* Control-l */
  190.   { ISFUNC, rl_newline },        /* Control-m */
  191.   { ISFUNC, rl_insert },        /* Control-n */
  192.   { ISFUNC, rl_insert },        /* Control-o */
  193.   { ISFUNC, rl_insert },        /* Control-p */
  194.   { ISFUNC, rl_insert },        /* Control-q */
  195.   { ISFUNC, rl_reverse_search_history }, /* Control-r */
  196.   { ISFUNC, rl_forward_search_history }, /* Control-s */
  197.   { ISFUNC, rl_transpose_chars },    /* Control-t */
  198.   { ISFUNC, rl_unix_line_discard },    /* Control-u */
  199.   { ISFUNC, rl_quoted_insert },        /* Control-v */
  200.   { ISFUNC, rl_unix_word_rubout },    /* Control-w */
  201.   { ISFUNC, rl_insert },        /* Control-x */
  202.   { ISFUNC, rl_yank },            /* Control-y */
  203.   { ISFUNC, rl_insert },        /* Control-z */
  204.  
  205.   { ISFUNC, rl_vi_movement_mode },    /* Control-[ */
  206.   { ISFUNC, rl_insert },        /* Control-\ */
  207.   { ISFUNC, rl_insert },        /* Control-] */
  208.   { ISFUNC, rl_insert },        /* Control-^ */
  209.   { ISFUNC, rl_undo_command },        /* Control-_ */
  210.  
  211.   /* The start of printing characters. */
  212.   { ISFUNC, rl_insert },        /* SPACE */
  213.   { ISFUNC, rl_insert },        /* ! */
  214.   { ISFUNC, rl_insert },        /* " */
  215.   { ISFUNC, rl_insert },        /* # */
  216.   { ISFUNC, rl_insert },        /* $ */
  217.   { ISFUNC, rl_insert },        /* % */
  218.   { ISFUNC, rl_insert },        /* & */
  219.   { ISFUNC, rl_insert },        /* ' */
  220.   { ISFUNC, rl_insert },        /* ( */
  221.   { ISFUNC, rl_insert },        /* ) */
  222.   { ISFUNC, rl_insert },        /* * */
  223.   { ISFUNC, rl_insert },        /* + */
  224.   { ISFUNC, rl_insert },        /* , */
  225.   { ISFUNC, rl_insert },        /* - */
  226.   { ISFUNC, rl_insert },        /* . */
  227.   { ISFUNC, rl_insert },        /* / */
  228.  
  229.   /* Regular digits. */
  230.   { ISFUNC, rl_insert },        /* 0 */
  231.   { ISFUNC, rl_insert },        /* 1 */
  232.   { ISFUNC, rl_insert },        /* 2 */
  233.   { ISFUNC, rl_insert },        /* 3 */
  234.   { ISFUNC, rl_insert },        /* 4 */
  235.   { ISFUNC, rl_insert },        /* 5 */
  236.   { ISFUNC, rl_insert },        /* 6 */
  237.   { ISFUNC, rl_insert },        /* 7 */
  238.   { ISFUNC, rl_insert },        /* 8 */
  239.   { ISFUNC, rl_insert },        /* 9 */
  240.  
  241.   /* A little more punctuation. */
  242.   { ISFUNC, rl_insert },        /* : */
  243.   { ISFUNC, rl_insert },        /* ; */
  244.   { ISFUNC, rl_insert },        /* < */
  245.   { ISFUNC, rl_insert },        /* = */
  246.   { ISFUNC, rl_insert },        /* > */
  247.   { ISFUNC, rl_insert },        /* ? */
  248.   { ISFUNC, rl_insert },        /* @ */
  249.  
  250.   /* Uppercase alphabet. */
  251.   { ISFUNC, rl_insert },        /* A */
  252.   { ISFUNC, rl_insert },        /* B */
  253.   { ISFUNC, rl_insert },        /* C */
  254.   { ISFUNC, rl_insert },        /* D */
  255.   { ISFUNC, rl_insert },        /* E */
  256.   { ISFUNC, rl_insert },        /* F */
  257.   { ISFUNC, rl_insert },        /* G */
  258.   { ISFUNC, rl_insert },        /* H */
  259.   { ISFUNC, rl_insert },        /* I */
  260.   { ISFUNC, rl_insert },        /* J */
  261.   { ISFUNC, rl_insert },        /* K */
  262.   { ISFUNC, rl_insert },        /* L */
  263.   { ISFUNC, rl_insert },        /* M */
  264.   { ISFUNC, rl_insert },        /* N */
  265.   { ISFUNC, rl_insert },        /* O */
  266.   { ISFUNC, rl_insert },        /* P */
  267.   { ISFUNC, rl_insert },        /* Q */
  268.   { ISFUNC, rl_insert },        /* R */
  269.   { ISFUNC, rl_insert },        /* S */
  270.   { ISFUNC, rl_insert },        /* T */
  271.   { ISFUNC, rl_insert },        /* U */
  272.   { ISFUNC, rl_insert },        /* V */
  273.   { ISFUNC, rl_insert },        /* W */
  274.   { ISFUNC, rl_insert },        /* X */
  275.   { ISFUNC, rl_insert },        /* Y */
  276.   { ISFUNC, rl_insert },        /* Z */
  277.  
  278.   /* Some more punctuation. */
  279.   { ISFUNC, rl_insert },        /* [ */
  280.   { ISFUNC, rl_insert },        /* \ */
  281.   { ISFUNC, rl_insert },        /* ] */
  282.   { ISFUNC, rl_insert },        /* ^ */
  283.   { ISFUNC, rl_insert },        /* _ */
  284.   { ISFUNC, rl_insert },        /* ` */
  285.  
  286.   /* Lowercase alphabet. */
  287.   { ISFUNC, rl_insert },        /* a */
  288.   { ISFUNC, rl_insert },        /* b */
  289.   { ISFUNC, rl_insert },        /* c */
  290.   { ISFUNC, rl_insert },        /* d */
  291.   { ISFUNC, rl_insert },        /* e */
  292.   { ISFUNC, rl_insert },        /* f */
  293.   { ISFUNC, rl_insert },        /* g */
  294.   { ISFUNC, rl_insert },        /* h */
  295.   { ISFUNC, rl_insert },        /* i */
  296.   { ISFUNC, rl_insert },        /* j */
  297.   { ISFUNC, rl_insert },        /* k */
  298.   { ISFUNC, rl_insert },        /* l */
  299.   { ISFUNC, rl_insert },        /* m */
  300.   { ISFUNC, rl_insert },        /* n */
  301.   { ISFUNC, rl_insert },        /* o */
  302.   { ISFUNC, rl_insert },        /* p */
  303.   { ISFUNC, rl_insert },        /* q */
  304.   { ISFUNC, rl_insert },        /* r */
  305.   { ISFUNC, rl_insert },        /* s */
  306.   { ISFUNC, rl_insert },        /* t */
  307.   { ISFUNC, rl_insert },        /* u */
  308.   { ISFUNC, rl_insert },        /* v */
  309.   { ISFUNC, rl_insert },        /* w */
  310.   { ISFUNC, rl_insert },        /* x */
  311.   { ISFUNC, rl_insert },        /* y */
  312.   { ISFUNC, rl_insert },        /* z */
  313.  
  314.   /* Final punctuation. */
  315.   { ISFUNC, rl_insert },        /* { */
  316.   { ISFUNC, rl_insert },        /* | */
  317.   { ISFUNC, rl_insert },        /* } */
  318.   { ISFUNC, rl_insert },        /* ~ */
  319.   { ISFUNC, rl_rubout }            /* RUBOUT */
  320. };
  321.  
  322. KEYMAP_ENTRY_ARRAY vi_escape_keymap = {
  323.  
  324.   /* The regular control keys come first. */
  325.   { ISFUNC, (Function *)0x0 },        /* Control-@ */
  326.   { ISFUNC, (Function *)0x0 },        /* Control-a */
  327.   { ISFUNC, (Function *)0x0 },        /* Control-b */
  328.   { ISFUNC, (Function *)0x0 },        /* Control-c */
  329.   { ISFUNC, (Function *)0x0 },        /* Control-d */
  330.   { ISFUNC, (Function *)0x0 },        /* Control-e */
  331.   { ISFUNC, (Function *)0x0 },        /* Control-f */
  332.   { ISFUNC, (Function *)0x0 },        /* Control-g */
  333.   { ISFUNC, (Function *)0x0 },        /* Control-h */
  334.   { ISFUNC, rl_tab_insert},        /* Control-i */
  335.   { ISFUNC, rl_emacs_editing_mode},    /* Control-j */
  336.   { ISFUNC, rl_kill_line },        /* Control-k */
  337.   { ISFUNC, (Function *)0x0 },        /* Control-l */
  338.   { ISFUNC, rl_emacs_editing_mode},    /* Control-m */
  339.   { ISFUNC, (Function *)0x0 },        /* Control-n */
  340.   { ISFUNC, (Function *)0x0 },        /* Control-o */
  341.   { ISFUNC, (Function *)0x0 },        /* Control-p */
  342.   { ISFUNC, (Function *)0x0 },        /* Control-q */
  343.   { ISFUNC, (Function *)0x0 },        /* Control-r */
  344.   { ISFUNC, (Function *)0x0 },        /* Control-s */
  345.   { ISFUNC, (Function *)0x0 },        /* Control-t */
  346.   { ISFUNC, (Function *)0x0 },        /* Control-u */
  347.   { ISFUNC, (Function *)0x0 },        /* Control-v */
  348.   { ISFUNC, (Function *)0x0 },        /* Control-w */
  349.   { ISFUNC, (Function *)0x0 },        /* Control-x */
  350.   { ISFUNC, (Function *)0x0 },        /* Control-y */
  351.   { ISFUNC, (Function *)0x0 },        /* Control-z */
  352.  
  353.   { ISFUNC, rl_vi_movement_mode },    /* Control-[ */
  354.   { ISFUNC, (Function *)0x0 },        /* Control-\ */
  355.   { ISFUNC, (Function *)0x0 },        /* Control-] */
  356.   { ISFUNC, (Function *)0x0 },        /* Control-^ */
  357.   { ISFUNC, rl_undo_command },        /* Control-_ */
  358.  
  359.   /* The start of printing characters. */
  360.   { ISFUNC, (Function *)0x0 },        /* SPACE */
  361.   { ISFUNC, (Function *)0x0 },        /* ! */
  362.   { ISFUNC, (Function *)0x0 },        /* " */
  363.   { ISFUNC, (Function *)0x0 },        /* # */
  364.   { ISFUNC, (Function *)0x0 },        /* $ */
  365.   { ISFUNC, (Function *)0x0 },        /* % */
  366.   { ISFUNC, (Function *)0x0 },        /* & */
  367.   { ISFUNC, (Function *)0x0 },        /* ' */
  368.   { ISFUNC, (Function *)0x0 },        /* ( */
  369.   { ISFUNC, (Function *)0x0 },        /* ) */
  370.   { ISFUNC, (Function *)0x0 },        /* * */
  371.   { ISFUNC, (Function *)0x0 },        /* + */
  372.   { ISFUNC, (Function *)0x0 },        /* , */
  373.   { ISFUNC, (Function *)0x0 },        /* - */
  374.   { ISFUNC, (Function *)0x0 },        /* . */
  375.   { ISFUNC, (Function *)0x0 },        /* / */
  376.  
  377.   /* Regular digits. */
  378.   { ISFUNC, rl_vi_arg_digit },        /* 0 */
  379.   { ISFUNC, rl_vi_arg_digit },        /* 1 */
  380.   { ISFUNC, rl_vi_arg_digit },        /* 2 */
  381.   { ISFUNC, rl_vi_arg_digit },        /* 3 */
  382.   { ISFUNC, rl_vi_arg_digit },        /* 4 */
  383.   { ISFUNC, rl_vi_arg_digit },        /* 5 */
  384.   { ISFUNC, rl_vi_arg_digit },        /* 6 */
  385.   { ISFUNC, rl_vi_arg_digit },        /* 7 */
  386.   { ISFUNC, rl_vi_arg_digit },        /* 8 */
  387.   { ISFUNC, rl_vi_arg_digit },        /* 9 */
  388.  
  389.   /* A little more punctuation. */
  390.   { ISFUNC, (Function *)0x0 },        /* : */
  391.   { ISFUNC, (Function *)0x0 },        /* ; */
  392.   { ISFUNC, (Function *)0x0 },        /* < */
  393.   { ISFUNC, (Function *)0x0 },        /* = */
  394.   { ISFUNC, (Function *)0x0 },        /* > */
  395.   { ISFUNC, (Function *)0x0 },        /* ? */
  396.   { ISFUNC, (Function *)0x0 },        /* @ */
  397.  
  398.   /* Uppercase alphabet. */
  399.   { ISFUNC, rl_do_lowercase_version },    /* A */
  400.   { ISFUNC, rl_do_lowercase_version },    /* B */
  401.   { ISFUNC, rl_do_lowercase_version },    /* C */
  402.   { ISFUNC, rl_do_lowercase_version },    /* D */
  403.   { ISFUNC, rl_do_lowercase_version },    /* E */
  404.   { ISFUNC, rl_do_lowercase_version },    /* F */
  405.   { ISFUNC, rl_do_lowercase_version },    /* G */
  406.   { ISFUNC, rl_do_lowercase_version },    /* H */
  407.   { ISFUNC, rl_do_lowercase_version },    /* I */
  408.   { ISFUNC, rl_do_lowercase_version },    /* J */
  409.   { ISFUNC, rl_do_lowercase_version },    /* K */
  410.   { ISFUNC, rl_do_lowercase_version },    /* L */
  411.   { ISFUNC, rl_do_lowercase_version },    /* M */
  412.   { ISFUNC, rl_do_lowercase_version },    /* N */
  413.   { ISFUNC, rl_do_lowercase_version },    /* O */
  414.   { ISFUNC, rl_do_lowercase_version },    /* P */
  415.   { ISFUNC, rl_do_lowercase_version },    /* Q */
  416.   { ISFUNC, rl_do_lowercase_version },    /* R */
  417.   { ISFUNC, rl_do_lowercase_version },    /* S */
  418.   { ISFUNC, rl_do_lowercase_version },    /* T */
  419.   { ISFUNC, rl_do_lowercase_version },    /* U */
  420.   { ISFUNC, rl_do_lowercase_version },    /* V */
  421.   { ISFUNC, rl_do_lowercase_version },    /* W */
  422.   { ISFUNC, rl_do_lowercase_version },    /* X */
  423.   { ISFUNC, rl_do_lowercase_version },    /* Y */
  424.   { ISFUNC, rl_do_lowercase_version },    /* Z */
  425.  
  426.   /* Some more punctuation. */
  427.   { ISFUNC, (Function *)0x0 },        /* [ */
  428.   { ISFUNC, (Function *)0x0 },        /* \ */
  429.   { ISFUNC, (Function *)0x0 },        /* ] */
  430.   { ISFUNC, (Function *)0x0 },        /* ^ */
  431.   { ISFUNC, (Function *)0x0 },        /* _ */
  432.   { ISFUNC, (Function *)0x0 },        /* ` */
  433.  
  434.   /* Lowercase alphabet. */
  435.   { ISFUNC, (Function *)0x0 },        /* a */
  436.   { ISFUNC, (Function *)0x0 },        /* b */
  437.   { ISFUNC, (Function *)0x0 },        /* c */
  438.   { ISFUNC, (Function *)0x0 },        /* d */
  439.   { ISFUNC, (Function *)0x0 },        /* e */
  440.   { ISFUNC, (Function *)0x0 },        /* f */
  441.   { ISFUNC, (Function *)0x0 },        /* g */
  442.   { ISFUNC, (Function *)0x0 },        /* h */
  443.   { ISFUNC, (Function *)0x0 },        /* i */
  444.   { ISFUNC, (Function *)0x0 },        /* j */
  445.   { ISFUNC, (Function *)0x0 },        /* k */
  446.   { ISFUNC, (Function *)0x0 },        /* l */
  447.   { ISFUNC, (Function *)0x0 },        /* m */
  448.   { ISFUNC, (Function *)0x0 },        /* n */
  449.   { ISFUNC, (Function *)0x0 },        /* o */
  450.   { ISFUNC, (Function *)0x0 },        /* p */
  451.   { ISFUNC, (Function *)0x0 },        /* q */
  452.   { ISFUNC, (Function *)0x0 },        /* r */
  453.   { ISFUNC, (Function *)0x0 },        /* s */
  454.   { ISFUNC, (Function *)0x0 },        /* t */
  455.   { ISFUNC, (Function *)0x0 },        /* u */
  456.   { ISFUNC, (Function *)0x0 },        /* v */
  457.   { ISFUNC, (Function *)0x0 },        /* w */
  458.   { ISFUNC, (Function *)0x0 },        /* x */
  459.   { ISFUNC, (Function *)0x0 },        /* y */
  460.   { ISFUNC, (Function *)0x0 },        /* z */
  461.  
  462.   /* Final punctuation. */
  463.   { ISFUNC, (Function *)0x0 },        /* { */
  464.   { ISFUNC, (Function *)0x0 },        /* | */
  465.   { ISFUNC, (Function *)0x0 },        /* } */
  466.   { ISFUNC, (Function *)0x0 },        /* ~ */
  467.   { ISFUNC, rl_backward_kill_word }    /* RUBOUT */
  468. };
  469.