1 /*        $NetBSD: edit.h,v 1.5 2017/07/01 23:12:08 joerg Exp $       */
2 
3 /* NAME:
4  *      edit.h - globals for edit modes
5  *
6  * DESCRIPTION:
7  *      This header defines various global edit objects.
8  *
9  * SEE ALSO:
10  *
11  *
12  * RCSid:
13  *      $NetBSD: edit.h,v 1.5 2017/07/01 23:12:08 joerg Exp $
14  *
15  */
16 
17 #include <stdbool.h>
18 
19 /* some useful #defines */
20 #ifdef EXTERN
21 # define I__(i) = i
22 #else
23 # define I__(i)
24 # define EXTERN extern
25 # define EXTERN_DEFINED
26 #endif
27 
28 #define   BEL                 0x07
29 
30 /* tty driver characters we are interested in */
31 typedef struct {
32           int erase;
33           int kill;
34           int werase;
35           int intr;
36           int quit;
37           int eof;
38 } X_chars;
39 
40 EXTERN X_chars edchars;
41 
42 /* x_fc_glob() flags */
43 #define XCF_COMMAND BIT(0)    /* Do command completion */
44 #define XCF_FILE    BIT(1)    /* Do file completion */
45 #define XCF_FULLPATH          BIT(2)    /* command completion: store full path */
46 #define XCF_COMMAND_FILE (XCF_COMMAND|XCF_FILE)
47 
48 /* edit.c */
49 int       x_getc              ARGS((void));
50 void      x_flush             ARGS((void));
51 void      x_putc              ARGS((int c));
52 void      x_puts              ARGS((const char *s));
53 bool      x_mode(bool onoff);
54 int       promptlen ARGS((const char *cp, const char **spp));
55 int       x_do_comment        ARGS((char *buf, int bsize, int *lenp));
56 void      x_print_expansions ARGS((int nwords, char *const *words, int is_command));
57 int       x_cf_glob ARGS((int flags, const char *buf, int buflen, int pos, int *startp,
58                                 int *endp, char ***wordsp, int *is_commandp));
59 int       x_longest_prefix ARGS((int nwords, char *const *words));
60 int       x_basename ARGS((const char *s, const char *se));
61 void      x_free_words ARGS((int nwords, char **words));
62 int       x_escape ARGS((const char *, size_t, int (*)(const char *s, size_t len)));
63 /* emacs.c */
64 int       x_emacs             ARGS((char *buf, size_t len));
65 void      x_init_emacs        ARGS((void));
66 void      x_emacs_keys        ARGS((X_chars *ec));
67 /* vi.c */
68 int       x_vi                ARGS((char *buf, size_t len));
69 
70 
71 #ifdef DEBUG
72 # define D__(x) x
73 #else
74 # define D__(x)
75 #endif
76 
77 /* This lot goes at the END */
78 /* be sure not to interfere with anyone else's idea about EXTERN */
79 #ifdef EXTERN_DEFINED
80 # undef EXTERN_DEFINED
81 # undef EXTERN
82 #endif
83 #undef I__
84 /*
85  * Local Variables:
86  * version-control:t
87  * comment-column:40
88  * End:
89  */
90