]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - lib/libedit/histedit.h
This commit was generated by cvs2svn to compensate for changes in r3125,
[FreeBSD/FreeBSD.git] / lib / libedit / histedit.h
1 /*-
2  * Copyright (c) 1992, 1993
3  *      The Regents of the University of California.  All rights reserved.
4  *
5  * This code is derived from software contributed to Berkeley by
6  * Christos Zoulas of Cornell University.
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  * 3. All advertising materials mentioning features or use of this software
17  *    must display the following acknowledgement:
18  *      This product includes software developed by the University of
19  *      California, Berkeley and its contributors.
20  * 4. Neither the name of the University nor the names of its contributors
21  *    may be used to endorse or promote products derived from this software
22  *    without specific prior written permission.
23  *
24  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34  * SUCH DAMAGE.
35  *
36  *      @(#)histedit.h  8.2 (Berkeley) 1/3/94
37  */
38
39 /*
40  * histedit.h: Line editor and history interface.
41  */
42 #ifndef _h_editline
43 #define _h_editline
44
45 #include <sys/types.h>
46 #include <stdio.h>
47
48 /*
49  * ==== Editing ====
50  */
51 typedef struct editline EditLine;
52
53 /*
54  * For user-defined function interface
55  */
56 typedef struct lineinfo {
57     __const char *buffer;
58     __const char *cursor;
59     __const char *lastchar;
60 } LineInfo;
61
62
63 /*
64  * EditLine editor function return codes.
65  * For user-defined function interface
66  */
67 #define CC_NORM         0
68 #define CC_NEWLINE      1
69 #define CC_EOF          2
70 #define CC_ARGHACK      3
71 #define CC_REFRESH      4
72 #define CC_CURSOR       5
73 #define CC_ERROR        6
74 #define CC_FATAL        7
75
76 /*
77  * Initialization, cleanup, and resetting
78  */
79 EditLine        *el_init        __P((const char *, FILE *, FILE *));
80 void             el_reset       __P((EditLine *));
81 void             el_end         __P((EditLine *));
82
83
84 /*
85  * Get a line, a character or push a string back in the input queue
86  */
87 __const char    *el_gets        __P((EditLine *, int *));
88 int              el_getc        __P((EditLine *, char *));
89 void             el_push        __P((EditLine *, const char *));
90
91 /*
92  * High level function internals control
93  * Parses argc, argv array and executes builtin editline commands
94  */
95 int              el_parse       __P((EditLine *, int, char **)); 
96
97 /*
98  * Low level editline access function
99  */
100 int              el_set         __P((EditLine *, int, ...));
101
102 /*
103  * el_set/el_get parameters
104  */
105 #define EL_PROMPT       0       /* , el_pfunc_t);               */
106 #define EL_TERMINAL     1       /* , const char *);             */
107 #define EL_EDITOR       2       /* , const char *);             */
108 #define EL_SIGNAL       3       /* , int);                      */
109 #define EL_BIND         4       /* , const char *, ..., NULL);  */
110 #define EL_TELLTC       5       /* , const char *, ..., NULL);  */
111 #define EL_SETTC        6       /* , const char *, ..., NULL);  */
112 #define EL_ECHOTC       7       /* , const char *, ..., NULL);  */
113 #define EL_SETTY        8       /* , const char *, ..., NULL);  */
114 #define EL_ADDFN        9       /* , const char *, const char * */
115                                 /* , el_func_t);                */
116 #define EL_HIST         10      /* , hist_fun_t, const char *); */
117
118 /*
119  * Source named file or $PWD/.editrc or $HOME/.editrc
120  */
121 int             el_source       __P((EditLine *, const char *));
122
123 /*
124  * Must be called when the terminal changes size; If EL_SIGNAL
125  * is set this is done automatically otherwise it is the responsibility
126  * of the application
127  */
128 void             el_resize      __P((EditLine *));
129
130
131 /*
132  * User-defined function interface.
133  */
134 __const LineInfo *el_line       __P((EditLine *));
135 int               el_insertstr  __P((EditLine *, char *));
136 void              el_deletestr  __P((EditLine *, int));
137
138 /*
139  * ==== History ====
140  */
141
142 typedef struct history History;
143
144 typedef struct HistEvent {
145     int           num;
146     __const char *str;
147 } HistEvent;
148
149 /*
150  * History access functions.
151  */
152 History *               history_init    __P((void));
153 void                    history_end     __P((History *));
154
155 __const HistEvent *     history         __P((History *, int, ...));
156
157 #define H_FUNC           0      /* , UTSL               */
158 #define H_EVENT          1      /* , const int);        */
159 #define H_FIRST          2      /* , void);             */
160 #define H_LAST           3      /* , void);             */
161 #define H_PREV           4      /* , void);             */
162 #define H_NEXT           5      /* , void);             */
163 #define H_CURR           6      /* , void);             */
164 #define H_ADD            7      /* , const char*);      */
165 #define H_ENTER          8      /* , const char*);      */
166 #define H_END            9      /* , void);             */
167 #define H_NEXT_STR      10      /* , const char*);      */
168 #define H_PREV_STR      11      /* , const char*);      */
169 #define H_NEXT_EVENT    12      /* , const int);        */
170 #define H_PREV_EVENT    13      /* , const int);        */
171
172 #endif /* _h_editline */