| | | |
Offset 1, 1020 lines modified | Offset 1, 1172 lines modified |
| 1 | .TH·EDITLINE·3·"August·15,·2021"·"" |
1 | .\"» $NetBSD:·editline.3,v·1.102·2024/02/04·18:47:27·andvar·Exp·$ | |
2 | .\" | |
3 | .\"·Copyright·(c)·1997-2014·The·NetBSD·Foundation,·Inc. | |
4 | .\"·All·rights·reserved. | |
5 | .\" | |
6 | .\"·This·file·was·contributed·to·The·NetBSD·Foundation·by·Luke·Mewburn. | |
7 | .\" | |
8 | .\"·Redistribution·and·use·in·source·and·binary·forms,·with·or·without | |
9 | .\"·modification,·are·permitted·provided·that·the·following·conditions | |
10 | .\"·are·met: | |
11 | .\"·1.·Redistributions·of·source·code·must·retain·the·above·copyright | |
12 | .\"····notice,·this·list·of·conditions·and·the·following·disclaimer. | |
13 | .\"·2.·Redistributions·in·binary·form·must·reproduce·the·above·copyright | |
14 | .\"····notice,·this·list·of·conditions·and·the·following·disclaimer·in·the | |
15 | .\"····documentation·and/or·other·materials·provided·with·the·distribution. | |
16 | .\" | |
17 | .\"·THIS·SOFTWARE·IS·PROVIDED·BY·THE·NETBSD·FOUNDATION,·INC.·AND·CONTRIBUTORS | |
18 | .\"·``AS·IS''·AND·ANY·EXPRESS·OR·IMPLIED·WARRANTIES,·INCLUDING,·BUT·NOT·LIMITED | |
19 | .\"·TO,·THE·IMPLIED·WARRANTIES·OF·MERCHANTABILITY·AND·FITNESS·FOR·A·PARTICULAR | |
20 | .\"·PURPOSE·ARE·DISCLAIMED.··IN·NO·EVENT·SHALL·THE·FOUNDATION·OR·CONTRIBUTORS | |
21 | .\"·BE·LIABLE·FOR·ANY·DIRECT,·INDIRECT,·INCIDENTAL,·SPECIAL,·EXEMPLARY,·OR | |
22 | .\"·CONSEQUENTIAL·DAMAGES·(INCLUDING,·BUT·NOT·LIMITED·TO,·PROCUREMENT·OF | |
23 | .\"·SUBSTITUTE·GOODS·OR·SERVICES;·LOSS·OF·USE,·DATA,·OR·PROFITS;·OR·BUSINESS | |
24 | .\"·INTERRUPTION)·HOWEVER·CAUSED·AND·ON·ANY·THEORY·OF·LIABILITY,·WHETHER·IN | |
25 | .\"·CONTRACT,·STRICT·LIABILITY,·OR·TORT·(INCLUDING·NEGLIGENCE·OR·OTHERWISE) | |
26 | .\"·ARISING·IN·ANY·WAY·OUT·OF·THE·USE·OF·THIS·SOFTWARE,·EVEN·IF·ADVISED·OF·THE | |
27 | .\"·POSSIBILITY·OF·SUCH·DAMAGE. | |
28 | .\" | |
29 | .Dd·August·15,·2021 | |
30 | .Dt·EDITLINE·3 | |
31 | .Os | |
32 | .Sh·NAME | 2 | .SH·NAME |
33 | .Nm·editline·, | |
34 | .Nm·el_init·, | |
35 | .Nm·el_init_fd·, | |
36 | .Nm·el_end·, | |
37 | .Nm·el_reset·, | |
38 | .Nm·el_gets·, | |
39 | .Nm·el_wgets·, | |
40 | .Nm·el_getc·, | |
41 | .Nm·el_wgetc·, | |
42 | .Nm·el_push·, | |
43 | .Nm·el_wpush·, | |
44 | .Nm·el_parse·, | |
45 | .Nm·el_wparse·, | |
46 | .Nm·el_set·, | |
47 | .Nm·el_wset·, | |
48 | .Nm·el_get·, | |
49 | .Nm·el_wget·, | |
50 | .Nm·el_source·, | |
51 | .Nm·el_resize·, | |
52 | .Nm·el_cursor·, | |
53 | .Nm·el_line·, | |
54 | .Nm·el_wline·, | |
55 | .Nm·el_insertstr·, | |
56 | .Nm·el_winsertstr·, | |
57 | .Nm·el_deletestr·, | |
58 | .Nm·el_wdeletestr·, | |
59 | .Nm·history_init·, | |
60 | .Nm·history_winit·, | |
61 | .Nm·history_end·, | |
62 | .Nm·history_wend·, | |
63 | .Nm·history·, | |
64 | .Nm·history_w·, | |
65 | .Nm·tok_init·, | |
66 | .Nm·tok_winit·, | |
67 | .Nm·tok_end·, | |
68 | .Nm·tok_wend·, | |
69 | .Nm·tok_reset·, | |
70 | .Nm·tok_wreset·, | |
71 | .Nm·tok_line·, | |
72 | .Nm·tok_wline·, | |
73 | .Nm·tok_str·, | |
74 | .Nm·tok_wstr | 3 | \fBeditline\fP, |
| 4 | \fBel_init\fP, |
| 5 | \fBel_init_fd\fP, |
| 6 | \fBel_end\fP, |
| 7 | \fBel_reset\fP, |
| 8 | \fBel_gets\fP, |
| 9 | \fBel_wgets\fP, |
| 10 | \fBel_getc\fP, |
| 11 | \fBel_wgetc\fP, |
| 12 | \fBel_push\fP, |
| 13 | \fBel_wpush\fP, |
| 14 | \fBel_parse\fP, |
| 15 | \fBel_wparse\fP, |
| 16 | \fBel_set\fP, |
| 17 | \fBel_wset\fP, |
| 18 | \fBel_get\fP, |
| 19 | \fBel_wget\fP, |
| 20 | \fBel_source\fP, |
| 21 | \fBel_resize\fP, |
| 22 | \fBel_cursor\fP, |
| 23 | \fBel_line\fP, |
| 24 | \fBel_wline\fP, |
| 25 | \fBel_insertstr\fP, |
| 26 | \fBel_winsertstr\fP, |
| 27 | \fBel_deletestr\fP, |
| 28 | \fBel_wdeletestr\fP, |
| 29 | \fBhistory_init\fP, |
| 30 | \fBhistory_winit\fP, |
| 31 | \fBhistory_end\fP, |
| 32 | \fBhistory_wend\fP, |
| 33 | \fBhistory\fP, |
| 34 | \fBhistory_w\fP, |
| 35 | \fBtok_init\fP, |
| 36 | \fBtok_winit\fP, |
| 37 | \fBtok_end\fP, |
| 38 | \fBtok_wend\fP, |
| 39 | \fBtok_reset\fP, |
| 40 | \fBtok_wreset\fP, |
| 41 | \fBtok_line\fP, |
| 42 | \fBtok_wline\fP, |
| 43 | \fBtok_str\fP, |
| 44 | \fBtok_wstr\fP |
75 | .Nd·line·editor,·history·and·tokenization·functions | 45 | \-·line·editor,·history·and·tokenization·functions |
76 | .Sh·LIBRARY | 46 | .SH·LIBRARY |
77 | .Lb·libedit | 47 | Command·Line·Editor·Library·(libedit,·-ledit) |
78 | .Sh·SYNOPSIS | 48 | .SH·SYNOPSIS |
79 | .In·histedit.h | |
80 | .Ft·EditLine·* | |
81 | .Fn·el_init·"const·char·*prog"·"FILE·*fin"·"FILE·*fout"·"FILE·*ferr" | |
82 | .Ft·EditLine·* | |
83 | .Fn·el_init_fd·"const·char·*prog"·"FILE·*fin"·"FILE·*fout"·"FILE·*ferr"·"int·fdin"·"int·fdout"·"int·fderr" | |
84 | .Ft·void | |
85 | .Fn·el_end·"EditLine·*e" | |
86 | .Ft·void | |
87 | .Fn·el_reset·"EditLine·*e" | |
88 | .Ft·const·char·* | |
89 | .Fn·el_gets·"EditLine·*e"·"int·*count" | 49 | .PP |
| 50 | \fB#include·<histedit.h>\fP |
| 51 | .PP |
| 52 | \fIEditLine·*\fP |
| 53 | .br |
| 54 | \fBel_init\fP(\fIconst·char·*prog\fP,·\fIFILE·*fin\fP,·\fIFILE·*fout\fP,·\fIFILE·*ferr\fP); |
| 55 | .PP |
| 56 | \fIEditLine·*\fP |
| 57 | .br |
| 58 | \fBel_init_fd\fP(\fIconst·char·*prog\fP,·\fIFILE·*fin\fP,·\fIFILE·*fout\fP,·\fIFILE·*ferr\fP,·\fIint·fdin\fP,·\fIint·fdout\fP,·\fIint·fderr\fP); |
| 59 | .PP |
| 60 | \fIvoid\fP |
| 61 | .br |
| 62 | \fBel_end\fP(\fIEditLine·*e\fP); |
| 63 | .PP |
| 64 | \fIvoid\fP |
| 65 | .br |
| 66 | \fBel_reset\fP(\fIEditLine·*e\fP); |
| 67 | .PP |
| 68 | \fIconst·char·*\fP |
| 69 | .br |
| 70 | \fBel_gets\fP(\fIEditLine·*e\fP,·\fIint·*count\fP); |
| 71 | .PP |
90 | .Ft·const·wchar_t·* | 72 | \fIconst·wchar_t·*\fP |
91 | .Fn·el_wgets·"EditLine·*e"·"int·*count" | |
92 | .Ft·int | |
93 | .Fn·el_getc·"EditLine·*e"·"char·*ch" | |
94 | .Ft·int | |
95 | .Fn·el_wgetc·"EditLine·*e"·"wchar_t·*wc" | |
96 | .Ft·void | |
97 | .Fn·el_push·"EditLine·*e"·"const·char·*mbs" | |
98 | .Ft·void | |
99 | .Fn·el_wpush·"EditLine·*e"·"const·wchar_t·*wcs" | |
100 | .Ft·int | |
101 | .Fn·el_parse·"EditLine·*e"·"int·argc"·"const·char·*argv[]" | |
102 | .Ft·int | |
103 | .Fn·el_wparse·"EditLine·*e"·"int·argc"·"const·wchar_t·*argv[]" | |
104 | .Ft·int | |
105 | .Fn·el_set·"EditLine·*e"·"int·op"·"..." | |
106 | .Ft·int | |
107 | .Fn·el_wset·"EditLine·*e"·"int·op"·"..." | |
108 | .Ft·int | |
109 | .Fn·el_get·"EditLine·*e"·"int·op"·"..." | |
110 | .Ft·int | |
111 | .Fn·el_wget·"EditLine·*e"·"int·op"·"..." | |
112 | .Ft·int | |
113 | .Fn·el_source·"EditLine·*e"·"const·char·*file" | |
114 | .Ft·void | |
115 | .Fn·el_resize·"EditLine·*e" | |
116 | .Ft·int | |
117 | .Fn·el_cursor·"EditLine·*e"·"int·count" | 73 | .br |
| 74 | \fBel_wgets\fP(\fIEditLine·*e\fP,·\fIint·*count\fP); |
| 75 | .PP |
| 76 | \fIint\fP |
| 77 | .br |
| 78 | \fBel_getc\fP(\fIEditLine·*e\fP,·\fIchar·*ch\fP); |
| 79 | .PP |
| 80 | \fIint\fP |
| 81 | .br |
| 82 | \fBel_wgetc\fP(\fIEditLine·*e\fP,·\fIwchar_t·*wc\fP); |
| 83 | .PP |
| 84 | \fIvoid\fP |
| 85 | .br |
| 86 | \fBel_push\fP(\fIEditLine·*e\fP,·\fIconst·char·*mbs\fP); |
| 87 | .PP |
| 88 | \fIvoid\fP |
| 89 | .br |
| 90 | \fBel_wpush\fP(\fIEditLine·*e\fP,·\fIconst·wchar_t·*wcs\fP); |
| 91 | .PP |
| 92 | \fIint\fP |
| 93 | .br |
| 94 | \fBel_parse\fP(\fIEditLine·*e\fP,·\fIint·argc\fP,·\fIconst·char·*argv[]\fP); |
| 95 | .PP |
| 96 | \fIint\fP |
| 97 | .br |
| 98 | \fBel_wparse\fP(\fIEditLine·*e\fP,·\fIint·argc\fP,·\fIconst·wchar_t·*argv[]\fP); |
| 99 | .PP |
| 100 | \fIint\fP |
| 101 | .br |
| 102 | \fBel_set\fP(\fIEditLine·*e\fP,·\fIint·op\fP,·\fI...\fP); |
| 103 | .PP |
| 104 | \fIint\fP |
| 105 | .br |
| 106 | \fBel_wset\fP(\fIEditLine·*e\fP,·\fIint·op\fP,·\fI...\fP); |
| 107 | .PP |
| 108 | \fIint\fP |
| 109 | .br |
| 110 | \fBel_get\fP(\fIEditLine·*e\fP,·\fIint·op\fP,·\fI...\fP); |
| 111 | .PP |
| 112 | \fIint\fP |
| 113 | .br |
| 114 | \fBel_wget\fP(\fIEditLine·*e\fP,·\fIint·op\fP,·\fI...\fP); |
| 115 | .PP |
| 116 | \fIint\fP |
| 117 | .br |
| 118 | \fBel_source\fP(\fIEditLine·*e\fP,·\fIconst·char·*file\fP); |
| 119 | .PP |
| 120 | \fIvoid\fP |
| 121 | .br |
| 122 | \fBel_resize\fP(\fIEditLine·*e\fP); |
| 123 | .PP |
| 124 | \fIint\fP |
| 125 | .br |
| 126 | \fBel_cursor\fP(\fIEditLine·*e\fP,·\fIint·count\fP); |
| 127 | .PP |
118 | .Ft·const·LineInfo·* | 128 | \fIconst·LineInfo·*\fP |
119 | .Fn·el_line·"EditLine·*e" | 129 | .br |
| 130 | \fBel_line\fP(\fIEditLine·*e\fP); |
| 131 | .PP |
120 | .Ft·const·LineInfoW·* | 132 | \fIconst·LineInfoW·*\fP |
121 | .Fn·el_wline·"EditLine·*e" | |
122 | .Ft·int | |
123 | .Fn·el_insertstr·"EditLine·*e"·"const·char·*str" | |
124 | .Ft·int | |
125 | .Fn·el_winsertstr·"EditLine·*e"·"const·wchar_t·*str" | |
126 | .Ft·void | |
127 | .Fn·el_deletestr·"EditLine·*e"·"int·count" | |
128 | .Ft·void | |
129 | .Fn·el_wdeletestr·"EditLine·*e"·"int·count" | |
130 | .Ft·History·* | |
131 | .Fn·history_init·void | |
132 | .Ft·HistoryW·* | |
133 | .Fn·history_winit·void | |
134 | .Ft·void | |
135 | .Fn·history_end·"History·*h" | |
136 | .Ft·void | |
137 | .Fn·history_wend·"HistoryW·*h" | |
138 | .Ft·int | |
139 | .Fn·history·"History·*h"·"HistEvent·*ev"·"int·op"·"..." | |
140 | .Ft·int | |
141 | .Fn·history_w·"HistoryW·*h"·"HistEventW·*ev"·"int·op"·"..." | |
142 | .Ft·Tokenizer·* | |
143 | .Fn·tok_init·"const·char·*IFS" | |
144 | .Ft·TokenizerW·* | |
145 | .Fn·tok_winit·"const·wchar_t·*IFS" | |
146 | .Ft·void | |
147 | .Fn·tok_end·"Tokenizer·*t" | |
148 | .Ft·void | |
149 | .Fn·tok_wend·"TokenizerW·*t" | |
150 | .Ft·void | |
151 | .Fn·tok_reset·"Tokenizer·*t" | |
152 | .Ft·void | |
153 | .Fn·tok_wreset·"TokenizerW·*t" | |
154 | .Ft·int | |
155 | .Fn·tok_line·"Tokenizer·*t"·"const·LineInfo·*li"·"int·*argc"·"const·char·**argv[]"·"int·*cursorc"·"int·*cursoro" | |
156 | .Ft·int | 133 | .br |
| 134 | \fBel_wline\fP(\fIEditLine·*e\fP); |
| 135 | .PP |
| 136 | \fIint\fP |
| 137 | .br |
| 138 | \fBel_insertstr\fP(\fIEditLine·*e\fP,·\fIconst·char·*str\fP); |
| 139 | .PP |
| 140 | \fIint\fP |
| 141 | .br |
| 142 | \fBel_winsertstr\fP(\fIEditLine·*e\fP,·\fIconst·wchar_t·*str\fP); |
| 143 | .PP |
| 144 | \fIvoid\fP |
| 145 | .br |
| 146 | \fBel_deletestr\fP(\fIEditLine·*e\fP,·\fIint·count\fP); |
| 147 | .PP |
| 148 | \fIvoid\fP |
| 149 | .br |
| 150 | \fBel_wdeletestr\fP(\fIEditLine·*e\fP,·\fIint·count\fP); |
| 151 | .PP |
| 152 | \fIHistory·*\fP |
| 153 | .br |
| 154 | \fBhistory_init\fP(void·); |
| 155 | .PP |
| 156 | \fIHistoryW·*\fP |
| 157 | .br |
| 158 | \fBhistory_winit\fP(void·); |
| 159 | .PP |
| 160 | \fIvoid\fP |
| 161 | .br |
| 162 | \fBhistory_end\fP(\fIHistory·*h\fP); |
| 163 | .PP |
| 164 | \fIvoid\fP |
| 165 | .br |
| 166 | \fBhistory_wend\fP(\fIHistoryW·*h\fP); |
| 167 | .PP |
| 168 | \fIint\fP |
| 169 | .br |
| 170 | \fBhistory\fP(\fIHistory·*h\fP,·\fIHistEvent·*ev\fP,·\fIint·op\fP,·\fI...\fP); |
| 171 | .PP |
| 172 | \fIint\fP |
| 173 | .br |
| 174 | \fBhistory_w\fP(\fIHistoryW·*h\fP,·\fIHistEventW·*ev\fP,·\fIint·op\fP,·\fI...\fP); |
| 175 | .PP |
| 176 | \fITokenizer·*\fP |
| 177 | .br |
| 178 | \fBtok_init\fP(\fIconst·char·*IFS\fP); |
| 179 | .PP |
| 180 | \fITokenizerW·*\fP |
| 181 | .br |
| 182 | \fBtok_winit\fP(\fIconst·wchar_t·*IFS\fP); |
| 183 | .PP |
| 184 | \fIvoid\fP |
| 185 | .br |
| 186 | \fBtok_end\fP(\fITokenizer·*t\fP); |
| 187 | .PP |
| 188 | \fIvoid\fP |
| 189 | .br |
| 190 | \fBtok_wend\fP(\fITokenizerW·*t\fP); |
| 191 | .PP |
| 192 | \fIvoid\fP |
| 193 | .br |
| 194 | \fBtok_reset\fP(\fITokenizer·*t\fP); |
| 195 | .PP |
| 196 | \fIvoid\fP |
| 197 | .br |
| 198 | \fBtok_wreset\fP(\fITokenizerW·*t\fP); |
| 199 | .PP |
| 200 | \fIint\fP |
| 201 | .br |
| 202 | \fBtok_line\fP(\fITokenizer·*t\fP,·\fIconst·LineInfo·*li\fP,·\fIint·*argc\fP,·\fIconst·char·**argv[]\fP,·\fIint·*cursorc\fP,·\fIint·*cursoro\fP); |
| 203 | .PP |
| 204 | \fIint\fP |
| 205 | .br |
157 | .Fn·tok_wline·"TokenizerW·*t"·"const·LineInfoW·*li"·"int·*argc"·"const·wchar_t·**argv[]"·"int·*cursorc"·"int·*cursoro" | 206 | \fBtok_wline\fP(\fITokenizerW·*t\fP,·\fIconst·LineInfoW·*li\fP,·\fIint·*argc\fP,·\fIconst·wchar_t·**argv[]\fP,·\fIint·*cursorc\fP,·\fIint·*cursoro\fP); |
158 | .Ft·int | |
159 | .Fn·tok_str·"Tokenizer·*t"·"const·char·*str"·"int·*argc"·"const·char·**argv[]" | |
160 | .Ft·int | |
161 | .Fn·tok_wstr·"TokenizerW·*t"·"const·wchar_t·*str"·"int·*argc"·"const·wchar_t·**argv[]" | 207 | .PP |
| 208 | \fIint\fP |
| 209 | .br |
| 210 | \fBtok_str\fP(\fITokenizer·*t\fP,·\fIconst·char·*str\fP,·\fIint·*argc\fP,·\fIconst·char·**argv[]\fP); |
| 211 | .PP |
| 212 | \fIint\fP |
| 213 | .br |
| 214 | \fBtok_wstr\fP(\fITokenizerW·*t\fP,·\fIconst·wchar_t·*str\fP,·\fIint·*argc\fP,·\fIconst·wchar_t·**argv[]\fP); |
162 | .Sh·DESCRIPTION | 215 | .SH·DESCRIPTION |
163 | The | 216 | The |
164 | .Nm | 217 | \fBeditline\fP |
165 | library·provides·generic·line·editing,·history·and·tokenization·functions, | 218 | library·provides·generic·line·editing,·history·and·tokenization·functions, |
166 | similar·to·those·found·in | 219 | similar·to·those·found·in |
167 | .Xr·sh·1·. | |
168 | .Pp | 220 | \fBsh\fP(1). |
| |
169 | These·functions·are·available·in·the | 221 | These·functions·are·available·in·the |
170 | .Nm·libedit | 222 | \fBlibedit\fP |
171 | library·(which·needs·the | 223 | library·(which·needs·the |
172 | .Nm·libtermcap | 224 | \fBlibtermcap\fP |
173 | library). | 225 | library). |
174 | Programs·should·be·linked·with | 226 | Programs·should·be·linked·with |
175 | .Fl·ledit·ltermcap·. | |
176 | .Pp | 227 | \fB\-ledit\fP·ltermcap·. |
| |
177 | The | 228 | The |
178 | .Nm | 229 | \fBeditline\fP |
179 | library·respects·the | 230 | library·respects·the |
180 | .Ev·LC_CTYPE | 231 | .IR·LC_CTYPE |
181 | locale·set·by·the·application·program·and·never·uses | 232 | locale·set·by·the·application·program·and·never·uses |
182 | .Xr·setlocale·3 | 233 | \fBsetlocale\fP(3) |
183 | to·change·the·locale. | 234 | to·change·the·locale. |
184 | .Sh·LINE·EDITING·FUNCTIONS | 235 | .SH·LINE·EDITING·FUNCTIONS |
185 | The·line·editing·functions·use·a·common·data·structure, | 236 | The·line·editing·functions·use·a·common·data·structure, |
186 | .Fa·EditLine·, | 237 | \fIEditLine\fP, |
187 | which·is·created·by | 238 | which·is·created·by |
188 | .Fn·el_init | 239 | \fBel_init\fP() |
189 | or | 240 | or |
190 | .Fn·el_init_fd | 241 | \fBel_init_fd\fP() |
191 | and·freed·by | 242 | and·freed·by |
192 | .Fn·el_end·. | |
193 | .Pp | 243 | \fBel_end\fP(). |
| |
194 | The·wide-character·functions·behave·the·same·way·as·their·narrow | 244 | The·wide-character·functions·behave·the·same·way·as·their·narrow |
195 | counterparts. | 245 | counterparts. |
196 | .Pp | |
197 | The·following·functions·are·available: | 246 | The·following·functions·are·available: |
198 | .Bl·-tag·-width·4n | |
199 | .It·Fn·el_init | 247 | .TP |
| 248 | \fBel_init\fP() |
200 | Initialize·the·line·editor,·and·return·a·data·structure | 249 | Initialize·the·line·editor,·and·return·a·data·structure |
201 | to·be·used·by·all·other·line·editing·functions,·or | 250 | to·be·used·by·all·other·line·editing·functions,·or |
202 | .Dv·NULL | 251 | NULL |
203 | on·failure. | 252 | on·failure. |
204 | .Fa·prog | 253 | \fIprog·\fP |
205 | is·the·name·of·the·invoking·program,·used·when·reading·the | 254 | is·the·name·of·the·invoking·program,·used·when·reading·the |
206 | .Xr·editrc·5 | 255 | \fBeditrc\fP(5) |
207 | file·to·determine·which·settings·to·use. | 256 | file·to·determine·which·settings·to·use. |
208 | .Fa·fin·, | |
209 | .Fa·fout | 257 | \fIfin\fP, |
| 258 | \fIfout·\fP |
210 | and | 259 | and |
211 | .Fa·ferr | 260 | \fIferr·\fP |
212 | are·the·input,·output,·and·error·streams·(respectively)·to·use. | 261 | are·the·input,·output,·and·error·streams·(respectively)·to·use. |
213 | In·this·documentation,·references·to | 262 | In·this·documentation,·references·to |
214 | .Dq·the·tty | 263 | ``the·tty'' |
215 | are·actually·to·this·input/output·stream·combination. | 264 | are·actually·to·this·input/output·stream·combination. |
216 | .It·Fn·el_init_fd | 265 | .TP |
| 266 | \fBel_init_fd\fP() |
217 | Like | 267 | Like |
218 | .Fn·el_init | 268 | \fBel_init\fP() |
219 | but·allows·specifying·file·descriptors·for·the | 269 | but·allows·specifying·file·descriptors·for·the |
220 | .Xr·stdio·3 | 270 | \fBstdio\fP(3) |
221 | corresponding·streams,·in·case·those·were·created·with | 271 | corresponding·streams,·in·case·those·were·created·with |
222 | .Xr·funopen·3·. | |
223 | .It·Fn·el_end | 272 | \fBfunopen\fP(3). |
| 273 | .TP |
| 274 | \fBel_end\fP() |
224 | Clean·up·and·finish·with | 275 | Clean·up·and·finish·with |
225 | .Fa·e·, | 276 | \fIe\fP, |
226 | assumed·to·have·been·created·with | 277 | assumed·to·have·been·created·with |
227 | .Fn·el_init | 278 | \fBel_init\fP() |
228 | or | 279 | or |
229 | .Fn·el_init_fd·. | |
230 | .It·Fn·el_reset | 280 | \fBel_init_fd\fP(). |
| 281 | .TP |
| 282 | \fBel_reset\fP() |
231 | Reset·the·tty·and·the·parser. | 283 | Reset·the·tty·and·the·parser. |
232 | This·should·be·called·after·an·error·which·may·have·upset·the·tty's | 284 | This·should·be·called·after·an·error·which·may·have·upset·the·tty's |
233 | state. | 285 | state. |
234 | .It·Fn·el_gets | 286 | .TP |
| 287 | \fBel_gets\fP() |
235 | Read·a·line·from·the·tty. | 288 | Read·a·line·from·the·tty. |
236 | .Fa·count | 289 | \fIcount·\fP |
237 | is·modified·to·contain·the·number·of·characters·read. | 290 | is·modified·to·contain·the·number·of·characters·read. |
238 | Returns·the·line·read·if·successful,·or | 291 | Returns·the·line·read·if·successful,·or |
239 | .Dv·NULL | 292 | NULL |
240 | if·no·characters·were·read·or·if·an·error·occurred. | 293 | if·no·characters·were·read·or·if·an·error·occurred. |
241 | If·an·error·occurred, | 294 | If·an·error·occurred, |
242 | .Fa·count | 295 | \fIcount·\fP |
243 | is·set·to·\-1·and | 296 | is·set·to·\-1·and |
244 | .Dv·errno | 297 | errno |
245 | contains·the·error·code·that·caused·it. | 298 | contains·the·error·code·that·caused·it. |
246 | The·return·value·may·not·remain·valid·across·calls·to | 299 | The·return·value·may·not·remain·valid·across·calls·to |
247 | .Fn·el_gets | 300 | \fBel_gets\fP() |
248 | and·must·be·copied·if·the·data·is·to·be·retained. | 301 | and·must·be·copied·if·the·data·is·to·be·retained. |
249 | .It·Fn·el_wgetc | 302 | .TP |
| 303 | \fBel_wgetc\fP() |
250 | Read·a·wide·character·from·the·tty,·respecting·the·current·locale, | 304 | Read·a·wide·character·from·the·tty,·respecting·the·current·locale, |
251 | or·from·the·input·queue·described·in | 305 | or·from·the·input·queue·described·in |
252 | .Xr·editline·7 | 306 | \fBeditline\fP(7) |
253 | if·that·is·not·empty,·and·store·it·in | 307 | if·that·is·not·empty,·and·store·it·in |
254 | .Fa·wc·. | 308 | \fIwc\fP. |
255 | If·an·invalid·or·incomplete·character·is·found,·it·is·discarded, | 309 | If·an·invalid·or·incomplete·character·is·found,·it·is·discarded, |
256 | .Va·errno | 310 | \fIerrno\fP |
257 | is·set·to | 311 | is·set·to |
258 | .Er·EILSEQ·, | 312 | Er·EILSEQ·, |
259 | and·the·next·character·is·read·and·stored·in | 313 | and·the·next·character·is·read·and·stored·in |
260 | .Fa·wc·. | 314 | \fIwc\fP. |
261 | Returns·1·if·a·valid·character·was·read,·0·on·end·of·file,·or·\-1·on | 315 | Returns·1·if·a·valid·character·was·read,·0·on·end·of·file,·or·\-1·on |
262 | .Xr·read·2 | 316 | \fBread\fP(2) |
263 | failure. | 317 | failure. |
264 | In·the·latter·case, | 318 | In·the·latter·case, |
265 | .Va·errno | 319 | \fIerrno\fP |
266 | is·set·to·indicate·the·error. | 320 | is·set·to·indicate·the·error. |
267 | .It·Fn·el_getc | 321 | .TP |
| 322 | \fBel_getc\fP() |
268 | Read·a·wide·character·as·described·for | 323 | Read·a·wide·character·as·described·for |
269 | .Fn·el_wgetc | 324 | \fBel_wgetc\fP() |
270 | and·return·0·on·end·of·file·or·\-1·on·failure. | 325 | and·return·0·on·end·of·file·or·\-1·on·failure. |
271 | If·the·wide·character·can·be·represented·as·a·single-byte·character, | 326 | If·the·wide·character·can·be·represented·as·a·single-byte·character, |
272 | convert·it·with | 327 | convert·it·with |
273 | .Xr·wctob·3·, | 328 | \fBwctob\fP(3), |
274 | store·the·result·in | 329 | store·the·result·in |
275 | .Fa·ch·, | 330 | \fIch\fP, |
276 | and·return·1;·otherwise,·set | 331 | and·return·1;·otherwise,·set |
277 | .Va·errno | 332 | \fIerrno\fP |
278 | to | 333 | to |
279 | .Er·ERANGE | 334 | Er·ERANGE |
280 | and·return·\-1. | 335 | and·return·\-1. |
281 | In·the·C·or·POSIX·locale,·this·simply·reads·a·byte,·but·for·any·other | 336 | In·the·C·or·POSIX·locale,·this·simply·reads·a·byte,·but·for·any·other |
282 | locale,·including·UTF-8,·this·is·rarely·useful. | 337 | locale,·including·UTF-8,·this·is·rarely·useful. |
283 | .It·Fn·el_wpush | 338 | .TP |
| 339 | \fBel_wpush\fP() |
284 | Push·the·wide·character·string | 340 | Push·the·wide·character·string |
285 | .Fa·wcs | 341 | \fIwcs·\fP |
286 | back·onto·the·input·queue·described·in | 342 | back·onto·the·input·queue·described·in |
287 | .Xr·editline·7·. | 343 | \fBeditline\fP(7). |
288 | If·the·queue·overflows,·for·example·due·to·a·recursive·macro, | 344 | If·the·queue·overflows,·for·example·due·to·a·recursive·macro, |
289 | or·if·an·error·occurs,·for·example·because | 345 | or·if·an·error·occurs,·for·example·because |
290 | .Fa·wcs | 346 | \fIwcs·\fP |
291 | is | 347 | is |
292 | .Dv·NULL | 348 | NULL |
293 | or·memory·allocation·fails,·the·function·beeps·at·the·user, | 349 | or·memory·allocation·fails,·the·function·beeps·at·the·user, |
294 | but·does·not·report·the·problem·to·the·caller. | 350 | but·does·not·report·the·problem·to·the·caller. |
295 | .It·Fn·el_push | 351 | .TP |
| 352 | \fBel_push\fP() |
296 | Use·the·current·locale·to·convert·the·multibyte·string | 353 | Use·the·current·locale·to·convert·the·multibyte·string |
297 | .Fa·mbs | 354 | \fImbs·\fP |
298 | to·a·wide·character·string,·and·pass·the·result·to | 355 | to·a·wide·character·string,·and·pass·the·result·to |
299 | .Fn·el_wpush·. | |
300 | .It·Fn·el_parse | 356 | \fBel_wpush\fP(). |
| 357 | .TP |
| 358 | \fBel_parse\fP() |
301 | Parses·the | 359 | Parses·the |
302 | .Fa·argv | 360 | \fIargv·\fP |
303 | array·(which·is | 361 | array·(which·is |
304 | .Fa·argc | 362 | \fIargc·\fP |
305 | elements·in·size) | 363 | elements·in·size) |
306 | to·execute·builtin | 364 | to·execute·builtin |
307 | .Nm | 365 | \fBeditline\fP |
308 | commands. | 366 | commands. |
309 | If·the·command·is·prefixed·with | 367 | If·the·command·is·prefixed·with |
310 | .Dq·prog·: | 368 | ``prog·:'' |
311 | then | 369 | then |
312 | .Fn·el_parse | 370 | \fBel_parse\fP() |
313 | will·only·execute·the·command·if | 371 | will·only·execute·the·command·if |
314 | .Dq·prog | 372 | ``prog'' |
315 | matches·the | 373 | matches·the |
316 | .Fa·prog | 374 | \fIprog·\fP |
317 | argument·supplied·to | 375 | argument·supplied·to |
318 | .Fn·el_init·. | 376 | \fBel_init\fP(). |
319 | The·return·value·is | 377 | The·return·value·is |
320 | \-1·if·the·command·is·unknown, | 378 | \-1·if·the·command·is·unknown, |
321 | 0·if·there·was·no·error·or | 379 | 0·if·there·was·no·error·or |
322 | .Dq·prog | 380 | ``prog'' |
323 | didn't·match,·or | 381 | didn't·match,·or |
324 | 1·if·the·command·returned·an·error. | 382 | 1·if·the·command·returned·an·error. |
325 | Refer·to | 383 | Refer·to |
326 | .Xr·editrc·5 | 384 | \fBeditrc\fP(5) |
327 | for·more·information. | 385 | for·more·information. |
328 | .It·Fn·el_set | 386 | .TP |
| 387 | \fBel_set\fP() |
329 | Set | 388 | Set |
330 | .Nm | 389 | \fBeditline\fP |
331 | parameters. | 390 | parameters. |
332 | .Fa·op | 391 | \fIop·\fP |
333 | determines·which·parameter·to·set,·and·each·operation·has·its | 392 | determines·which·parameter·to·set,·and·each·operation·has·its |
334 | own·parameter·list. | 393 | own·parameter·list. |
335 | Returns·0·on·success,·\-1·on·failure. | 394 | Returns·0·on·success,·\-1·on·failure. |
336 | .Pp | |
337 | The·following·values·for | 395 | The·following·values·for |
338 | .Fa·op | 396 | \fIop·\fP |
339 | are·supported,·along·with·the·required·argument·list: | 397 | are·supported,·along·with·the·required·argument·list: |
340 | .Bl·-tag·-width·4n | 398 | .RS |
| 399 | .TP |
341 | .It·Dv·EL_PROMPT·,·Fa·"char·*(*f)(EditLine·*)" | 400 | EL_PROMPT·,·\fIchar·*(*f)(EditLine·*)\fP |
342 | Define·prompt·printing·function·as | 401 | Define·prompt·printing·function·as |
343 | .Fa·f·, | 402 | \fIf\fP, |
344 | which·is·to·return·a·string·that·contains·the·prompt. | 403 | which·is·to·return·a·string·that·contains·the·prompt. |
| 404 | .TP |
345 | .It·Dv·EL_PROMPT_ESC·,·Fa·"char·*(*f)(EditLine·*)"·,·Fa·"char·c" | 405 | EL_PROMPT_ESC·,·\fIchar·*(*f)(EditLine·*),·Fa·char·c\fP |
346 | Same·as | 406 | Same·as |
347 | .Dv·EL_PROMPT·, | 407 | EL_PROMPT·, |
348 | but·the | 408 | but·the |
349 | .Fa·c | 409 | \fIc·\fP |
350 | argument·indicates·the·start/stop·literal·prompt·character. | 410 | argument·indicates·the·start/stop·literal·prompt·character. |
351 | .Pp | |
352 | If·a·start/stop·literal·character·is·found·in·the·prompt,·the | 411 | If·a·start/stop·literal·character·is·found·in·the·prompt,·the |
353 | character·itself | 412 | character·itself |
354 | is·not·printed,·but·characters·after·it·are·printed·directly·to·the | 413 | is·not·printed,·but·characters·after·it·are·printed·directly·to·the |
355 | terminal·without·affecting·the·state·of·the·current·line. | 414 | terminal·without·affecting·the·state·of·the·current·line. |
356 | A·subsequent·second·start/stop·literal·character·ends·this·behavior. | 415 | A·subsequent·second·start/stop·literal·character·ends·this·behavior. |
357 | This·is·typically·used·to·embed·literal·escape·sequences·that·change·the | 416 | This·is·typically·used·to·embed·literal·escape·sequences·that·change·the |
358 | color/style·of·the·terminal·in·the·prompt. | 417 | color/style·of·the·terminal·in·the·prompt. |
359 | Note·that·the·literal·escape·character·cannot·be·the·last·character·in·the | 418 | Note·that·the·literal·escape·character·cannot·be·the·last·character·in·the |
360 | prompt,·as·the·escape·sequence·is·attached·to·the·next·character·in·the·prompt. | 419 | prompt,·as·the·escape·sequence·is·attached·to·the·next·character·in·the·prompt. |
361 | .Dv·0 | 420 | 0 |
362 | unsets·it. | 421 | unsets·it. |
363 | .It·Dv·EL_REFRESH | 422 | .TP |
| 423 | EL_REFRESH |
364 | Re-display·the·current·line·on·the·next·terminal·line. | 424 | Re-display·the·current·line·on·the·next·terminal·line. |
| 425 | .TP |
365 | .It·Dv·EL_RPROMPT·,·Fa·"char·*(*f)(EditLine·*)" | 426 | EL_RPROMPT·,·\fIchar·*(*f)(EditLine·*)\fP |
366 | Define·right·side·prompt·printing·function·as | 427 | Define·right·side·prompt·printing·function·as |
367 | .Fa·f·, | 428 | \fIf\fP, |
368 | which·is·to·return·a·string·that·contains·the·prompt. | 429 | which·is·to·return·a·string·that·contains·the·prompt. |
| 430 | .TP |
369 | .It·Dv·EL_RPROMPT_ESC·,·Fa·"char·*(*f)(EditLine·*)"·,·Fa·"char·c" | 431 | EL_RPROMPT_ESC·,·\fIchar·*(*f)(EditLine·*),·Fa·char·c\fP |
370 | Define·the·right·prompt·printing·function·but·with·a·literal·escape·character. | 432 | Define·the·right·prompt·printing·function·but·with·a·literal·escape·character. |
| 433 | .TP |
371 | .It·Dv·EL_TERMINAL·,·Fa·"const·char·*type" | 434 | EL_TERMINAL·,·\fIconst·char·*type\fP |
372 | Define·terminal·type·of·the·tty·to·be | 435 | Define·terminal·type·of·the·tty·to·be |
373 | .Fa·type·, | 436 | \fItype\fP, |
374 | or·to | 437 | or·to |
375 | .Ev·TERM | 438 | .IR·TERM |
376 | if | 439 | if |
377 | .Fa·type | 440 | \fItype·\fP |
378 | is | 441 | is |
379 | .Dv·NULL·. | 442 | NULL·. |
| 443 | .TP |
380 | .It·Dv·EL_EDITOR·,·Fa·"const·char·*mode" | 444 | EL_EDITOR·,·\fIconst·char·*mode\fP |
381 | Set·editing·mode·to | 445 | Set·editing·mode·to |
382 | .Fa·mode·, | 446 | \fImode\fP, |
383 | which·must·be·one·of | 447 | which·must·be·one·of |
384 | .Dq·emacs | 448 | ``emacs'' |
385 | or | 449 | or |
386 | .Dq·vi·. | |
387 | .It·Dv·EL_SIGNAL·,·Fa·"int·flag" | 450 | ``vi''. |
| 451 | .TP |
| 452 | EL_SIGNAL·,·\fIint·flag\fP |
388 | If | 453 | If |
389 | .Fa·flag | 454 | \fIflag·\fP |
390 | is·non-zero, | 455 | is·non-zero, |
391 | .Nm | 456 | \fBeditline\fP |
392 | will·install·its·own·signal·handler·for·the·following·signals·when | 457 | will·install·its·own·signal·handler·for·the·following·signals·when |
393 | reading·command·input: | 458 | reading·command·input: |
394 | .Dv·SIGCONT·, | 459 | SIGCONT·, |
395 | .Dv·SIGHUP·, | 460 | SIGHUP·, |
396 | .Dv·SIGINT·, | 461 | SIGINT·, |
397 | .Dv·SIGQUIT·, | 462 | SIGQUIT·, |
398 | .Dv·SIGSTOP·, | 463 | SIGSTOP·, |
399 | .Dv·SIGTERM·, | 464 | SIGTERM·, |
400 | .Dv·SIGTSTP·, | 465 | SIGTSTP·, |
401 | and | 466 | and |
402 | .Dv·SIGWINCH·. | 467 | SIGWINCH·. |
403 | Otherwise,·the·current·signal·handlers·will·be·used. | 468 | Otherwise,·the·current·signal·handlers·will·be·used. |
| 469 | .TP |
404 | .It·Dv·EL_BIND·,·Fa·"const·char·*"·,·Fa·"..."·,·Dv·NULL | 470 | EL_BIND·,·\fIconst·char·*,·Fa·...,·Dv·NULL·\fP |
405 | Perform·the | 471 | Perform·the |
406 | .Ic·bind | 472 | \fBbind\fP |
407 | builtin·command. | 473 | builtin·command. |
408 | Refer·to | 474 | Refer·to |
409 | .Xr·editrc·5 | 475 | \fBeditrc\fP(5) |
410 | for·more·information. | 476 | for·more·information. |
| 477 | .TP |
411 | .It·Dv·EL_ECHOTC·,·Fa·"const·char·*"·,·Fa·"..."·,·Dv·NULL | 478 | EL_ECHOTC·,·\fIconst·char·*,·Fa·...,·Dv·NULL·\fP |
412 | Perform·the | 479 | Perform·the |
413 | .Ic·echotc | 480 | \fBechotc\fP |
414 | builtin·command. | 481 | builtin·command. |
415 | Refer·to | 482 | Refer·to |
416 | .Xr·editrc·5 | 483 | \fBeditrc\fP(5) |
417 | for·more·information. | 484 | for·more·information. |
| 485 | .TP |
418 | .It·Dv·EL_SETTC·,·Fa·"const·char·*"·,·Fa·"..."·,·Dv·NULL | 486 | EL_SETTC·,·\fIconst·char·*,·Fa·...,·Dv·NULL·\fP |
419 | Perform·the | 487 | Perform·the |
420 | .Ic·settc | 488 | \fBsettc\fP |
421 | builtin·command. | 489 | builtin·command. |
422 | Refer·to | 490 | Refer·to |
423 | .Xr·editrc·5 | 491 | \fBeditrc\fP(5) |
424 | for·more·information. | 492 | for·more·information. |
| 493 | .TP |
425 | .It·Dv·EL_SETTY·,·Fa·"const·char·*"·,·Fa·"..."·,·Dv·NULL | 494 | EL_SETTY·,·\fIconst·char·*,·Fa·...,·Dv·NULL·\fP |
426 | Perform·the | 495 | Perform·the |
427 | .Ic·setty | 496 | \fBsetty\fP |
428 | builtin·command. | 497 | builtin·command. |
429 | Refer·to | 498 | Refer·to |
430 | .Xr·editrc·5 | 499 | \fBeditrc\fP(5) |
431 | for·more·information. | 500 | for·more·information. |
| 501 | .TP |
432 | .It·Dv·EL_TELLTC·,·Fa·"const·char·*"·,·Fa·"..."·,·Dv·NULL | 502 | EL_TELLTC·,·\fIconst·char·*,·Fa·...,·Dv·NULL·\fP |
433 | Perform·the | 503 | Perform·the |
434 | .Ic·telltc | 504 | \fBtelltc\fP |
435 | builtin·command. | 505 | builtin·command. |
436 | Refer·to | 506 | Refer·to |
437 | .Xr·editrc·5 | 507 | \fBeditrc\fP(5) |
438 | for·more·information. | 508 | for·more·information. |
| 509 | .TP |
439 | .It·Dv·EL_ADDFN·,·Fa·"const·char·*name"·,·Fa·"const·char·*help"·,·\ | 510 | EL_ADDFN·,·\fIconst·char·*name,·Fa·const·char·*help,·\·\fP |
440 | Fa·"unsigned·char·(*func)(EditLine·*e,·int·ch)" | 511 | Fa·"unsigned·char·(*func)(EditLine·*e,·int·ch)" |
441 | Add·a·user·defined·function, | 512 | Add·a·user·defined·function, |
442 | .Fn·func·, | 513 | \fBfunc\fP(), |
443 | referred·to·as | 514 | referred·to·as |
444 | .Fa·name | 515 | \fIname·\fP |
445 | which·is·invoked·when·a·key·which·is·bound·to | 516 | which·is·invoked·when·a·key·which·is·bound·to |
446 | .Fa·name | 517 | \fIname·\fP |
447 | is·entered. | 518 | is·entered. |
448 | .Fa·help | 519 | \fIhelp·\fP |
449 | is·a·description·of | 520 | is·a·description·of |
450 | .Fa·name·. | 521 | \fIname\fP. |
451 | At·invocation·time, | 522 | At·invocation·time, |
452 | .Fa·ch | 523 | \fIch·\fP |
453 | is·the·key·which·caused·the·invocation. | 524 | is·the·key·which·caused·the·invocation. |
454 | The·return·value·of | 525 | The·return·value·of |
455 | .Fn·func | 526 | \fBfunc\fP() |
456 | should·be·one·of: | 527 | should·be·one·of: |
457 | .Bl·-tag·-width·"CC_REDISPLAY" | |
458 | .It·Dv·CC_NORM | 528 | .RS |
| 529 | .TP |
| 530 | CC_NORM |
459 | Add·a·normal·character. | 531 | Add·a·normal·character. |
460 | .It·Dv·CC_NEWLINE | 532 | .TP |
| 533 | CC_NEWLINE |
461 | End·of·line·was·entered. | 534 | End·of·line·was·entered. |
462 | .It·Dv·CC_EOF | 535 | .TP |
| 536 | CC_EOF |
463 | EOF·was·entered. | 537 | EOF·was·entered. |
464 | .It·Dv·CC_ARGHACK | 538 | .TP |
| 539 | CC_ARGHACK |
465 | Expecting·further·command·input·as·arguments,·do·nothing·visually. | 540 | Expecting·further·command·input·as·arguments,·do·nothing·visually. |
466 | .It·Dv·CC_REFRESH | 541 | .TP |
| 542 | CC_REFRESH |
467 | Refresh·display. | 543 | Refresh·display. |
| 544 | .TP |
468 | .It·Dv·CC_REFRESH_BEEP | 545 | CC_REFRESH_BEEP |
469 | Refresh·display,·and·beep. | 546 | Refresh·display,·and·beep. |
470 | .It·Dv·CC_CURSOR | 547 | .TP |
| 548 | CC_CURSOR |
471 | Cursor·moved,·so·update·and·perform | 549 | Cursor·moved,·so·update·and·perform |
472 | .Dv·CC_REFRESH·. | 550 | CC_REFRESH·. |
| 551 | .TP |
473 | .It·Dv·CC_REDISPLAY | 552 | CC_REDISPLAY |
474 | Redisplay·entire·input·line. | 553 | Redisplay·entire·input·line. |
475 | This·is·useful·if·a·key·binding·outputs·extra·information. | 554 | This·is·useful·if·a·key·binding·outputs·extra·information. |
476 | .It·Dv·CC_ERROR | 555 | .TP |
| 556 | CC_ERROR |
477 | An·error·occurred. | 557 | An·error·occurred. |
478 | Beep,·and·flush·tty. | 558 | Beep,·and·flush·tty. |
479 | .It·Dv·CC_FATAL | 559 | .TP |
| 560 | CC_FATAL |
480 | Fatal·error,·reset·tty·to·known·state. | 561 | Fatal·error,·reset·tty·to·known·state. |
481 | .El | 562 | .RE |
| 563 | .TP |
482 | .It·Dv·EL_HIST·,·Fa·"History·*(*func)(History·*,·int·op,·...)"·,·\ | 564 | EL_HIST·,·\fIHistory·*(*func)(History·*,·int·op,·...),·\·\fP |
483 | Fa·"const·char·*ptr" | 565 | Fa·"const·char·*ptr" |
484 | Defines·which·history·function·to·use,·which·is·usually | 566 | Defines·which·history·function·to·use,·which·is·usually |
485 | .Fn·history·. | |
486 | .Fa·ptr | 567 | \fBhistory\fP(). |
| 568 | \fIptr·\fP |
487 | should·be·the·value·returned·by | 569 | should·be·the·value·returned·by |
488 | .Fn·history_init·. | |
489 | .It·Dv·EL_EDITMODE·,·Fa·"int·flag" | 570 | \fBhistory_init\fP(). |
| 571 | .TP |
| 572 | EL_EDITMODE·,·\fIint·flag\fP |
490 | If | 573 | If |
491 | .Fa·flag | 574 | \fIflag·\fP |
492 | is·non-zero, | 575 | is·non-zero, |
493 | editing·is·enabled·(the·default). | 576 | editing·is·enabled·(the·default). |
494 | Note·that·this·is·only·an·indication,·and·does·not | 577 | Note·that·this·is·only·an·indication,·and·does·not |
495 | affect·the·operation·of | 578 | affect·the·operation·of |
496 | .Nm·. | 579 | \fB.\fP |
497 | At·this·time,·it·is·the·caller's·responsibility·to | 580 | At·this·time,·it·is·the·caller's·responsibility·to |
498 | check·this | 581 | check·this |
499 | (using | 582 | (using |
500 | .Fn·el_get·) | 583 | \fBel_get\fP()·) |
501 | to·determine·if·editing·should·be·enabled·or·not. | 584 | to·determine·if·editing·should·be·enabled·or·not. |
502 | .It·Dv·EL_UNBUFFERED·,·Fa·"int·flag" | 585 | .TP |
| 586 | EL_UNBUFFERED·,·\fIint·flag\fP |
503 | If | 587 | If |
504 | .Fa·flag | 588 | \fIflag·\fP |
505 | is·zero, | 589 | is·zero, |
506 | unbuffered·mode·is·disabled·(the·default). | 590 | unbuffered·mode·is·disabled·(the·default). |
507 | In·unbuffered·mode, | 591 | In·unbuffered·mode, |
508 | .Fn·el_gets | 592 | \fBel_gets\fP() |
509 | will·return·immediately·after·processing·a·single·character. | 593 | will·return·immediately·after·processing·a·single·character. |
510 | .It·Dv·EL_SAFEREAD·,·Fa·"int·flag" | 594 | .TP |
| 595 | EL_SAFEREAD·,·\fIint·flag\fP |
511 | If·the | 596 | If·the |
512 | .Fa·flag | 597 | \fIflag·\fP |
513 | argument·is·non-zero,·then | 598 | argument·is·non-zero,·then |
514 | .Nm·editline | 599 | \fBeditline\fP |
515 | attempts·to·recover·from·read·errors,·ignoring·the·first·interrupted | 600 | attempts·to·recover·from·read·errors,·ignoring·the·first·interrupted |
516 | error,·and·trying·to·reset·the·input·file·descriptor·to·reset·non-blocking·I/O. | 601 | error,·and·trying·to·reset·the·input·file·descriptor·to·reset·non-blocking·I/O. |
517 | This·is·disabled·by·default,·and·desirable·only·when | 602 | This·is·disabled·by·default,·and·desirable·only·when |
518 | .Nm·editline | 603 | \fBeditline\fP |
519 | is·used·in·shell-like·applications. | 604 | is·used·in·shell-like·applications. |
520 | .It·Dv·EL_GETCFN·,·Fa·"el_rfunc_t·f" | 605 | .TP |
| 606 | EL_GETCFN·,·\fIel_rfunc_t·f\fP |
521 | Whenever·reading·a·character,·use·the·function | 607 | Whenever·reading·a·character,·use·the·function |
522 | .Bd·-ragged·-offset·indent·-compact | 608 | -ragged·-offset·indent·-compact |
523 | .Ft·int | 609 | .PP |
| 610 | \fIint\fP |
| 611 | .br |
524 | .Fo·f | 612 | Fo·f |
525 | .Fa·"EditLine·*e" | |
526 | .Fa·"wchar_t·*wc" | 613 | \fIEditLine·*e\fP |
| 614 | \fIwchar_t·*wc\fP |
527 | .Fc | 615 | Fc |
528 | .Ed | |
529 | which·stores·the·character·in | 616 | which·stores·the·character·in |
530 | .Fa·wc | 617 | \fIwc·\fP |
531 | and·returns·1·on·success,·0·on·end·of·file,·or·\-1·on·I/O·or·encoding | 618 | and·returns·1·on·success,·0·on·end·of·file,·or·\-1·on·I/O·or·encoding |
532 | errors. | 619 | errors. |
533 | Functions·internally·using·it·include | 620 | Functions·internally·using·it·include |
534 | .Fn·el_wgets·, | |
535 | .Fn·el_wgetc·, | |
536 | .Fn·el_gets·, | 621 | \fBel_wgets\fP(), |
| 622 | \fBel_wgetc\fP(), |
| 623 | \fBel_gets\fP(), |
537 | and | 624 | and |
538 | .Fn·el_getc·. | 625 | \fBel_getc\fP(). |
539 | Initially,·a·builtin·function·is·installed,·and·replacing·it | 626 | Initially,·a·builtin·function·is·installed,·and·replacing·it |
540 | is·discouraged·because·writing·such·a·function·is·very·error·prone. | 627 | is·discouraged·because·writing·such·a·function·is·very·error·prone. |
541 | The·builtin·function·can·be·restored·at·any·time·by·passing·the | 628 | The·builtin·function·can·be·restored·at·any·time·by·passing·the |
542 | special·value | 629 | special·value |
543 | .Dv·EL_BUILTIN_GETCFN | 630 | EL_BUILTIN_GETCFN |
544 | instead·of·a·function·pointer. | 631 | instead·of·a·function·pointer. |
545 | .It·Dv·EL_CLIENTDATA·,·Fa·"void·*data" | 632 | .TP |
| 633 | EL_CLIENTDATA·,·\fIvoid·*data\fP |
546 | Register | 634 | Register |
547 | .Fa·data | 635 | \fIdata·\fP |
548 | to·be·associated·with·this·EditLine·structure. | 636 | to·be·associated·with·this·EditLine·structure. |
549 | It·can·be·retrieved·with·the·corresponding | 637 | It·can·be·retrieved·with·the·corresponding |
550 | .Fn·el_get | 638 | \fBel_get\fP(); |
551 | call. | 639 | call. |
552 | .It·Dv·EL_SETFP·,·Fa·"int·fd"·,·Fa·"FILE·*fp" | 640 | .TP |
| 641 | EL_SETFP·,·\fIint·fd,·Fa·FILE·*fp\fP |
553 | Set·the·current | 642 | Set·the·current |
554 | .Nm·editline | 643 | \fBeditline\fP |
555 | file·pointer·for | 644 | file·pointer·for |
556 | .Dq·input | |
557 | .Fa·fd | 645 | ``input'' |
| 646 | \fIfd·\fP |
558 | = | 647 | = |
559 | .Dv·0·, | |
560 | .Dq·output | |
561 | .Fa·fd | 648 | 0·, |
| 649 | ``output'' |
| 650 | \fIfd·\fP |
562 | = | 651 | = |
563 | .Dv·1·, | 652 | 1·, |
564 | or | 653 | or |
565 | .Dq·error | |
566 | .Fa·fd | 654 | ``error'' |
| 655 | \fIfd·\fP |
567 | = | 656 | = |
568 | .Dv·2 | 657 | 2 |
569 | from | 658 | from |
570 | .Fa·fp·. | |
571 | .El | |
572 | .It·Fn·el_get | 659 | \fIfp\fP. |
| 660 | .RE |
| 661 | .TP |
| 662 | \fBel_get\fP() |
573 | Get | 663 | Get |
574 | .Nm | 664 | \fBeditline\fP |
575 | parameters. | 665 | parameters. |
576 | .Fa·op | 666 | \fIop·\fP |
577 | determines·which·parameter·to·retrieve·into | 667 | determines·which·parameter·to·retrieve·into |
578 | .Fa·result·. | 668 | \fIresult\fP. |
579 | Returns·0·if·successful,·\-1·otherwise. | 669 | Returns·0·if·successful,·\-1·otherwise. |
580 | .Pp | |
581 | The·following·values·for | 670 | The·following·values·for |
582 | .Fa·op | 671 | \fIop·\fP |
583 | are·supported,·along·with·actual·type·of | 672 | are·supported,·along·with·actual·type·of |
584 | .Fa·result·: | |
585 | .Bl·-tag·-width·4n | 673 | \fIresult·:·\fP |
| 674 | .RS |
| 675 | .TP |
586 | .It·Dv·EL_PROMPT·,·Fa·"char·*(*f)(EditLine·*)"·,·Fa·"char·*c" | 676 | EL_PROMPT·,·\fIchar·*(*f)(EditLine·*),·Fa·char·*c\fP |
587 | Set | 677 | Set |
588 | .Fa·f | 678 | \fIf·\fP |
589 | to·a·pointer·to·the·function·that·displays·the·prompt. | 679 | to·a·pointer·to·the·function·that·displays·the·prompt. |
590 | If | 680 | If |
591 | .Fa·c | 681 | \fIc·\fP |
592 | is·not | 682 | is·not |
593 | .Dv·NULL·, | 683 | NULL·, |
594 | set·it·to·the·start/stop·literal·prompt·character. | 684 | set·it·to·the·start/stop·literal·prompt·character. |
| 685 | .TP |
595 | .It·Dv·EL_RPROMPT·,·Fa·"char·*(*f)(EditLine·*)"·,·Fa·"char·*c" | 686 | EL_RPROMPT·,·\fIchar·*(*f)(EditLine·*),·Fa·char·*c\fP |
596 | Set | 687 | Set |
597 | .Fa·f | 688 | \fIf·\fP |
598 | to·a·pointer·to·the·function·that·displays·the·prompt. | 689 | to·a·pointer·to·the·function·that·displays·the·prompt. |
599 | If | 690 | If |
600 | .Fa·c | 691 | \fIc·\fP |
601 | is·not | 692 | is·not |
602 | .Dv·NULL·, | 693 | NULL·, |
603 | set·it·to·the·start/stop·literal·prompt·character. | 694 | set·it·to·the·start/stop·literal·prompt·character. |
604 | .It·Dv·EL_EDITOR·,·Fa·"const·char·**n" | 695 | .TP |
| 696 | EL_EDITOR·,·\fIconst·char·**n\fP |
605 | Set·the·name·of·the·editor·in | 697 | Set·the·name·of·the·editor·in |
606 | .Fa·n·, | 698 | \fIn\fP, |
607 | which·will·be·one·of | 699 | which·will·be·one·of |
608 | .Dq·emacs | 700 | ``emacs'' |
609 | or | 701 | or |
610 | .Dq·vi·. | 702 | ``vi''. |
| 703 | .TP |
611 | .It·Dv·EL_GETTC·,·Fa·"const·char·*name"·,·Fa·"void·*value" | 704 | EL_GETTC·,·\fIconst·char·*name,·Fa·void·*value\fP |
612 | If | 705 | If |
613 | .Fa·name | 706 | \fIname·\fP |
614 | is·a·valid | 707 | is·a·valid |
615 | .Xr·termcap·5 | 708 | \fBtermcap\fP(5) |
616 | capability·set | 709 | capability·set |
617 | .Fa·value | 710 | \fIvalue·\fP |
618 | to·the·current·value·of·that·capability. | 711 | to·the·current·value·of·that·capability. |
619 | .It·Dv·EL_SIGNAL·,·Fa·"int·*s" | 712 | .TP |
| 713 | EL_SIGNAL·,·\fIint·*s\fP |
620 | Set | 714 | Set |
621 | .Fa·s | 715 | \fIs·\fP |
622 | to·non-zero·if | 716 | to·non-zero·if |
623 | .Nm | 717 | \fBeditline\fP |
624 | has·installed·private·signal·handlers·(see | 718 | has·installed·private·signal·handlers·(see |
625 | .Fn·el_get | 719 | \fBel_get\fP() |
626 | above). | 720 | above). |
627 | .It·Dv·EL_EDITMODE·,·Fa·"int·*c" | 721 | .TP |
| 722 | EL_EDITMODE·,·\fIint·*c\fP |
628 | Set | 723 | Set |
629 | .Fa·c | 724 | \fIc·\fP |
630 | to·non-zero·if·editing·is·enabled. | 725 | to·non-zero·if·editing·is·enabled. |
631 | .It·Dv·EL_GETCFN·,·Fa·"el_rfunc_t·*f" | 726 | .TP |
| 727 | EL_GETCFN·,·\fIel_rfunc_t·*f\fP |
632 | Set | 728 | Set |
633 | .Fa·f | 729 | \fIf·\fP |
634 | to·a·pointer·to·the·function·that·reads·characters,·or·to | 730 | to·a·pointer·to·the·function·that·reads·characters,·or·to |
635 | .Dv·EL_BUILTIN_GETCFN | 731 | EL_BUILTIN_GETCFN |
636 | if·the·builtin·function·is·in·use. | 732 | if·the·builtin·function·is·in·use. |
| 733 | .TP |
637 | .It·Dv·EL_CLIENTDATA·,·Fa·"void·**data" | 734 | EL_CLIENTDATA·,·\fIvoid·**data\fP |
638 | Set | 735 | Set |
639 | .Fa·data | 736 | \fIdata·\fP |
640 | to·the·previously·registered·client·data·set·by·an | 737 | to·the·previously·registered·client·data·set·by·an |
641 | .Fn·el_set | 738 | \fBel_set\fP() |
642 | call. | 739 | call. |
643 | .It·Dv·EL_UNBUFFERED·,·Fa·"int·*c" | 740 | .TP |
| 741 | EL_UNBUFFERED·,·\fIint·*c\fP |
644 | Set | 742 | Set |
645 | .Fa·c | 743 | \fIc·\fP |
646 | to·non-zero·if·unbuffered·mode·is·enabled. | 744 | to·non-zero·if·unbuffered·mode·is·enabled. |
647 | .It·Dv·EL_SAFEREAD·,·Fa·"int·*c" | 745 | .TP |
| 746 | EL_SAFEREAD·,·\fIint·*c\fP |
648 | Set | 747 | Set |
649 | .Fa·c | 748 | \fIc·\fP |
650 | to·non-zero·if·safe·read·is·set. | 749 | to·non-zero·if·safe·read·is·set. |
| 750 | .TP |
651 | .It·Dv·EL_GETFP·,·Fa·"int·fd",·Fa·"FILE·**fp" | 751 | EL_GETFP·,·\fIint·fd",·Fa·FILE·**fp\fP |
652 | Set | 752 | Set |
653 | .Fa·fp | 753 | \fIfp·\fP |
654 | to·the·current | 754 | to·the·current |
655 | .Nm·editline | 755 | \fBeditline\fP |
656 | file·pointer·for | 756 | file·pointer·for |
657 | .Dq·input | |
658 | .Fa·fd | 757 | ``input'' |
| 758 | \fIfd·\fP |
659 | = | 759 | = |
660 | .Dv·0·, | |
661 | .Dq·output | |
662 | .Fa·fd | 760 | 0·, |
| 761 | ``output'' |
| 762 | \fIfd·\fP |
663 | = | 763 | = |
664 | .Dv·1·, | 764 | 1·, |
665 | or | 765 | or |
666 | .Dq·error | |
667 | .Fa·fd | 766 | ``error'' |
| 767 | \fIfd·\fP |
668 | = | 768 | = |
669 | .Dv·2·. | |
670 | .El | |
671 | .It·Fn·el_source | 769 | 2·. |
| 770 | .RE |
| 771 | .TP |
| 772 | \fBel_source\fP() |
672 | Initialize | 773 | Initialize |
673 | .Nm | 774 | \fBeditline\fP |
674 | by·reading·the·contents·of | 775 | by·reading·the·contents·of |
675 | .Fa·file·. | |
676 | .Fn·el_parse | 776 | \fIfile\fP. |
| 777 | \fBel_parse\fP() |
677 | is·called·for·each·line·in | 778 | is·called·for·each·line·in |
678 | .Fa·file·. | 779 | \fIfile\fP. |
679 | If | 780 | If |
680 | .Fa·file | 781 | \fIfile·\fP |
681 | is | 782 | is |
682 | .Dv·NULL·, | 783 | NULL·, |
683 | try | 784 | try |
684 | .Pa·$EDITRC | 785 | \fI$EDITRC\fP |
685 | and·if·that·is·not·set | 786 | and·if·that·is·not·set |
686 | .Pa·$HOME/.editrc·. | 787 | \fI$HOME/.editrc\fP. |
687 | Refer·to | 788 | Refer·to |
688 | .Xr·editrc·5 | 789 | \fBeditrc\fP(5) |
689 | for·details·on·the·format·of | 790 | for·details·on·the·format·of |
690 | .Fa·file·. | |
691 | .Fn·el_source | 791 | \fIfile\fP. |
| 792 | \fBel_source\fP() |
692 | returns·0·on·success·and·\-1·on·error. | 793 | returns·0·on·success·and·\-1·on·error. |
693 | .It·Fn·el_resize | 794 | .TP |
| 795 | \fBel_resize\fP() |
694 | Must·be·called·if·the·terminal·size·changes. | 796 | Must·be·called·if·the·terminal·size·changes. |
695 | If | 797 | If |
696 | .Dv·EL_SIGNAL | 798 | EL_SIGNAL |
697 | has·been·set·with | 799 | has·been·set·with |
698 | .Fn·el_set·, | 800 | \fBel_set\fP(), |
699 | then·this·is·done·automatically. | 801 | then·this·is·done·automatically. |
700 | Otherwise,·it's·the·responsibility·of·the·application·to·call | 802 | Otherwise,·it's·the·responsibility·of·the·application·to·call |
701 | .Fn·el_resize | 803 | \fBel_resize\fP() |
702 | on·the·appropriate·occasions. | 804 | on·the·appropriate·occasions. |
703 | .It·Fn·el_cursor | 805 | .TP |
| 806 | \fBel_cursor\fP() |
704 | Move·the·cursor·to·the·right·(if·positive)·or·to·the·left·(if·negative) | 807 | Move·the·cursor·to·the·right·(if·positive)·or·to·the·left·(if·negative) |
705 | .Fa·count | 808 | \fIcount·\fP |
706 | characters. | 809 | characters. |
707 | Returns·the·resulting·offset·of·the·cursor·from·the·beginning·of·the·line. | 810 | Returns·the·resulting·offset·of·the·cursor·from·the·beginning·of·the·line. |
708 | .It·Fn·el_line | 811 | .TP |
| 812 | \fBel_line\fP() |
709 | Return·the·editing·information·for·the·current·line·in·a | 813 | Return·the·editing·information·for·the·current·line·in·a |
710 | .Fa·LineInfo | 814 | \fILineInfo·\fP |
711 | structure,·which·is·defined·as·follows: | 815 | structure,·which·is·defined·as·follows: |
712 | .Bd·-literal | |
713 | typedef·struct·lineinfo·{ | 816 | typedef·struct·lineinfo·{ |
| 817 | .br |
714 | ····const·char·*buffer;····/*·address·of·buffer·*/ | 818 | ····const·char·*buffer;····/*·address·of·buffer·*/ |
| 819 | .br |
715 | ····const·char·*cursor;····/*·address·of·cursor·*/ | 820 | ····const·char·*cursor;····/*·address·of·cursor·*/ |
| 821 | .br |
716 | ····const·char·*lastchar;··/*·address·of·last·character·*/ | 822 | ····const·char·*lastchar;··/*·address·of·last·character·*/ |
| 823 | .br |
717 | }·LineInfo; | 824 | }·LineInfo; |
718 | .Ed | |
719 | .Pp | |
720 | .Fa·buffer | 825 | .br |
| |
| 826 | \fIbuffer·\fP |
721 | is·not·NUL·terminated. | 827 | is·not·NUL·terminated. |
722 | This·function·may·be·called·after | 828 | This·function·may·be·called·after |
723 | .Fn·el_gets | 829 | \fBel_gets\fP() |
724 | to·obtain·the | 830 | to·obtain·the |
725 | .Fa·LineInfo | 831 | \fILineInfo·\fP |
726 | structure·pertaining·to·line·returned·by·that·function, | 832 | structure·pertaining·to·line·returned·by·that·function, |
727 | and·from·within·user·defined·functions·added·with | 833 | and·from·within·user·defined·functions·added·with |
728 | .Dv·EL_ADDFN·. | 834 | EL_ADDFN·. |
729 | .It·Fn·el_insertstr | 835 | .TP |
| 836 | \fBel_insertstr\fP() |
730 | Insert | 837 | Insert |
731 | .Fa·str | 838 | \fIstr·\fP |
732 | into·the·line·at·the·cursor. | 839 | into·the·line·at·the·cursor. |
733 | Returns·\-1·if | 840 | Returns·\-1·if |
734 | .Fa·str | 841 | \fIstr·\fP |
735 | is·empty·or·won't·fit,·and·0·otherwise. | 842 | is·empty·or·won't·fit,·and·0·otherwise. |
736 | .It·Fn·el_deletestr | 843 | .TP |
| 844 | \fBel_deletestr\fP() |
737 | Delete | 845 | Delete |
738 | .Fa·count | 846 | \fIcount·\fP |
739 | characters·before·the·cursor. | 847 | characters·before·the·cursor. |
740 | .El | |
741 | .Sh·HISTORY·LIST·FUNCTIONS | 848 | .SH·HISTORY·LIST·FUNCTIONS |
742 | The·history·functions·use·a·common·data·structure, | 849 | The·history·functions·use·a·common·data·structure, |
743 | .Fa·History·, | 850 | \fIHistory\fP, |
744 | which·is·created·by | 851 | which·is·created·by |
745 | .Fn·history_init | 852 | \fBhistory_init\fP() |
746 | and·freed·by | 853 | and·freed·by |
747 | .Fn·history_end·. | |
748 | .Pp | 854 | \fBhistory_end\fP(). |
| |
749 | The·following·functions·are·available: | 855 | The·following·functions·are·available: |
750 | .Bl·-tag·-width·4n | |
751 | .It·Fn·history_init | 856 | .TP |
| 857 | \fBhistory_init\fP() |
752 | Initialize·the·history·list,·and·return·a·data·structure | 858 | Initialize·the·history·list,·and·return·a·data·structure |
753 | to·be·used·by·all·other·history·list·functions,·or | 859 | to·be·used·by·all·other·history·list·functions,·or |
754 | .Dv·NULL | 860 | NULL |
755 | on·failure. | 861 | on·failure. |
756 | .It·Fn·history_end | 862 | .TP |
| 863 | \fBhistory_end\fP() |
757 | Clean·up·and·finish·with | 864 | Clean·up·and·finish·with |
758 | .Fa·h·, | 865 | \fIh\fP, |
759 | assumed·to·have·been·created·with | 866 | assumed·to·have·been·created·with |
760 | .Fn·history_init·. | |
761 | .It·Fn·history | 867 | \fBhistory_init\fP(). |
| 868 | .TP |
| 869 | \fBhistory\fP() |
762 | Perform·operation | 870 | Perform·operation |
763 | .Fa·op | 871 | \fIop·\fP |
764 | on·the·history·list,·with·optional·arguments·as·needed·by·the | 872 | on·the·history·list,·with·optional·arguments·as·needed·by·the |
765 | operation. | 873 | operation. |
766 | .Fa·ev | 874 | \fIev·\fP |
767 | is·changed·accordingly·to·operation. | 875 | is·changed·accordingly·to·operation. |
768 | The·following·values·for | 876 | The·following·values·for |
769 | .Fa·op | 877 | \fIop·\fP |
770 | are·supported,·along·with·the·required·argument·list: | 878 | are·supported,·along·with·the·required·argument·list: |
771 | .Bl·-tag·-width·4n | |
772 | .It·Dv·H_SETSIZE·,·Fa·"int·size" | 879 | .RS |
| 880 | .TP |
| 881 | H_SETSIZE·,·\fIint·size\fP |
773 | Set·size·of·history·to | 882 | Set·size·of·history·to |
774 | .Fa·size | 883 | \fIsize·\fP |
775 | elements. | 884 | elements. |
776 | .It·Dv·H_GETSIZE | 885 | .TP |
| 886 | H_GETSIZE |
777 | Get·number·of·events·currently·in·history. | 887 | Get·number·of·events·currently·in·history. |
778 | .It·Dv·H_END | 888 | .TP |
| 889 | H_END |
779 | Cleans·up·and·finishes·with | 890 | Cleans·up·and·finishes·with |
780 | .Fa·h·, | 891 | \fIh\fP, |
781 | assumed·to·be·created·with | 892 | assumed·to·be·created·with |
782 | .Fn·history_init·. | |
783 | .It·Dv·H_CLEAR | 893 | \fBhistory_init\fP(). |
| 894 | .TP |
| 895 | H_CLEAR |
784 | Clear·the·history. | 896 | Clear·the·history. |
| 897 | .TP |
785 | .It·Dv·H_FUNC·,·Fa·"void·*ptr"·,·Fa·"history_gfun_t·first"·,·\ | 898 | H_FUNC·,·\fIvoid·*ptr,·Fa·history_gfun_t·first,·\·\fP |
786 | Fa·"history_gfun_t·next"·,·Fa·"history_gfun_t·last"·,·\ | 899 | Fa·"history_gfun_t·next"·,·Fa·"history_gfun_t·last"·,·\ |
787 | Fa·"history_gfun_t·prev"·,·Fa·"history_gfun_t·curr"·,·\ | 900 | Fa·"history_gfun_t·prev"·,·Fa·"history_gfun_t·curr"·,·\ |
788 | Fa·"history_sfun_t·set"·,·Fa·"history_vfun_t·clear"·,·\ | 901 | Fa·"history_sfun_t·set"·,·Fa·"history_vfun_t·clear"·,·\ |
789 | Fa·"history_efun_t·enter"·,·Fa·"history_efun_t·add" | 902 | Fa·"history_efun_t·enter"·,·Fa·"history_efun_t·add" |
790 | Define·functions·to·perform·various·history·operations. | 903 | Define·functions·to·perform·various·history·operations. |
791 | .Fa·ptr | 904 | \fIptr·\fP |
792 | is·the·argument·given·to·a·function·when·it's·invoked. | 905 | is·the·argument·given·to·a·function·when·it's·invoked. |
793 | .It·Dv·H_FIRST | 906 | .TP |
| 907 | H_FIRST |
794 | Return·the·first·element·in·the·history. | 908 | Return·the·first·element·in·the·history. |
795 | .It·Dv·H_LAST | 909 | .TP |
| 910 | H_LAST |
796 | Return·the·last·element·in·the·history. | 911 | Return·the·last·element·in·the·history. |
797 | .It·Dv·H_PREV | 912 | .TP |
| 913 | H_PREV |
798 | Return·the·previous·element·in·the·history. | 914 | Return·the·previous·element·in·the·history. |
799 | It·is·newer·than·the·current·one. | 915 | It·is·newer·than·the·current·one. |
800 | .It·Dv·H_NEXT | 916 | .TP |
| 917 | H_NEXT |
801 | Return·the·next·element·in·the·history. | 918 | Return·the·next·element·in·the·history. |
802 | It·is·older·than·the·current·one. | 919 | It·is·older·than·the·current·one. |
803 | .It·Dv·H_CURR | 920 | .TP |
| 921 | H_CURR |
804 | Return·the·current·element·in·the·history. | 922 | Return·the·current·element·in·the·history. |
805 | .It·Dv·H_SET·,·Fa·"int·position" | 923 | .TP |
| 924 | H_SET·,·\fIint·position\fP |
806 | Set·the·cursor·to·point·to·the·requested·element. | 925 | Set·the·cursor·to·point·to·the·requested·element. |
807 | .It·Dv·H_ADD·,·Fa·"const·char·*str" | 926 | .TP |
| 927 | H_ADD·,·\fIconst·char·*str\fP |
808 | Append | 928 | Append |
809 | .Fa·str | 929 | \fIstr·\fP |
810 | to·the·current·element·of·the·history,·or·perform·the | 930 | to·the·current·element·of·the·history,·or·perform·the |
811 | .Dv·H_ENTER | 931 | H_ENTER |
812 | operation·with·argument | 932 | operation·with·argument |
813 | .Fa·str | 933 | \fIstr·\fP |
814 | if·there·is·no·current·element. | 934 | if·there·is·no·current·element. |
815 | .It·Dv·H_APPEND·,·Fa·"const·char·*str" | 935 | .TP |
| 936 | H_APPEND·,·\fIconst·char·*str\fP |
816 | Append | 937 | Append |
817 | .Fa·str | 938 | \fIstr·\fP |
818 | to·the·last·new·element·of·the·history. | 939 | to·the·last·new·element·of·the·history. |
819 | .It·Dv·H_ENTER·,·Fa·"const·char·*str" | 940 | .TP |
| 941 | H_ENTER·,·\fIconst·char·*str\fP |
820 | Add | 942 | Add |
821 | .Fa·str | 943 | \fIstr·\fP |
822 | as·a·new·element·to·the·history·and,·if·necessary, | 944 | as·a·new·element·to·the·history·and,·if·necessary, |
823 | removing·the·oldest·entry·to·keep·the·list·to·the·created·size. | 945 | removing·the·oldest·entry·to·keep·the·list·to·the·created·size. |
824 | If | 946 | If |
825 | .Dv·H_SETUNIQUE | 947 | H_SETUNIQUE |
826 | has·been·called·with·a·non-zero·argument,·the·element | 948 | has·been·called·with·a·non-zero·argument,·the·element |
827 | will·not·be·entered·into·the·history·if·its·contents·match | 949 | will·not·be·entered·into·the·history·if·its·contents·match |
828 | the·ones·of·the·current·history·element. | 950 | the·ones·of·the·current·history·element. |
829 | If·the·element·is·entered | 951 | If·the·element·is·entered |
830 | .Fn·history | 952 | \fBhistory\fP() |
831 | returns·1;·if·it·is·ignored·as·a·duplicate·returns·0. | 953 | returns·1;·if·it·is·ignored·as·a·duplicate·returns·0. |
832 | Finally | 954 | Finally |
833 | .Fn·history | 955 | \fBhistory\fP() |
834 | returns·\-1·if·an·error·occurred. | 956 | returns·\-1·if·an·error·occurred. |
| 957 | .TP |
835 | .It·Dv·H_PREV_STR·,·Fa·"const·char·*str" | 958 | H_PREV_STR·,·\fIconst·char·*str\fP |
836 | Return·the·closest·previous·event·that·starts·with | 959 | Return·the·closest·previous·event·that·starts·with |
837 | .Fa·str·. | 960 | \fIstr\fP. |
| 961 | .TP |
838 | .It·Dv·H_NEXT_STR·,·Fa·"const·char·*str" | 962 | H_NEXT_STR·,·\fIconst·char·*str\fP |
839 | Return·the·closest·next·event·that·starts·with | 963 | Return·the·closest·next·event·that·starts·with |
840 | .Fa·str·. | |
841 | .It·Dv·H_PREV_EVENT·,·Fa·"int·e" | 964 | \fIstr\fP. |
| 965 | .TP |
| 966 | H_PREV_EVENT·,·\fIint·e\fP |
842 | Return·the·previous·event·numbered | 967 | Return·the·previous·event·numbered |
843 | .Fa·e·. | |
844 | .It·Dv·H_NEXT_EVENT·,·Fa·"int·e" | 968 | \fIe\fP. |
| 969 | .TP |
| 970 | H_NEXT_EVENT·,·\fIint·e\fP |
845 | Return·the·next·event·numbered | 971 | Return·the·next·event·numbered |
846 | .Fa·e·. | |
847 | .It·Dv·H_LOAD·,·Fa·"const·char·*file" | 972 | \fIe\fP. |
| 973 | .TP |
| 974 | H_LOAD·,·\fIconst·char·*file\fP |
848 | Load·the·history·list·stored·in | 975 | Load·the·history·list·stored·in |
849 | .Fa·file·. | |
850 | .It·Dv·H_SAVE·,·Fa·"const·char·*file" | 976 | \fIfile\fP. |
| 977 | .TP |
| 978 | H_SAVE·,·\fIconst·char·*file\fP |
851 | Save·the·history·list·to | 979 | Save·the·history·list·to |
852 | .Fa·file·. | |
853 | .It·Dv·H_SAVE_FP·,·Fa·"FILE·*fp" | 980 | \fIfile\fP. |
| 981 | .TP |
| 982 | H_SAVE_FP·,·\fIFILE·*fp\fP |
854 | Save·the·history·list·to·the·opened | 983 | Save·the·history·list·to·the·opened |
855 | .Ft·FILE | 984 | .PP |
| 985 | \fIFILE\fP |
| 986 | .br |
856 | pointer | 987 | pointer |
857 | .Fa·fp·. | 988 | \fIfp\fP. |
| 989 | .TP |
858 | .It·Dv·H_NSAVE_FP·,·Fa·"size_t·n"·,·Fa·"FILE·*fp" | 990 | H_NSAVE_FP·,·\fIsize_t·n,·Fa·FILE·*fp\fP |
859 | Save·the·last | 991 | Save·the·last |
860 | .Ft·n | 992 | .PP |
| 993 | \fIn\fP |
| 994 | .br |
861 | history·entries·to·the·opened | 995 | history·entries·to·the·opened |
862 | .Ft·FILE | 996 | .PP |
| 997 | \fIFILE\fP |
| 998 | .br |
863 | pointer | 999 | pointer |
864 | .Fa·fp·. | |
865 | .It·Dv·H_SETUNIQUE·,·Fa·"int·unique" | 1000 | \fIfp\fP. |
| 1001 | .TP |
| 1002 | H_SETUNIQUE·,·\fIint·unique\fP |
866 | Set·flag·that·adjacent·identical·event·strings·should·not·be·entered | 1003 | Set·flag·that·adjacent·identical·event·strings·should·not·be·entered |
867 | into·the·history. | 1004 | into·the·history. |
| 1005 | .TP |
868 | .It·Dv·H_GETUNIQUE | 1006 | H_GETUNIQUE |
869 | Retrieve·the·current·setting·if·adjacent·identical·elements·should | 1007 | Retrieve·the·current·setting·if·adjacent·identical·elements·should |
870 | be·entered·into·the·history. | 1008 | be·entered·into·the·history. |
871 | .It·Dv·H_DEL·,·Fa·"int·e" | 1009 | .TP |
| 1010 | H_DEL·,·\fIint·e\fP |
872 | Delete·the·event·numbered | 1011 | Delete·the·event·numbered |
873 | .Fa·e·. | 1012 | \fIe\fP. |
874 | This·function·is·only·provided·for | 1013 | This·function·is·only·provided·for |
875 | .Nm·readline | 1014 | \fBreadline\fP |
876 | compatibility. | 1015 | compatibility. |
877 | The·caller·is·responsible·for·free'ing·the·string·in·the·returned | 1016 | The·caller·is·responsible·for·free'ing·the·string·in·the·returned |
878 | .Fa·HistEvent·. | |
879 | .El | |
880 | .Pp | |
881 | .Fn·history | 1017 | \fIHistEvent\fP. |
| 1018 | .RE |
| |
| 1019 | \fBhistory\fP(); |
882 | returns·>=·0·if·the·operation | 1020 | returns·>=·0·if·the·operation |
883 | .Fa·op | 1021 | \fIop·\fP |
884 | succeeds. | 1022 | succeeds. |
885 | Otherwise,·\-1·is·returned·and | 1023 | Otherwise,·\-1·is·returned·and |
886 | .Fa·ev | 1024 | \fIev·\fP |
887 | is·updated·to·contain·more·details·about·the·error. | 1025 | is·updated·to·contain·more·details·about·the·error. |
888 | .El | |
889 | .Sh·TOKENIZATION·FUNCTIONS | 1026 | .SH·TOKENIZATION·FUNCTIONS |
890 | The·tokenization·functions·use·a·common·data·structure, | 1027 | The·tokenization·functions·use·a·common·data·structure, |
891 | .Fa·Tokenizer·, | 1028 | \fITokenizer\fP, |
892 | which·is·created·by | 1029 | which·is·created·by |
893 | .Fn·tok_init | 1030 | \fBtok_init\fP() |
894 | and·freed·by | 1031 | and·freed·by |
895 | .Fn·tok_end·. | |
896 | .Pp | 1032 | \fBtok_end\fP(). |
| |
897 | The·following·functions·are·available: | 1033 | The·following·functions·are·available: |
898 | .Bl·-tag·-width·4n | |
899 | .It·Fn·tok_init | 1034 | .TP |
| 1035 | \fBtok_init\fP() |
900 | Initialize·the·tokenizer,·and·return·a·data·structure | 1036 | Initialize·the·tokenizer,·and·return·a·data·structure |
901 | to·be·used·by·all·other·tokenizer·functions. | 1037 | to·be·used·by·all·other·tokenizer·functions. |
902 | .Fa·IFS | 1038 | \fIIFS·\fP |
903 | contains·the·Input·Field·Separators,·which·defaults·to | 1039 | contains·the·Input·Field·Separators,·which·defaults·to |
904 | .Aq·space·, | |
905 | .Aq·tab·, | 1040 | <space·,> |
| 1041 | <tab·,> |
906 | and | 1042 | and |
907 | .Aq·newline | 1043 | <newline> |
908 | if | 1044 | if |
909 | .Dv·NULL·. | 1045 | NULL·. |
910 | .It·Fn·tok_end | 1046 | .TP |
| 1047 | \fBtok_end\fP() |
911 | Clean·up·and·finish·with | 1048 | Clean·up·and·finish·with |
912 | .Fa·t·, | 1049 | \fIt\fP, |
913 | assumed·to·have·been·created·with | 1050 | assumed·to·have·been·created·with |
914 | .Fn·tok_init·. | |
915 | .It·Fn·tok_reset | 1051 | \fBtok_init\fP(). |
| 1052 | .TP |
| 1053 | \fBtok_reset\fP() |
916 | Reset·the·tokenizer·state. | 1054 | Reset·the·tokenizer·state. |
917 | Use·after·a·line·has·been·successfully·tokenized | 1055 | Use·after·a·line·has·been·successfully·tokenized |
918 | by | 1056 | by |
919 | .Fn·tok_line | 1057 | \fBtok_line\fP() |
920 | or | 1058 | or |
921 | .Fn·tok_str | 1059 | \fBtok_str\fP() |
922 | and·before·a·new·line·is·to·be·tokenized. | 1060 | and·before·a·new·line·is·to·be·tokenized. |
923 | .It·Fn·tok_line | 1061 | .TP |
| 1062 | \fBtok_line\fP() |
924 | Tokenize | 1063 | Tokenize |
925 | .Fa·li·, | 1064 | \fIli\fP, |
926 | If·successful,·modify: | 1065 | If·successful,·modify: |
927 | .Fa·argv | 1066 | \fIargv·\fP |
928 | to·contain·the·words, | 1067 | to·contain·the·words, |
929 | .Fa·argc | 1068 | \fIargc·\fP |
930 | to·contain·the·number·of·words, | 1069 | to·contain·the·number·of·words, |
931 | .Fa·cursorc | 1070 | \fIcursorc·\fP |
932 | (if·not | 1071 | (if·not |
933 | .Dv·NULL·) | 1072 | NULL·) |
934 | to·contain·the·index·of·the·word·containing·the·cursor, | 1073 | to·contain·the·index·of·the·word·containing·the·cursor, |
935 | and | 1074 | and |
936 | .Fa·cursoro | 1075 | \fIcursoro·\fP |
937 | (if·not | 1076 | (if·not |
938 | .Dv·NULL·) | 1077 | NULL·) |
939 | to·contain·the·offset·within | 1078 | to·contain·the·offset·within |
940 | .Fa·argv[cursorc] | 1079 | \fIargv[cursorc]·\fP |
941 | of·the·cursor. | 1080 | of·the·cursor. |
942 | .Pp | |
943 | Returns | 1081 | Returns |
944 | 0·if·successful, | 1082 | 0·if·successful, |
945 | \-1·for·an·internal·error, | 1083 | \-1·for·an·internal·error, |
946 | 1·for·an·unmatched·single·quote, | 1084 | 1·for·an·unmatched·single·quote, |
947 | 2·for·an·unmatched·double·quote, | 1085 | 2·for·an·unmatched·double·quote, |
948 | and | 1086 | and |
949 | 3·for·a·backslash·quoted | 1087 | 3·for·a·backslash·quoted |
950 | .Aq·newline·. | 1088 | <newline·.> |
951 | A·positive·exit·code·indicates·that·another·line·should·be·read | 1089 | A·positive·exit·code·indicates·that·another·line·should·be·read |
952 | and·tokenization·attempted·again. | 1090 | and·tokenization·attempted·again. |
953 | . | |
954 | .It·Fn·tok_str | 1091 | .TP |
| 1092 | \fBtok_str\fP() |
955 | A·simpler·form·of | 1093 | A·simpler·form·of |
956 | .Fn·tok_line·; | |
957 | .Fa·str | 1094 | \fBtok_line\fP(;·) |
| 1095 | \fIstr·\fP |
958 | is·a·NUL·terminated·string·to·tokenize. | 1096 | is·a·NUL·terminated·string·to·tokenize. |
959 | .El | |
960 | . | |
961 | .\"XXX.Sh·EXAMPLES | |
962 | .\"XXX:·provide·some·examples | |
963 | .Sh·SEE·ALSO | 1097 | .SH·SEE·ALSO |
964 | .Xr·sh·1·, | |
965 | .Xr·signal·3·, | |
966 | .Xr·termcap·3·, | |
967 | .Xr·editrc·5·, | |
968 | .Xr·termcap·5·, | |
969 | .Xr·editline·7 | 1098 | \fBsh\fP(1), |
| 1099 | \fBsignal\fP(3), |
| 1100 | \fBtermcap\fP(3), |
| 1101 | \fBeditrc\fP(5), |
| 1102 | \fBtermcap\fP(5), |
| 1103 | \fBeditline\fP(7) |
970 | .Sh·HISTORY | 1104 | .SH·HISTORY |
971 | The | 1105 | The |
972 | .Nm | 1106 | \fBeditline\fP |
973 | library·first·appeared·in | 1107 | library·first·appeared·in |
974 | .Bx·4.4·. | 1108 | Bx·4.4·. |
975 | .Dv·CC_REDISPLAY | 1109 | CC_REDISPLAY |
976 | appeared·in | 1110 | appeared·in |
977 | .Nx·1.3·. | 1111 | Nx·1.3·. |
978 | .Dv·CC_REFRESH_BEEP·, | 1112 | CC_REFRESH_BEEP·, |
979 | .Dv·EL_EDITMODE | 1113 | EL_EDITMODE |
980 | and·the·readline·emulation·appeared·in | 1114 | and·the·readline·emulation·appeared·in |
981 | .Nx·1.4·. | 1115 | Nx·1.4·. |
982 | .Dv·EL_RPROMPT | 1116 | EL_RPROMPT |
983 | appeared·in | 1117 | appeared·in |
984 | .Nx·1.5·. | 1118 | Nx·1.5·. |
985 | .Sh·AUTHORS | 1119 | .SH·AUTHORS |
| |
986 | .An·-nosplit | 1120 | -nosplit |
987 | The | 1121 | The |
988 | .Nm | 1122 | \fBeditline\fP |
989 | library·was·written·by | 1123 | library·was·written·by |
| |
990 | .An·Christos·Zoulas·. | 1124 | Christos·Zoulas·. |
| |
991 | .An·Luke·Mewburn | 1125 | Luke·Mewburn |
992 | wrote·this·manual·and·implemented | 1126 | wrote·this·manual·and·implemented |
993 | .Dv·CC_REDISPLAY·, | 1127 | CC_REDISPLAY·, |
994 | .Dv·CC_REFRESH_BEEP·, | 1128 | CC_REFRESH_BEEP·, |
995 | .Dv·EL_EDITMODE·, | 1129 | EL_EDITMODE·, |
996 | and | 1130 | and |
997 | .Dv·EL_RPROMPT·. | 1131 | EL_RPROMPT·. |
| |
998 | .An·Jaromir·Dolecek | 1132 | Jaromir·Dolecek |
999 | implemented·the·readline·emulation. | 1133 | implemented·the·readline·emulation. |
| |
1000 | .An·Johny·Mattsson | 1134 | Johny·Mattsson |
1001 | implemented·wide-character·support. | 1135 | implemented·wide-character·support. |
1002 | .Sh·BUGS | 1136 | .SH·BUGS |
1003 | At·this·time,·it·is·the·responsibility·of·the·caller·to | 1137 | At·this·time,·it·is·the·responsibility·of·the·caller·to |
1004 | check·the·result·of·the | 1138 | check·the·result·of·the |
1005 | .Dv·EL_EDITMODE | 1139 | EL_EDITMODE |
1006 | operation·of | 1140 | operation·of |
1007 | .Fn·el_get | 1141 | \fBel_get\fP() |
1008 | (after·an | 1142 | (after·an |
1009 | .Fn·el_source | 1143 | \fBel_source\fP() |
1010 | or | 1144 | or |
1011 | .Fn·el_parse·) | 1145 | \fBel_parse\fP()·) |
1012 | to·determine·if | 1146 | to·determine·if |
1013 | .Nm | 1147 | \fBeditline\fP |
1014 | should·be·used·for·further·input. | 1148 | should·be·used·for·further·input. |
1015 | I.e., | 1149 | I.e., |
1016 | .Dv·EL_EDITMODE | 1150 | EL_EDITMODE |
1017 | is·purely·an·indication·of·the·result·of·the·most·recent | 1151 | is·purely·an·indication·of·the·result·of·the·most·recent |
1018 | .Xr·editrc·5 | |
1019 | .Ic·edit | 1152 | \fBeditrc\fP(5) |
| 1153 | \fBedit\fP |
1020 | command. | 1154 | command. |