Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemathinc
GitHub Repository: sagemathinc/wapython
Path: blob/main/core/libedit/src/readline/readline.h
1070 views
1
/* $NetBSD: readline.h,v 1.46 2019/06/07 15:19:29 christos Exp $ */
2
3
/*-
4
* Copyright (c) 1997 The NetBSD Foundation, Inc.
5
* All rights reserved.
6
*
7
* This code is derived from software contributed to The NetBSD Foundation
8
* by Jaromir Dolecek.
9
*
10
* Redistribution and use in source and binary forms, with or without
11
* modification, are permitted provided that the following conditions
12
* are met:
13
* 1. Redistributions of source code must retain the above copyright
14
* notice, this list of conditions and the following disclaimer.
15
* 2. Redistributions in binary form must reproduce the above copyright
16
* notice, this list of conditions and the following disclaimer in the
17
* documentation and/or other materials provided with the distribution.
18
*
19
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
* POSSIBILITY OF SUCH DAMAGE.
30
*/
31
#ifndef _READLINE_H_
32
#define _READLINE_H_
33
34
#include <sys/types.h>
35
#include <stdio.h>
36
37
/* list of readline stuff supported by editline library's readline wrapper */
38
39
/* typedefs */
40
typedef int Function(const char *, int);
41
typedef char *CPFunction(const char *, int);
42
typedef void VFunction(void);
43
typedef void rl_vcpfunc_t(char *);
44
typedef char **rl_completion_func_t(const char *, int, int);
45
typedef char *rl_compentry_func_t(const char *, int);
46
typedef int rl_command_func_t(int, int);
47
typedef int rl_hook_func_t(void);
48
49
/* only supports length */
50
typedef struct {
51
int length;
52
} HISTORY_STATE;
53
54
typedef void *histdata_t;
55
56
typedef struct _hist_entry {
57
const char *line;
58
histdata_t data;
59
} HIST_ENTRY;
60
61
typedef struct _keymap_entry {
62
char type;
63
#define ISFUNC 0
64
#define ISKMAP 1
65
#define ISMACR 2
66
Function *function;
67
} KEYMAP_ENTRY;
68
69
#define KEYMAP_SIZE 256
70
71
typedef KEYMAP_ENTRY KEYMAP_ENTRY_ARRAY[KEYMAP_SIZE];
72
typedef KEYMAP_ENTRY *Keymap;
73
74
#define control_character_threshold 0x20
75
#define control_character_bit 0x40
76
77
#ifndef CTRL
78
#include <sys/ioctl.h>
79
#if !defined(__sun) && !defined(__hpux) && !defined(_AIX)
80
#include <sys/ttydefaults.h>
81
#endif
82
#ifndef CTRL
83
#define CTRL(c) ((c) & 037)
84
#endif
85
#endif
86
#ifndef UNCTRL
87
#define UNCTRL(c) (((c) - 'a' + 'A')|control_character_bit)
88
#endif
89
90
#define RUBOUT 0x7f
91
#define ABORT_CHAR CTRL('G')
92
#define RL_READLINE_VERSION 0x0402
93
#define RL_PROMPT_START_IGNORE '\1'
94
#define RL_PROMPT_END_IGNORE '\2'
95
96
/* global variables used by readline enabled applications */
97
#ifdef __cplusplus
98
extern "C" {
99
#endif
100
extern const char *rl_library_version;
101
extern int rl_readline_version;
102
extern const char *rl_readline_name;
103
extern FILE *rl_instream;
104
extern FILE *rl_outstream;
105
extern char *rl_line_buffer;
106
extern int rl_point, rl_end;
107
extern int history_base, history_length;
108
extern int max_input_history;
109
extern const char *rl_basic_word_break_characters;
110
extern char *rl_completer_word_break_characters;
111
extern const char *rl_completer_quote_characters;
112
extern rl_compentry_func_t *rl_completion_entry_function;
113
extern char *(*rl_completion_word_break_hook)(void);
114
extern rl_completion_func_t *rl_attempted_completion_function;
115
extern int rl_attempted_completion_over;
116
extern int rl_completion_type;
117
extern int rl_completion_query_items;
118
extern const char *rl_special_prefixes;
119
extern int rl_completion_append_character;
120
extern int rl_inhibit_completion;
121
extern Function *rl_pre_input_hook;
122
extern Function *rl_startup_hook;
123
extern char *rl_terminal_name;
124
extern int rl_already_prompted;
125
extern char *rl_prompt;
126
extern int rl_done;
127
/*
128
* The following is not implemented
129
*/
130
extern int rl_catch_signals;
131
extern int rl_catch_sigwinch;
132
extern KEYMAP_ENTRY_ARRAY emacs_standard_keymap,
133
emacs_meta_keymap,
134
emacs_ctlx_keymap;
135
extern int rl_filename_completion_desired;
136
extern int rl_ignore_completion_duplicates;
137
extern int (*rl_getc_function)(FILE *);
138
extern VFunction *rl_redisplay_function;
139
extern VFunction *rl_completion_display_matches_hook;
140
extern VFunction *rl_prep_term_function;
141
extern VFunction *rl_deprep_term_function;
142
extern rl_hook_func_t *rl_event_hook;
143
extern int readline_echoing_p;
144
extern int _rl_print_completions_horizontally;
145
146
/* supported functions */
147
char *readline(const char *);
148
int rl_initialize(void);
149
150
void using_history(void);
151
int add_history(const char *);
152
void clear_history(void);
153
int append_history(int, const char *);
154
void stifle_history(int);
155
int unstifle_history(void);
156
int history_is_stifled(void);
157
int where_history(void);
158
HIST_ENTRY *current_history(void);
159
HIST_ENTRY *history_get(int);
160
HIST_ENTRY *remove_history(int);
161
HIST_ENTRY *replace_history_entry(int, const char *, histdata_t);
162
int history_total_bytes(void);
163
int history_set_pos(int);
164
HIST_ENTRY *previous_history(void);
165
HIST_ENTRY *next_history(void);
166
HIST_ENTRY **history_list(void);
167
int history_search(const char *, int);
168
int history_search_prefix(const char *, int);
169
int history_search_pos(const char *, int, int);
170
int read_history(const char *);
171
int write_history(const char *);
172
int history_truncate_file (const char *, int);
173
int history_expand(char *, char **);
174
char **history_tokenize(const char *);
175
const char *get_history_event(const char *, int *, int);
176
char *history_arg_extract(int, int, const char *);
177
178
char *tilde_expand(char *);
179
char *filename_completion_function(const char *, int);
180
char *username_completion_function(const char *, int);
181
int rl_complete(int, int);
182
int rl_read_key(void);
183
char **completion_matches(/* const */ char *, rl_compentry_func_t *);
184
void rl_display_match_list(char **, int, int);
185
186
int rl_insert(int, int);
187
int rl_insert_text(const char *);
188
int rl_reset_terminal(const char *);
189
void rl_resize_terminal(void);
190
int rl_bind_key(int, rl_command_func_t *);
191
int rl_newline(int, int);
192
void rl_callback_read_char(void);
193
void rl_callback_handler_install(const char *, rl_vcpfunc_t *);
194
void rl_callback_handler_remove(void);
195
void rl_redisplay(void);
196
int rl_get_previous_history(int, int);
197
void rl_prep_terminal(int);
198
void rl_deprep_terminal(void);
199
int rl_read_init_file(const char *);
200
int rl_parse_and_bind(const char *);
201
int rl_variable_bind(const char *, const char *);
202
int rl_stuff_char(int);
203
int rl_add_defun(const char *, rl_command_func_t *, int);
204
HISTORY_STATE *history_get_history_state(void);
205
void rl_get_screen_size(int *, int *);
206
void rl_set_screen_size(int, int);
207
char *rl_filename_completion_function (const char *, int);
208
int _rl_abort_internal(void);
209
int _rl_qsort_string_compare(char **, char **);
210
char **rl_completion_matches(const char *, rl_compentry_func_t *);
211
void rl_forced_update_display(void);
212
int rl_set_prompt(const char *);
213
int rl_on_new_line(void);
214
void rl_reset_after_signal(void);
215
void rl_echo_signal_char(int);
216
217
/*
218
* The following are not implemented
219
*/
220
int rl_kill_text(int, int);
221
Keymap rl_get_keymap(void);
222
void rl_set_keymap(Keymap);
223
Keymap rl_make_bare_keymap(void);
224
int rl_generic_bind(int, const char *, const char *, Keymap);
225
int rl_bind_key_in_map(int, rl_command_func_t *, Keymap);
226
void rl_cleanup_after_signal(void);
227
void rl_free_line_state(void);
228
int rl_set_keyboard_input_timeout(int);
229
230
#ifdef __cplusplus
231
}
232
#endif
233
234
#endif /* _READLINE_H_ */
235
236