]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - readline/keymaps.h
[testsuite] Make the testsuite work on mingw
[thirdparty/binutils-gdb.git] / readline / keymaps.h
CommitLineData
d60d9f65
SS
1/* keymaps.h -- Manipulation of readline keymaps. */
2
3/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
4
cc88a640
JK
5 This file is part of the GNU Readline Library (Readline), a library
6 for reading lines of text with interactive input and history editing.
d60d9f65 7
cc88a640
JK
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 3 of the License, or
d60d9f65
SS
11 (at your option) any later version.
12
cc88a640
JK
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
d60d9f65
SS
16 GNU General Public License for more details.
17
cc88a640
JK
18 You should have received a copy of the GNU General Public License
19 along with Readline. If not, see <http://www.gnu.org/licenses/>.
20*/
d60d9f65
SS
21
22#ifndef _KEYMAPS_H_
23#define _KEYMAPS_H_
24
1b17e766
EZ
25#ifdef __cplusplus
26extern "C" {
27#endif
28
d60d9f65 29#if defined (READLINE_LIBRARY)
c862e87b 30# include "rlstdc.h"
d60d9f65 31# include "chardefs.h"
9255ee31 32# include "rltypedefs.h"
d60d9f65 33#else
c862e87b 34# include <readline/rlstdc.h>
d60d9f65 35# include <readline/chardefs.h>
9255ee31 36# include <readline/rltypedefs.h>
d60d9f65
SS
37#endif
38
39/* A keymap contains one entry for each key in the ASCII set.
40 Each entry consists of a type and a pointer.
41 FUNCTION is the address of a function to run, or the
42 address of a keymap to indirect through.
43 TYPE says which kind of thing FUNCTION is. */
44typedef struct _keymap_entry {
45 char type;
9255ee31 46 rl_command_func_t *function;
d60d9f65
SS
47} KEYMAP_ENTRY;
48
49/* This must be large enough to hold bindings for all of the characters
50 in a desired character set (e.g, 128 for ASCII, 256 for ISO Latin-x,
9255ee31
EZ
51 and so on) plus one for subsequence matching. */
52#define KEYMAP_SIZE 257
53#define ANYOTHERKEY KEYMAP_SIZE-1
d60d9f65 54
d60d9f65
SS
55typedef KEYMAP_ENTRY KEYMAP_ENTRY_ARRAY[KEYMAP_SIZE];
56typedef KEYMAP_ENTRY *Keymap;
57
58/* The values that TYPE can have in a keymap entry. */
59#define ISFUNC 0
60#define ISKMAP 1
61#define ISMACR 2
62
63extern KEYMAP_ENTRY_ARRAY emacs_standard_keymap, emacs_meta_keymap, emacs_ctlx_keymap;
64extern KEYMAP_ENTRY_ARRAY vi_insertion_keymap, vi_movement_keymap;
65
66/* Return a new, empty keymap.
67 Free it with free() when you are done. */
9255ee31 68extern Keymap rl_make_bare_keymap PARAMS((void));
d60d9f65
SS
69
70/* Return a new keymap which is a copy of MAP. */
9255ee31 71extern Keymap rl_copy_keymap PARAMS((Keymap));
d60d9f65
SS
72
73/* Return a new keymap with the printing characters bound to rl_insert,
74 the lowercase Meta characters bound to run their equivalents, and
75 the Meta digits bound to produce numeric arguments. */
9255ee31 76extern Keymap rl_make_keymap PARAMS((void));
d60d9f65 77
c862e87b 78/* Free the storage associated with a keymap. */
9255ee31 79extern void rl_discard_keymap PARAMS((Keymap));
c862e87b
JM
80
81/* These functions actually appear in bind.c */
d60d9f65
SS
82
83/* Return the keymap corresponding to a given name. Names look like
c862e87b 84 `emacs' or `emacs-meta' or `vi-insert'. */
9255ee31 85extern Keymap rl_get_keymap_by_name PARAMS((const char *));
d60d9f65
SS
86
87/* Return the current keymap. */
9255ee31 88extern Keymap rl_get_keymap PARAMS((void));
d60d9f65
SS
89
90/* Set the current keymap to MAP. */
9255ee31 91extern void rl_set_keymap PARAMS((Keymap));
d60d9f65 92
cb41b9e7
TT
93/* Set the name of MAP to NAME */
94extern int rl_set_keymap_name PARAMS((const char *, Keymap));
95
1b17e766
EZ
96#ifdef __cplusplus
97}
98#endif
99
d60d9f65 100#endif /* _KEYMAPS_H_ */