1/*
2 * Copyright (C) 1984-2023  Mark Nudelman
3 *
4 * You may distribute under the terms of either the GNU General Public
5 * License or the Less License, as specified in the README file.
6 *
7 * For more information, see the README file.
8 */
9
10
11#define MAX_USERCMD            1000
12#define MAX_CMDLEN             16
13
14#define A_B_LINE               2
15#define A_B_SCREEN             3
16#define A_B_SCROLL             4
17#define A_B_SEARCH             5
18#define A_DIGIT                6
19#define A_DISP_OPTION          7
20#define A_DEBUG                8
21#define A_EXAMINE              9
22#define A_FIRSTCMD             10
23#define A_FREPAINT             11
24#define A_F_LINE               12
25#define A_F_SCREEN             13
26#define A_F_SCROLL             14
27#define A_F_SEARCH             15
28#define A_GOEND                16
29#define A_GOLINE               17
30#define A_GOMARK               18
31#define A_HELP                 19
32#define A_NEXT_FILE            20
33#define A_PERCENT              21
34#define A_PREV_FILE            23
35#define A_QUIT                 24
36#define A_REPAINT              25
37#define A_SETMARK              26
38#define A_SHELL                27
39#define A_STAT                 28
40#define A_FF_LINE              29
41#define A_BF_LINE              30
42#define A_VERSION              31
43#define A_VISUAL               32
44#define A_F_WINDOW             33
45#define A_B_WINDOW             34
46#define A_F_BRACKET            35
47#define A_B_BRACKET            36
48#define A_PIPE                 37
49#define A_INDEX_FILE           38
50#define A_UNDO_SEARCH          39
51#define A_FF_SCREEN            40
52#define A_LSHIFT               41
53#define A_RSHIFT               42
54#define A_AGAIN_SEARCH         43
55#define A_T_AGAIN_SEARCH       44
56#define A_REVERSE_SEARCH       45
57#define A_T_REVERSE_SEARCH     46
58#define A_OPT_TOGGLE           47
59#define A_OPT_SET              48
60#define A_OPT_UNSET            49
61#define A_F_FOREVER            50
62#define A_GOPOS                51
63#define A_REMOVE_FILE          52
64#define A_NEXT_TAG             53
65#define A_PREV_TAG             54
66#define A_FILTER               55
67#define A_F_UNTIL_HILITE       56
68#define A_GOEND_BUF            57
69#define A_LLSHIFT              58
70#define A_RRSHIFT              59
71#define A_CLRMARK              62
72#define A_SETMARKBOT           63
73#define A_X11MOUSE_IN          64
74#define A_F_MOUSE              66
75#define A_B_MOUSE              67
76/* Note "X116" refers to extended (1006) X11 mouse reporting. */
77#define A_X116MOUSE_IN         68
78#define A_PSHELL               69
79#define A_CLR_SEARCH           70
80
81/* These values must not conflict with any A_* or EC_* value. */
82#define A_INVALID              100
83#define A_NOACTION             101
84#define A_UINVALID             102
85#define A_END_LIST             103
86#define A_SPECIAL_KEY          104
87#define A_PREFIX               105
88#define A_SKIP                 127
89
90#define A_EXTRA                0200
91
92
93/* Line editing characters */
94
95#define EC_BACKSPACE           1
96#define EC_LINEKILL            2
97#define EC_RIGHT               3
98#define EC_LEFT                4
99#define EC_W_LEFT              5
100#define EC_W_RIGHT             6
101#define EC_INSERT              7
102#define EC_DELETE              8
103#define EC_HOME                9
104#define EC_END                 10
105#define EC_W_BACKSPACE         11
106#define EC_W_DELETE            12
107#define EC_UP                  13
108#define EC_DOWN                14
109#define EC_EXPAND              15
110#define EC_F_COMPLETE          17
111#define EC_B_COMPLETE          18
112#define EC_LITERAL             19
113#define EC_ABORT               20
114#define EC_X11MOUSE            21
115#define EC_X116MOUSE           22
116
117#define EC_UINVALID            102
118
119/* Flags for editchar() */
120#define ECF_PEEK                01
121#define ECF_NOHISTORY           02
122#define ECF_NOCOMPLETE          04
123#define ECF_NORIGHTLEFT         010
124
125/* Environment variable stuff */
126#define EV_OK                  01
127
128/* Special keys (keys which output different strings on different terminals) */
129#define SK_SPECIAL_KEY         CONTROL('K')
130#define SK_RIGHT_ARROW         1
131#define SK_LEFT_ARROW          2
132#define SK_UP_ARROW            3
133#define SK_DOWN_ARROW          4
134#define SK_PAGE_UP             5
135#define SK_PAGE_DOWN           6
136#define SK_HOME                7
137#define SK_END                 8
138#define SK_DELETE              9
139#define SK_INSERT              10
140#define SK_CTL_LEFT_ARROW      11
141#define SK_CTL_RIGHT_ARROW     12
142#define SK_CTL_DELETE          13
143#define SK_F1                  14
144#define SK_BACKTAB             15
145#define SK_CTL_BACKSPACE       16
146#define SK_BACKSPACE           17
147#define SK_CONTROL_K           40
148