home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Atari / Gnu / gdb36p4s.zoo / readline / vi_keymap.c < prev    next >
C/C++ Source or Header  |  1991-07-11  |  18KB  |  475 lines

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