samterm.h - sam - An updated version of the sam text editor. | |
git clone git://vernunftzentrum.de/sam.git | |
Log | |
Files | |
Refs | |
LICENSE | |
--- | |
samterm.h (5418B) | |
--- | |
1 /* Copyright (c) 1998 Lucent Technologies - All rights reserved. */ | |
2 #define SAMTERM | |
3 | |
4 #define RUNESIZE sizeof(wchar_t) | |
5 #define MAXFILES 256 | |
6 #define NL 5 | |
7 | |
8 enum{ | |
9 Cescape = Csysmax + 1, /* highlight recently typed text */ | |
10 Cscrolldown, /* scroll file down by screen */ | |
11 Cscrollup, /* scroll file up by screen */ | |
12 Cscrolldownline, /* scroll file down by line */ | |
13 Cscrollupline, /* scroll file up by line */ | |
14 Cjump, /* jump to/from command file */ | |
15 Ccharright, /* move dot right by character */ | |
16 Ccharleft, /* move dot left by character */ | |
17 Clinedown, /* move dot down by line */ | |
18 Clineup, /* move dot up by line */ | |
19 Cdelword, /* delete word to left of dot */ | |
20 Cdelbol, /* delete to beginning of line */ | |
21 Cdelbs, /* delete character to left of dot */ | |
22 Cdel, /* delete character to right of dot */ | |
23 Csnarf, /* snarf dot */ | |
24 Ccut, /* cut dot */ | |
25 Cpaste, /* paste from snarf buffer */ | |
26 Cexchange, /* exchange snarf buffer with OS */ | |
27 Ceol, /* move to beginning of line */ | |
28 Cbol, /* move to end of line */ | |
29 Ctab, /* insert a possibly expanded tab */ | |
30 Csend, /* send a command to the editor */ | |
31 Cwrite, /* write the current file */ | |
32 Clook, /* literal search */ | |
33 Csearch, /* search for regex again */ | |
34 Cmax /* invalid command */ | |
35 }; | |
36 | |
37 enum{ | |
38 Up, | |
39 Down | |
40 }; | |
41 | |
42 typedef struct Text Text; | |
43 typedef struct Section Section; | |
44 typedef struct Rasp Rasp; | |
45 | |
46 struct Section | |
47 { | |
48 int64_t nrunes; | |
49 wchar_t *text; /* if null, we haven't got it */ | |
50 Section *next; | |
51 }; | |
52 | |
53 struct Rasp | |
54 { | |
55 int64_t nrunes; | |
56 Section *sect; | |
57 }; | |
58 | |
59 #define Untagged ((uint16_t)65535) | |
60 | |
61 struct Text | |
62 { | |
63 Rasp rasp; | |
64 int16_t nwin; | |
65 int16_t front; /* input window */ | |
66 uint16_t tag; | |
67 char lock; | |
68 Flayer l[NL]; /* screen storage */ | |
69 }; | |
70 | |
71 enum Resource | |
72 { | |
73 Eextern = 0x08, | |
74 Ehost = 0x04, | |
75 RHost = Ehost, | |
76 RExtern = Eextern, | |
77 RKeyboard = Ekeyboard, | |
78 RMouse = Emouse | |
79 }; | |
80 | |
81 extern Text *text[]; | |
82 extern uint8_t *name[]; | |
83 extern uint16_t tag[]; | |
84 extern int nname; | |
85 extern unsigned int cursor; | |
86 extern Flayer *which; | |
87 extern Flayer *work; | |
88 extern Text cmd; | |
89 extern wchar_t *scratch; | |
90 extern int64_t nscralloc; | |
91 extern char lock; | |
92 extern bool hasunlocked; | |
93 extern int64_t snarflen; | |
94 extern Mouse mouse; | |
95 extern bool modified; | |
96 extern bool followfocus; | |
97 | |
98 wchar_t *stgettext(Flayer*, int64_t, uint64_t*); | |
99 void *alloc(uint64_t n); | |
100 | |
101 void iconinit(void); | |
102 void getscreen(int, char**); | |
103 void initio(void); | |
104 void setlock(void); | |
105 void outcmd(void); | |
106 void rinit(Rasp*); | |
107 void startnewfile(int, Text*); | |
108 void cursorset(Point); | |
109 void getmouse(void); | |
110 void mouseunblock(void); | |
111 void kbdblock(void); | |
112 int button(int but); | |
113 int waitforio(void); | |
114 int rcvchar(void); | |
115 int getch(void); | |
116 Keystroke qpeekc(void); | |
117 Keystroke kbdchar(void); | |
118 void mouseexit(void); | |
119 void cut(Text*, int, bool, bool); | |
120 void paste(Text*, int); | |
121 void snarf(Text*, int); | |
122 int center(Flayer*, int64_t); | |
123 int xmenuhit(int, Menu*); | |
124 void buttons(int); | |
125 int getr(Rectangle*); | |
126 void current(Flayer*); | |
127 void duplicate(Flayer*, Rectangle, XftFont*, int); | |
128 void startfile(Text*); | |
129 void panic(char*); | |
130 void closeup(Flayer*); | |
131 void Strgrow(wchar_t**, int64_t*, int); | |
132 int RESHAPED(void); | |
133 void reshape(void); | |
134 void rcv(void); | |
135 void type(Flayer*); | |
136 void menu2hit(void); | |
137 void menu3hit(void); | |
138 void scroll(Flayer*, int, int); | |
139 void hcheck(int); | |
140 void rclear(Rasp*); | |
141 int whichmenu(int); | |
142 void hcut(int, int64_t, int64_t); | |
143 void horigin(int, int64_t, Flayer *); | |
144 void hgrow(int, int64_t, int64_t, bool); | |
145 int hdata(int, int64_t, uint8_t*, int); | |
146 int hdatarune(int, int64_t, wchar_t*, int); | |
147 wchar_t *rload(Rasp*, uint64_t, uint64_t, uint64_t*); | |
148 void menuins(int, uint8_t*, Text*, int, int); | |
149 void menudel(int); | |
150 Text *sweeptext(int, int); | |
151 void setpat(char*); | |
152 bool haspat(void); | |
153 void scrdraw(Flayer*, int64_t tot); | |
154 int rcontig(Rasp*, uint64_t, uint64_t, bool); | |
155 int rmissing(Rasp*, uint64_t, uint64_t); | |
156 void rresize(Rasp *, int64_t, int64_t, int64_t); | |
157 void rdata(Rasp*, int64_t, int64_t, wchar_t*); | |
158 void rclean(Rasp*); | |
159 void scrorigin(Flayer*, int, int64_t); | |
160 int64_t scrtotal(Flayer*); | |
161 void flnewlyvisible(Flayer*); | |
162 char *rcvstring(void); | |
163 void Strcpy(wchar_t*, wchar_t*); | |
164 void Strncpy(wchar_t*, wchar_t*, int64_t); | |
165 void flushtyping(bool); | |
166 void dumperrmsg(int, int, int, int); | |
167 int screensize(int*,int*); | |
168 | |
169 #include "../sam/mesg.h" | |
170 | |
171 void outTs(Tmesg, int); | |
172 void outT0(Tmesg); | |
173 void outTl(Tmesg, int64_t); | |
174 void outTslS(Tmesg, int, int64_t, wchar_t*); | |
175 void outTslll(Tmesg, int, int64_t, int64_t, int64_t); | |
176 void outTsll(Tmesg, int, int64_t, int64_t); | |
177 void outTsl(Tmesg, int, int64_t); | |
178 void outTv(Tmesg, void*); | |
179 void outstart(Tmesg); | |
180 void outcopy(int, uint8_t*); | |
181 void outshort(int); | |
182 void outlong(int64_t); | |
183 void outsend(void); | |
184 int getlayer(const Flayer *l, const Text *t); | |
185 void loadrcfile(FILE *); | |
186 void installdefaultbindings(void); | |
187 void installdefaultchords(void); |