Changeset View
Changeset View
Standalone View
Standalone View
lib/libedit/chared.h
/* $NetBSD: chared.h,v 1.27 2016/02/16 22:53:14 christos Exp $ */ | /* $NetBSD: chared.h,v 1.30 2016/05/22 19:44:26 christos Exp $ */ | ||||
/*- | /*- | ||||
* Copyright (c) 1992, 1993 | * Copyright (c) 1992, 1993 | ||||
* The Regents of the University of California. All rights reserved. | * The Regents of the University of California. All rights reserved. | ||||
* | * | ||||
* This code is derived from software contributed to Berkeley by | * This code is derived from software contributed to Berkeley by | ||||
* Christos Zoulas of Cornell University. | * Christos Zoulas of Cornell University. | ||||
* | * | ||||
Show All 26 Lines | |||||
*/ | */ | ||||
/* | /* | ||||
* el.chared.h: Character editor interface | * el.chared.h: Character editor interface | ||||
*/ | */ | ||||
#ifndef _h_el_chared | #ifndef _h_el_chared | ||||
#define _h_el_chared | #define _h_el_chared | ||||
#define EL_MAXMACRO 10 | |||||
/* | /* | ||||
* This is an issue of basic "vi" look-and-feel. Defining VI_MOVE works | * This is an issue of basic "vi" look-and-feel. Defining VI_MOVE works | ||||
* like real vi: i.e. the transition from command<->insert modes moves | * like real vi: i.e. the transition from command<->insert modes moves | ||||
* the cursor. | * the cursor. | ||||
* | * | ||||
* On the other hand we really don't want to move the cursor, because | * On the other hand we really don't want to move the cursor, because | ||||
* all the editing commands don't include the character under the cursor. | * all the editing commands don't include the character under the cursor. | ||||
* Probably the best fix is to make all the editing commands aware of | * Probably the best fix is to make all the editing commands aware of | ||||
* this fact. | * this fact. | ||||
*/ | */ | ||||
#define VI_MOVE | #define VI_MOVE | ||||
typedef struct c_macro_t { | |||||
int level; | |||||
int offset; | |||||
Char **macro; | |||||
} c_macro_t; | |||||
/* | /* | ||||
* Undo information for vi - no undo in emacs (yet) | * Undo information for vi - no undo in emacs (yet) | ||||
*/ | */ | ||||
typedef struct c_undo_t { | typedef struct c_undo_t { | ||||
ssize_t len; /* length of saved line */ | ssize_t len; /* length of saved line */ | ||||
int cursor; /* position of saved cursor */ | int cursor; /* position of saved cursor */ | ||||
Char *buf; /* full saved text */ | wchar_t *buf; /* full saved text */ | ||||
} c_undo_t; | } c_undo_t; | ||||
/* redo for vi */ | /* redo for vi */ | ||||
typedef struct c_redo_t { | typedef struct c_redo_t { | ||||
Char *buf; /* redo insert key sequence */ | wchar_t *buf; /* redo insert key sequence */ | ||||
Char *pos; | wchar_t *pos; | ||||
Char *lim; | wchar_t *lim; | ||||
el_action_t cmd; /* command to redo */ | el_action_t cmd; /* command to redo */ | ||||
Char ch; /* char that invoked it */ | wchar_t ch; /* char that invoked it */ | ||||
int count; | int count; | ||||
int action; /* from cv_action() */ | int action; /* from cv_action() */ | ||||
} c_redo_t; | } c_redo_t; | ||||
/* | /* | ||||
* Current action information for vi | * Current action information for vi | ||||
*/ | */ | ||||
typedef struct c_vcmd_t { | typedef struct c_vcmd_t { | ||||
int action; | int action; | ||||
Char *pos; | wchar_t *pos; | ||||
} c_vcmd_t; | } c_vcmd_t; | ||||
/* | /* | ||||
* Kill buffer for emacs | * Kill buffer for emacs | ||||
*/ | */ | ||||
typedef struct c_kill_t { | typedef struct c_kill_t { | ||||
Char *buf; | wchar_t *buf; | ||||
Char *last; | wchar_t *last; | ||||
Char *mark; | wchar_t *mark; | ||||
} c_kill_t; | } c_kill_t; | ||||
typedef void (*el_zfunc_t)(EditLine *, void *); | typedef void (*el_zfunc_t)(EditLine *, void *); | ||||
typedef const char *(*el_afunc_t)(void *, const char *); | typedef const char *(*el_afunc_t)(void *, const char *); | ||||
/* | /* | ||||
* Note that we use both data structures because the user can bind | * Note that we use both data structures because the user can bind | ||||
* commands from both editors! | * commands from both editors! | ||||
*/ | */ | ||||
typedef struct el_chared_t { | typedef struct el_chared_t { | ||||
c_undo_t c_undo; | c_undo_t c_undo; | ||||
c_kill_t c_kill; | c_kill_t c_kill; | ||||
c_redo_t c_redo; | c_redo_t c_redo; | ||||
c_vcmd_t c_vcmd; | c_vcmd_t c_vcmd; | ||||
c_macro_t c_macro; | |||||
el_zfunc_t c_resizefun; | el_zfunc_t c_resizefun; | ||||
el_afunc_t c_aliasfun; | el_afunc_t c_aliasfun; | ||||
void * c_resizearg; | void * c_resizearg; | ||||
void * c_aliasarg; | void * c_aliasarg; | ||||
} el_chared_t; | } el_chared_t; | ||||
#define STRQQ "\"\"" | #define STRQQ "\"\"" | ||||
#define isglob(a) (strchr("*[]?", (a)) != NULL) | #define isglob(a) (strchr("*[]?", (a)) != NULL) | ||||
#define NOP 0x00 | #define NOP 0x00 | ||||
#define DELETE 0x01 | #define DELETE 0x01 | ||||
#define INSERT 0x02 | #define INSERT 0x02 | ||||
#define YANK 0x04 | #define YANK 0x04 | ||||
#define CHAR_FWD (+1) | #define CHAR_FWD (+1) | ||||
#define CHAR_BACK (-1) | #define CHAR_BACK (-1) | ||||
#define MODE_INSERT 0 | #define MODE_INSERT 0 | ||||
#define MODE_REPLACE 1 | #define MODE_REPLACE 1 | ||||
#define MODE_REPLACE_1 2 | #define MODE_REPLACE_1 2 | ||||
protected int cv__isword(wint_t); | libedit_private int cv__isword(wint_t); | ||||
protected int cv__isWord(wint_t); | libedit_private int cv__isWord(wint_t); | ||||
protected void cv_delfini(EditLine *); | libedit_private void cv_delfini(EditLine *); | ||||
protected Char *cv__endword(Char *, Char *, int, int (*)(wint_t)); | libedit_private wchar_t *cv__endword(wchar_t *, wchar_t *, int, int (*)(wint_t)); | ||||
protected int ce__isword(wint_t); | libedit_private int ce__isword(wint_t); | ||||
protected void cv_undo(EditLine *); | libedit_private void cv_undo(EditLine *); | ||||
protected void cv_yank(EditLine *, const Char *, int); | libedit_private void cv_yank(EditLine *, const wchar_t *, int); | ||||
protected Char *cv_next_word(EditLine*, Char *, Char *, int, int (*)(wint_t)); | libedit_private wchar_t *cv_next_word(EditLine*, wchar_t *, wchar_t *, int, | ||||
protected Char *cv_prev_word(Char *, Char *, int, int (*)(wint_t)); | int (*)(wint_t)); | ||||
protected Char *c__next_word(Char *, Char *, int, int (*)(wint_t)); | libedit_private wchar_t *cv_prev_word(wchar_t *, wchar_t *, int, int (*)(wint_t)); | ||||
protected Char *c__prev_word(Char *, Char *, int, int (*)(wint_t)); | libedit_private wchar_t *c__next_word(wchar_t *, wchar_t *, int, int (*)(wint_t)); | ||||
protected void c_insert(EditLine *, int); | libedit_private wchar_t *c__prev_word(wchar_t *, wchar_t *, int, int (*)(wint_t)); | ||||
protected void c_delbefore(EditLine *, int); | libedit_private void c_insert(EditLine *, int); | ||||
protected void c_delbefore1(EditLine *); | libedit_private void c_delbefore(EditLine *, int); | ||||
protected void c_delafter(EditLine *, int); | libedit_private void c_delbefore1(EditLine *); | ||||
protected void c_delafter1(EditLine *); | libedit_private void c_delafter(EditLine *, int); | ||||
protected int c_gets(EditLine *, Char *, const Char *); | libedit_private void c_delafter1(EditLine *); | ||||
protected int c_hpos(EditLine *); | libedit_private int c_gets(EditLine *, wchar_t *, const wchar_t *); | ||||
libedit_private int c_hpos(EditLine *); | |||||
protected int ch_init(EditLine *); | libedit_private int ch_init(EditLine *); | ||||
protected void ch_reset(EditLine *, int); | libedit_private void ch_reset(EditLine *); | ||||
protected int ch_resizefun(EditLine *, el_zfunc_t, void *); | libedit_private int ch_resizefun(EditLine *, el_zfunc_t, void *); | ||||
protected int ch_aliasfun(EditLine *, el_afunc_t, void *); | libedit_private int ch_aliasfun(EditLine *, el_afunc_t, void *); | ||||
protected int ch_enlargebufs(EditLine *, size_t); | libedit_private int ch_enlargebufs(EditLine *, size_t); | ||||
protected void ch_end(EditLine *); | libedit_private void ch_end(EditLine *); | ||||
#endif /* _h_el_chared */ | #endif /* _h_el_chared */ |