~vlad-lesin/percona-server/mysql-5.0.33-original

« back to all changes in this revision

Viewing changes to cmd-line-utils/libedit/chared.h

  • Committer: Vlad Lesin
  • Date: 2012-07-31 09:21:34 UTC
  • Revision ID: vladislav.lesin@percona.com-20120731092134-zfodx022b7992wsi
VirginĀ 5.0.33

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*      $NetBSD: chared.h,v 1.14 2004/08/13 12:10:39 mycroft Exp $      */
 
2
 
 
3
/*-
 
4
 * Copyright (c) 1992, 1993
 
5
 *      The Regents of the University of California.  All rights reserved.
 
6
 *
 
7
 * This code is derived from software contributed to Berkeley by
 
8
 * Christos Zoulas of Cornell University.
 
9
 *
 
10
 * Redistribution and use in source and binary forms, with or without
 
11
 * modification, are permitted provided that the following conditions
 
12
 * are met:
 
13
 * 1. Redistributions of source code must retain the above copyright
 
14
 *    notice, this list of conditions and the following disclaimer.
 
15
 * 2. Redistributions in binary form must reproduce the above copyright
 
16
 *    notice, this list of conditions and the following disclaimer in the
 
17
 *    documentation and/or other materials provided with the distribution.
 
18
 * 3. Neither the name of the University nor the names of its contributors
 
19
 *    may be used to endorse or promote products derived from this software
 
20
 *    without specific prior written permission.
 
21
 *
 
22
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 
23
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 
24
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 
25
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 
26
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 
27
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 
28
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 
29
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 
30
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 
31
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 
32
 * SUCH DAMAGE.
 
33
 *
 
34
 *      @(#)chared.h    8.1 (Berkeley) 6/4/93
 
35
 */
 
36
 
 
37
/*
 
38
 * el.chared.h: Character editor interface
 
39
 */
 
40
#ifndef _h_el_chared
 
41
#define _h_el_chared
 
42
 
 
43
#include <ctype.h>
 
44
#include <string.h>
 
45
 
 
46
#include "histedit.h"
 
47
 
 
48
#define EL_MAXMACRO     10
 
49
 
 
50
/*
 
51
 * This is a issue of basic "vi" look-and-feel. Defining VI_MOVE works
 
52
 * like real vi: i.e. the transition from command<->insert modes moves
 
53
 * the cursor.
 
54
 *
 
55
 * On the other hand we really don't want to move the cursor, because
 
56
 * all the editing commands don't include the character under the cursor.
 
57
 * Probably the best fix is to make all the editing commands aware of
 
58
 * this fact.
 
59
 */
 
60
#define VI_MOVE
 
61
 
 
62
 
 
63
typedef struct c_macro_t {
 
64
        int       level;
 
65
        int       offset;
 
66
        char    **macro;
 
67
} c_macro_t;
 
68
 
 
69
/*
 
70
 * Undo information for vi - no undo in emacs (yet)
 
71
 */
 
72
typedef struct c_undo_t {
 
73
        int      len;                   /* length of saved line */
 
74
        int      cursor;                /* position of saved cursor */
 
75
        char    *buf;                   /* full saved text */
 
76
} c_undo_t;
 
77
 
 
78
/* redo for vi */
 
79
typedef struct c_redo_t {
 
80
        char    *buf;                   /* redo insert key sequence */
 
81
        char    *pos;
 
82
        char    *lim;
 
83
        el_action_t     cmd;            /* command to redo */
 
84
        char    ch;                     /* char that invoked it */
 
85
        int     count;
 
86
        int     action;                 /* from cv_action() */
 
87
} c_redo_t;
 
88
 
 
89
/*
 
90
 * Current action information for vi
 
91
 */
 
92
typedef struct c_vcmd_t {
 
93
        int      action;
 
94
        char    *pos;
 
95
} c_vcmd_t;
 
96
 
 
97
/*
 
98
 * Kill buffer for emacs
 
99
 */
 
100
typedef struct c_kill_t {
 
101
        char    *buf;
 
102
        char    *last;
 
103
        char    *mark;
 
104
} c_kill_t;
 
105
 
 
106
/*
 
107
 * Note that we use both data structures because the user can bind
 
108
 * commands from both editors!
 
109
 */
 
110
typedef struct el_chared_t {
 
111
        c_undo_t        c_undo;
 
112
        c_kill_t        c_kill;
 
113
        c_redo_t        c_redo;
 
114
        c_vcmd_t        c_vcmd;
 
115
        c_macro_t       c_macro;
 
116
} el_chared_t;
 
117
 
 
118
 
 
119
#define STReof          "^D\b\b"
 
120
#define STRQQ           "\"\""
 
121
 
 
122
#define isglob(a)       (strchr("*[]?", (a)) != NULL)
 
123
#define isword(a)       (isprint(a))
 
124
 
 
125
#define NOP             0x00
 
126
#define DELETE          0x01
 
127
#define INSERT          0x02
 
128
#define YANK            0x04
 
129
 
 
130
#define CHAR_FWD        (+1)
 
131
#define CHAR_BACK       (-1)
 
132
 
 
133
#define MODE_INSERT     0
 
134
#define MODE_REPLACE    1
 
135
#define MODE_REPLACE_1  2
 
136
 
 
137
#include "common.h"
 
138
#include "vi.h"
 
139
#include "emacs.h"
 
140
#include "search.h"
 
141
#include "fcns.h"
 
142
 
 
143
 
 
144
protected int    cv__isword(int);
 
145
protected int    cv__isWord(int);
 
146
protected void   cv_delfini(EditLine *);
 
147
protected char  *cv__endword(char *, char *, int, int (*)(int));
 
148
protected int    ce__isword(int);
 
149
protected void   cv_undo(EditLine *);
 
150
protected void   cv_yank(EditLine *, const char *, int);
 
151
protected char  *cv_next_word(EditLine*, char *, char *, int, int (*)(int));
 
152
protected char  *cv_prev_word(char *, char *, int, int (*)(int));
 
153
protected char  *c__next_word(char *, char *, int, int (*)(int));
 
154
protected char  *c__prev_word(char *, char *, int, int (*)(int));
 
155
protected void   c_insert(EditLine *, int);
 
156
protected void   c_delbefore(EditLine *, int);
 
157
protected void   c_delbefore1(EditLine *);
 
158
protected void   c_delafter(EditLine *, int);
 
159
protected void   c_delafter1(EditLine *);
 
160
protected int    c_gets(EditLine *, char *, const char *);
 
161
protected int    c_hpos(EditLine *);
 
162
 
 
163
protected int    ch_init(EditLine *);
 
164
protected void   ch_reset(EditLine *);
 
165
protected int    ch_enlargebufs(EditLine *, size_t);
 
166
protected void   ch_end(EditLine *);
 
167
 
 
168
#endif /* _h_el_chared */