xref: /original-bsd/lib/libedit/histedit.h (revision bdfadfff)
1 /*-
2  * Copyright (c) 1992 The Regents of the University of California.
3  * All rights reserved.
4  *
5  * This code is derived from software contributed to Berkeley by
6  * Christos Zoulas of Cornell University.
7  *
8  * %sccs.include.redist.c%
9  *
10  *	@(#)histedit.h	5.3 (Berkeley) 07/03/92
11  */
12 
13 /*
14  * histedit.h: Line editor and history interface.
15  */
16 #ifndef _h_editline
17 #define _h_editline
18 
19 #include <sys/types.h>
20 #include <stdio.h>
21 
22 /*
23  * ==== Editing ====
24  */
25 typedef struct editline EditLine;
26 
27 /*
28  * For user-defined function interface
29  */
30 typedef struct lineinfo {
31     const char *buffer;
32     const char *cursor;
33     const char *lastchar;
34 } LineInfo;
35 
36 
37 /*
38  * EditLine editor function return codes.
39  * For user-defined function interface
40  */
41 #define	CC_NORM		0
42 #define	CC_NEWLINE	1
43 #define	CC_EOF		2
44 #define CC_ARGHACK	3
45 #define CC_REFRESH	4
46 #define	CC_CURSOR	5
47 #define	CC_ERROR	6
48 #define CC_FATAL	7
49 
50 /*
51  * Initialization, cleanup, and resetting
52  */
53 EditLine	*el_init	__P((const char *, FILE *, FILE *));
54 void		 el_reset	__P((EditLine *));
55 void		 el_end		__P((EditLine *));
56 
57 
58 /*
59  * Get a line, a character or push a string back in the input queue
60  */
61 const char      *el_gets	__P((EditLine *, int *));
62 int		 el_getc	__P((EditLine *, char *));
63 void		 el_push	__P((EditLine *, const char *));
64 
65 /*
66  * High level function internals control
67  * Parses argc, argv array and executes builtin editline commands
68  */
69 int		 el_parse	__P((EditLine *, int, char **));
70 
71 /*
72  * Low level editline access function
73  */
74 int 		 el_set		__P((EditLine *, int, ...));
75 
76 /*
77  * el_set/el_get parameters
78  */
79 #define EL_PROMPT	0	/* , el_pfunc_t);		*/
80 #define EL_TERMINAL	1	/* , const char *);		*/
81 #define EL_EDITOR	2	/* , const char *);		*/
82 #define EL_SIGNAL	3	/* , int);			*/
83 #define	EL_BIND		4	/* , const char *, ..., NULL);	*/
84 #define	EL_TELLTC	5	/* , const char *, ..., NULL);	*/
85 #define	EL_SETTC	6	/* , const char *, ..., NULL);	*/
86 #define	EL_ECHOTC	7	/* , const char *, ..., NULL);	*/
87 #define	EL_SETTY	8	/* , const char *, ..., NULL);	*/
88 #define	EL_ADDFN	9	/* , const char *, const char *	*/
89 				/* , el_func_t);		*/
90 #define EL_HIST		10	/* , hist_fun_t, const char *);	*/
91 
92 /*
93  * Source named file or $PWD/.editrc or $HOME/.editrc
94  */
95 int		el_source	__P((EditLine *, const char *));
96 
97 /*
98  * Must be called when the terminal changes size; If EL_SIGNAL
99  * is set this is done automatically otherwise it is the responsibility
100  * of the application
101  */
102 void		 el_resize	__P((EditLine *));
103 
104 
105 /*
106  * User-defined function interface.
107  */
108 const LineInfo	*el_line	__P((EditLine *));
109 int   		 el_insertstr	__P((EditLine *, char *));
110 void		 el_deletestr	__P((EditLine *, int));
111 
112 /*
113  * ==== History ====
114  */
115 
116 typedef struct history History;
117 
118 typedef struct HistEvent {
119     int 	num;
120     const char* str;
121 } HistEvent;
122 
123 /*
124  * History access functions.
125  */
126 History *		history_init	__P((void));
127 void 			history_end	__P((History *));
128 
129 const HistEvent *	history		__P((History *, int, ...));
130 
131 #define H_FUNC		 0	/* , UTSL		*/
132 #define H_EVENT		 1	/* , const int);	*/
133 #define H_FIRST		 2	/* , void);		*/
134 #define H_LAST		 3	/* , void);		*/
135 #define H_PREV		 4	/* , void);		*/
136 #define H_NEXT		 5	/* , void);		*/
137 #define H_CURR		 6	/* , void);		*/
138 #define H_ADD		 7	/* , const char*);	*/
139 #define H_ENTER		 8	/* , const char*);	*/
140 #define H_END		 9	/* , void);		*/
141 #define H_NEXT_STR	10	/* , const char*);	*/
142 #define H_PREV_STR	11	/* , const char*);	*/
143 #define H_NEXT_EVENT	12	/* , const int);	*/
144 #define H_PREV_EVENT	13	/* , const int);	*/
145 
146 #endif /* _h_editline */
147