root/bin/ksh/edit.h
/*      $OpenBSD: edit.h,v 1.13 2023/06/21 22:22:08 millert Exp $       */

/* NAME:
 *      edit.h - globals for edit modes
 *
 * DESCRIPTION:
 *      This header defines various global edit objects.
 *
 * SEE ALSO:
 *
 *
 * RCSid:
 *      $From: edit.h,v 1.2 1994/05/19 18:32:40 michael Exp michael $
 *
 */

#define BEL             0x07

#undef CTRL
#define CTRL(x)         ((x) == '?' ? 0x7F : (x) & 0x1F)        /* ASCII */
#define UNCTRL(x)       ((x) == 0x7F ? '?' : (x) | 0x40)        /* ASCII */

/* tty driver characters we are interested in */
typedef struct {
        int erase;
        int kill;
        int werase;
        int intr;
        int quit;
        int eof;
} X_chars;

extern X_chars edchars;

/* x_cf_glob() flags */
#define XCF_COMMAND     BIT(0)  /* Do command completion */
#define XCF_FILE        BIT(1)  /* Do file completion */
#define XCF_FULLPATH    BIT(2)  /* command completion: store full path */
#define XCF_COMMAND_FILE (XCF_COMMAND|XCF_FILE)

/* edit.c */
int     x_getc(void);
void    x_flush(void);
int     x_putc(int);
void    x_puts(const char *);
bool    x_mode(bool);
int     promptlen(const char *, const char **);
int     x_do_comment(char *, int, int *);
void    x_print_expansions(int, char *const *, int);
int     x_cf_glob(int, const char *, int, int, int *, int *, char ***, int *);
int     x_longest_prefix(int , char *const *);
int     x_basename(const char *, const char *);
void    x_free_words(int, char **);
int     x_escape(const char *, size_t, int (*)(const char *, size_t));
/* emacs.c */
int     x_emacs(char *, size_t);
void    x_init_emacs(void);
void    x_emacs_keys(X_chars *);
/* vi.c */
int     x_vi(char *, size_t);