allow machine-specific libkern sources
[unix-history] / usr / src / lib / libedit / chared.h
CommitLineData
dd2de05f
KB
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 *
b6dd18ed 10 * @(#)chared.h 5.3 (Berkeley) %G%
dd2de05f
KB
11 */
12
13/*
14 * el.chared.h: Character editor interface
15 */
16#ifndef _h_el_chared
17#define _h_el_chared
18
19#include <ctype.h>
20#include <string.h>
21
25b839a8 22#include "histedit.h"
dd2de05f
KB
23
24#define EL_MAXMACRO 10
25
26/*
27 * This is a issue of basic "vi" look-and-feel. Defining VI_MOVE works
28 * like real vi: i.e. the transition from command<->insert modes moves
29 * the cursor.
30 *
31 * On the other hand we really don't want to move the cursor, because
32 * all the editing commands don't include the character under the cursor.
33 * Probably the best fix is to make all the editing commands aware of
34 * this fact.
35 */
36#define VI_MOVE
37
38
39typedef struct c_macro_t {
40 int level;
41 char **macro;
b6dd18ed 42 char *nline;
dd2de05f
KB
43} c_macro_t;
44
45/*
46 * Undo information for both vi and emacs
47 */
48typedef struct c_undo_t {
49 int action;
50 int isize;
51 int dsize;
52 char *ptr;
53 char *buf;
54} c_undo_t;
55
56/*
57 * Current action information for vi
58 */
59typedef struct c_vcmd_t {
60 int action;
61 char *pos;
62 char *ins;
63} c_vcmd_t;
64
65/*
66 * Kill buffer for emacs
67 */
68typedef struct c_kill_t {
69 char *buf;
70 char *last;
71 char *mark;
72} c_kill_t;
73
74/*
75 * Note that we use both data structures because the user can bind
76 * commands from both editors!
77 */
78typedef struct el_chared_t {
79 c_undo_t c_undo;
80 c_kill_t c_kill;
81 c_vcmd_t c_vcmd;
82 c_macro_t c_macro;
83} el_chared_t;
84
85
86#define STReof "^D\b\b"
87#define STRQQ "\"\""
88
89#define isglob(a) (strchr("*[]?", (a)) != NULL)
90#define isword(a) (isprint(a))
91
92#define NOP 0x00
93#define DELETE 0x01
94#define INSERT 0x02
95#define CHANGE 0x04
96
97#define CHAR_FWD 0
98#define CHAR_BACK 1
99
100#define MODE_INSERT 0
101#define MODE_REPLACE 1
102#define MODE_REPLACE_1 2
103
b6dd18ed 104#include "common.h"
dd2de05f
KB
105#include "vi.h"
106#include "emacs.h"
dd2de05f
KB
107#include "search.h"
108#include "fcns.h"
109
110
111protected int cv__isword __P((int));
112protected void cv_delfini __P((EditLine *));
113protected char *cv__endword __P((char *, char *, int));
114protected int ce__isword __P((int));
115protected void cv_undo __P((EditLine *, int, int, char *));
116protected char *cv_next_word __P((EditLine*, char *, char *, int,
117 int (*)(int)));
118protected char *cv_prev_word __P((EditLine*, char *, char *, int,
119 int (*)(int)));
120protected char *c__next_word __P((char *, char *, int, int (*)(int)));
121protected char *c__prev_word __P((char *, char *, int, int (*)(int)));
122protected void c_insert __P((EditLine *, int));
123protected void c_delbefore __P((EditLine *, int));
124protected void c_delafter __P((EditLine *, int));
125protected int c_gets __P((EditLine *, char *));
126protected int c_hpos __P((EditLine *));
127
128protected int ch_init __P((EditLine *));
129protected void ch_reset __P((EditLine *));
130protected void ch_end __P((EditLine *));
131
132#endif /* _h_el_chared */