root/bin/ksh/edit.h
/*      $NetBSD: edit.h,v 1.5 2017/07/01 23:12:08 joerg Exp $   */

/* NAME:
 *      edit.h - globals for edit modes
 *
 * DESCRIPTION:
 *      This header defines various global edit objects.
 *
 * SEE ALSO:
 *      
 *
 * RCSid:
 *      $NetBSD: edit.h,v 1.5 2017/07/01 23:12:08 joerg Exp $
 *
 */

#include <stdbool.h>

/* some useful #defines */
#ifdef EXTERN
# define I__(i) = i
#else
# define I__(i)
# define EXTERN extern
# define EXTERN_DEFINED
#endif

#define BEL             0x07

/* 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_fc_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          ARGS((void));
void    x_flush         ARGS((void));
void    x_putc          ARGS((int c));
void    x_puts          ARGS((const char *s));
bool    x_mode(bool onoff);
int     promptlen       ARGS((const char *cp, const char **spp));
int     x_do_comment    ARGS((char *buf, int bsize, int *lenp));
void    x_print_expansions ARGS((int nwords, char *const *words, int is_command));
int     x_cf_glob ARGS((int flags, const char *buf, int buflen, int pos, int *startp,
                          int *endp, char ***wordsp, int *is_commandp));
int     x_longest_prefix ARGS((int nwords, char *const *words));
int     x_basename ARGS((const char *s, const char *se));
void    x_free_words ARGS((int nwords, char **words));
int     x_escape ARGS((const char *, size_t, int (*)(const char *s, size_t len)));
/* emacs.c */
int     x_emacs         ARGS((char *buf, size_t len));
void    x_init_emacs    ARGS((void));
void    x_emacs_keys    ARGS((X_chars *ec));
/* vi.c */
int     x_vi            ARGS((char *buf, size_t len));


#ifdef DEBUG
# define D__(x) x
#else
# define D__(x)
#endif

/* This lot goes at the END */
/* be sure not to interfere with anyone else's idea about EXTERN */
#ifdef EXTERN_DEFINED
# undef EXTERN_DEFINED
# undef EXTERN
#endif
#undef I__
/*
 * Local Variables:
 * version-control:t
 * comment-column:40
 * End:
 */