*** empty log message ***
[nvi.git] / common / cut.h
blob9d021e62f78d42a3316f760ad0bdcd2a2eaa45f6
1 /*-
2 * Copyright (c) 1991, 1993, 1994
3 * The Regents of the University of California. All rights reserved.
4 * Copyright (c) 1991, 1993, 1994, 1995, 1996
5 * Keith Bostic. All rights reserved.
7 * See the LICENSE file for redistribution information.
9 * $Id: cut.h,v 10.6 2000/04/21 19:00:33 skimo Exp $ (Berkeley) $Date: 2000/04/21 19:00:33 $
12 typedef struct _texth TEXTH; /* TEXT list head structure. */
13 CIRCLEQ_HEAD(_texth, _text);
15 /* Cut buffers. */
16 struct _cb {
17 LIST_ENTRY(_cb) q; /* Linked list of cut buffers. */
18 TEXTH textq; /* Linked list of TEXT structures. */
19 CHAR_T name; /* Cut buffer name. */
20 size_t len; /* Total length of cut text. */
22 #define CB_LMODE 0x01 /* Cut was in line mode. */
23 u_int8_t flags;
26 /* Lines/blocks of text. */
27 struct _text { /* Text: a linked list of lines. */
28 CIRCLEQ_ENTRY(_text) q; /* Linked list of text structures. */
29 char *lb; /* Line buffer. */
30 size_t lb_len; /* Line buffer length. */
31 size_t len; /* Line length. */
33 /* These fields are used by the vi text input routine. */
34 db_recno_t lno; /* 1-N: file line. */
35 size_t cno; /* 0-N: file character in line. */
36 size_t ai; /* 0-N: autoindent bytes. */
37 size_t insert; /* 0-N: bytes to insert (push). */
38 size_t offset; /* 0-N: initial, unerasable chars. */
39 size_t owrite; /* 0-N: chars to overwrite. */
40 size_t R_erase; /* 0-N: 'R' erase count. */
41 size_t sv_cno; /* 0-N: Saved line cursor. */
42 size_t sv_len; /* 0-N: Saved line length. */
45 * These fields returns information from the vi text input routine.
47 * The termination condition. Note, this field is only valid if the
48 * text input routine returns success.
49 * TERM_BS: User backspaced over the prompt.
50 * TERM_CEDIT: User entered <edit-char>.
51 * TERM_CR: User entered <carriage-return>; no data.
52 * TERM_ESC: User entered <escape>; no data.
53 * TERM_OK: Data available.
54 * TERM_SEARCH: Incremental search.
56 enum {
57 TERM_BS, TERM_CEDIT, TERM_CR, TERM_ESC, TERM_OK, TERM_SEARCH
58 } term;
62 * Get named buffer 'name'.
63 * Translate upper-case buffer names to lower-case buffer names.
65 #define CBNAME(sp, cbp, nch) { \
66 CHAR_T L__name; \
67 L__name = isupper(nch) ? tolower(nch) : (nch); \
68 for (cbp = sp->gp->cutq.lh_first; \
69 cbp != NULL; cbp = cbp->q.le_next) \
70 if (cbp->name == L__name) \
71 break; \
74 /* Flags to the cut() routine. */
75 #define CUT_LINEMODE 0x01 /* Cut in line mode. */
76 #define CUT_NUMOPT 0x02 /* Numeric buffer: optional. */
77 #define CUT_NUMREQ 0x04 /* Numeric buffer: required. */