Blame


1 b3994ec5 2003-12-11 devnull enum
2 b3994ec5 2003-12-11 devnull {
3 b3994ec5 2003-12-11 devnull Qdir,
4 b3994ec5 2003-12-11 devnull Qacme,
5 b3994ec5 2003-12-11 devnull Qcons,
6 b3994ec5 2003-12-11 devnull Qconsctl,
7 b3994ec5 2003-12-11 devnull Qdraw,
8 b3994ec5 2003-12-11 devnull Qeditout,
9 b3994ec5 2003-12-11 devnull Qindex,
10 b3994ec5 2003-12-11 devnull Qlabel,
11 b3994ec5 2003-12-11 devnull Qnew,
12 b3994ec5 2003-12-11 devnull
13 b3994ec5 2003-12-11 devnull QWaddr,
14 b3994ec5 2003-12-11 devnull QWbody,
15 b3994ec5 2003-12-11 devnull QWctl,
16 b3994ec5 2003-12-11 devnull QWdata,
17 b3994ec5 2003-12-11 devnull QWeditout,
18 9d01e221 2005-01-30 devnull QWerrors,
19 b3994ec5 2003-12-11 devnull QWevent,
20 b3994ec5 2003-12-11 devnull QWrdsel,
21 b3994ec5 2003-12-11 devnull QWwrsel,
22 b3994ec5 2003-12-11 devnull QWtag,
23 012a8a02 2004-10-22 devnull QWxdata,
24 b3994ec5 2003-12-11 devnull QMAX,
25 b3994ec5 2003-12-11 devnull };
26 b3994ec5 2003-12-11 devnull
27 b3994ec5 2003-12-11 devnull enum
28 b3994ec5 2003-12-11 devnull {
29 b3994ec5 2003-12-11 devnull Blockincr = 256,
30 b3994ec5 2003-12-11 devnull Maxblock = 8*1024,
31 b3994ec5 2003-12-11 devnull NRange = 10,
32 b3994ec5 2003-12-11 devnull Infinity = 0x7FFFFFFF, /* huge value for regexp address */
33 b3994ec5 2003-12-11 devnull };
34 b3994ec5 2003-12-11 devnull
35 012a8a02 2004-10-22 devnull #define Buffer AcmeBuffer
36 b3994ec5 2003-12-11 devnull typedef struct Block Block;
37 b3994ec5 2003-12-11 devnull typedef struct Buffer Buffer;
38 b3994ec5 2003-12-11 devnull typedef struct Command Command;
39 b3994ec5 2003-12-11 devnull typedef struct Column Column;
40 b3994ec5 2003-12-11 devnull typedef struct Dirlist Dirlist;
41 b3994ec5 2003-12-11 devnull typedef struct Dirtab Dirtab;
42 b3994ec5 2003-12-11 devnull typedef struct Disk Disk;
43 b3994ec5 2003-12-11 devnull typedef struct Expand Expand;
44 b3994ec5 2003-12-11 devnull typedef struct Fid Fid;
45 b3994ec5 2003-12-11 devnull typedef struct File File;
46 b3994ec5 2003-12-11 devnull typedef struct Elog Elog;
47 b3994ec5 2003-12-11 devnull typedef struct Mntdir Mntdir;
48 b3994ec5 2003-12-11 devnull typedef struct Range Range;
49 b3994ec5 2003-12-11 devnull typedef struct Rangeset Rangeset;
50 b3994ec5 2003-12-11 devnull typedef struct Reffont Reffont;
51 b3994ec5 2003-12-11 devnull typedef struct Row Row;
52 b3994ec5 2003-12-11 devnull typedef struct Runestr Runestr;
53 b3994ec5 2003-12-11 devnull typedef struct Text Text;
54 b3994ec5 2003-12-11 devnull typedef struct Timer Timer;
55 b3994ec5 2003-12-11 devnull typedef struct Window Window;
56 b3994ec5 2003-12-11 devnull typedef struct Xfid Xfid;
57 b3994ec5 2003-12-11 devnull
58 b3994ec5 2003-12-11 devnull struct Runestr
59 b3994ec5 2003-12-11 devnull {
60 b3994ec5 2003-12-11 devnull Rune *r;
61 b3994ec5 2003-12-11 devnull int nr;
62 b3994ec5 2003-12-11 devnull };
63 b3994ec5 2003-12-11 devnull
64 b3994ec5 2003-12-11 devnull struct Range
65 b3994ec5 2003-12-11 devnull {
66 b3994ec5 2003-12-11 devnull int q0;
67 b3994ec5 2003-12-11 devnull int q1;
68 b3994ec5 2003-12-11 devnull };
69 b3994ec5 2003-12-11 devnull
70 b3994ec5 2003-12-11 devnull struct Block
71 b3994ec5 2003-12-11 devnull {
72 b3994ec5 2003-12-11 devnull uint addr; /* disk address in bytes */
73 b3994ec5 2003-12-11 devnull union
74 b3994ec5 2003-12-11 devnull {
75 b3994ec5 2003-12-11 devnull uint n; /* number of used runes in block */
76 b3994ec5 2003-12-11 devnull Block *next; /* pointer to next in free list */
77 b3994ec5 2003-12-11 devnull } u;
78 b3994ec5 2003-12-11 devnull };
79 b3994ec5 2003-12-11 devnull
80 b3994ec5 2003-12-11 devnull struct Disk
81 b3994ec5 2003-12-11 devnull {
82 b3994ec5 2003-12-11 devnull int fd;
83 b3994ec5 2003-12-11 devnull uint addr; /* length of temp file */
84 b3994ec5 2003-12-11 devnull Block *free[Maxblock/Blockincr+1];
85 b3994ec5 2003-12-11 devnull };
86 b3994ec5 2003-12-11 devnull
87 b3994ec5 2003-12-11 devnull Disk* diskinit(void);
88 b3994ec5 2003-12-11 devnull Block* disknewblock(Disk*, uint);
89 b3994ec5 2003-12-11 devnull void diskrelease(Disk*, Block*);
90 b3994ec5 2003-12-11 devnull void diskread(Disk*, Block*, Rune*, uint);
91 b3994ec5 2003-12-11 devnull void diskwrite(Disk*, Block**, Rune*, uint);
92 b3994ec5 2003-12-11 devnull
93 b3994ec5 2003-12-11 devnull struct Buffer
94 b3994ec5 2003-12-11 devnull {
95 b3994ec5 2003-12-11 devnull uint nc;
96 b3994ec5 2003-12-11 devnull Rune *c; /* cache */
97 b3994ec5 2003-12-11 devnull uint cnc; /* bytes in cache */
98 b3994ec5 2003-12-11 devnull uint cmax; /* size of allocated cache */
99 b3994ec5 2003-12-11 devnull uint cq; /* position of cache */
100 b3994ec5 2003-12-11 devnull int cdirty; /* cache needs to be written */
101 b3994ec5 2003-12-11 devnull uint cbi; /* index of cache Block */
102 b3994ec5 2003-12-11 devnull Block **bl; /* array of blocks */
103 b3994ec5 2003-12-11 devnull uint nbl; /* number of blocks */
104 b3994ec5 2003-12-11 devnull };
105 b3994ec5 2003-12-11 devnull void bufinsert(Buffer*, uint, Rune*, uint);
106 b3994ec5 2003-12-11 devnull void bufdelete(Buffer*, uint, uint);
107 b3994ec5 2003-12-11 devnull uint bufload(Buffer*, uint, int, int*);
108 b3994ec5 2003-12-11 devnull void bufread(Buffer*, uint, Rune*, uint);
109 b3994ec5 2003-12-11 devnull void bufclose(Buffer*);
110 b3994ec5 2003-12-11 devnull void bufreset(Buffer*);
111 b3994ec5 2003-12-11 devnull
112 b3994ec5 2003-12-11 devnull struct Elog
113 b3994ec5 2003-12-11 devnull {
114 b3994ec5 2003-12-11 devnull short type; /* Delete, Insert, Filename */
115 b3994ec5 2003-12-11 devnull uint q0; /* location of change (unused in f) */
116 b3994ec5 2003-12-11 devnull uint nd; /* number of deleted characters */
117 b3994ec5 2003-12-11 devnull uint nr; /* # runes in string or file name */
118 b3994ec5 2003-12-11 devnull Rune *r;
119 b3994ec5 2003-12-11 devnull };
120 b3994ec5 2003-12-11 devnull void elogterm(File*);
121 b3994ec5 2003-12-11 devnull void elogclose(File*);
122 b3994ec5 2003-12-11 devnull void eloginsert(File*, int, Rune*, int);
123 b3994ec5 2003-12-11 devnull void elogdelete(File*, int, int);
124 b3994ec5 2003-12-11 devnull void elogreplace(File*, int, int, Rune*, int);
125 b3994ec5 2003-12-11 devnull void elogapply(File*);
126 b3994ec5 2003-12-11 devnull
127 b3994ec5 2003-12-11 devnull struct File
128 b3994ec5 2003-12-11 devnull {
129 b3994ec5 2003-12-11 devnull Buffer b; /* the data */
130 b3994ec5 2003-12-11 devnull Buffer delta; /* transcript of changes */
131 b3994ec5 2003-12-11 devnull Buffer epsilon; /* inversion of delta for redo */
132 b3994ec5 2003-12-11 devnull Buffer *elogbuf; /* log of pending editor changes */
133 b3994ec5 2003-12-11 devnull Elog elog; /* current pending change */
134 b3994ec5 2003-12-11 devnull Rune *name; /* name of associated file */
135 b3994ec5 2003-12-11 devnull int nname; /* size of name */
136 b3994ec5 2003-12-11 devnull uvlong qidpath; /* of file when read */
137 b3994ec5 2003-12-11 devnull uint mtime; /* of file when read */
138 b3994ec5 2003-12-11 devnull int dev; /* of file when read */
139 b3994ec5 2003-12-11 devnull int unread; /* file has not been read from disk */
140 b3994ec5 2003-12-11 devnull int editclean; /* mark clean after edit command */
141 b3994ec5 2003-12-11 devnull
142 b3994ec5 2003-12-11 devnull int seq; /* if seq==0, File acts like Buffer */
143 b3994ec5 2003-12-11 devnull int mod;
144 b3994ec5 2003-12-11 devnull Text *curtext; /* most recently used associated text */
145 b3994ec5 2003-12-11 devnull Text **text; /* list of associated texts */
146 b3994ec5 2003-12-11 devnull int ntext;
147 b3994ec5 2003-12-11 devnull int dumpid; /* used in dumping zeroxed windows */
148 b3994ec5 2003-12-11 devnull };
149 b3994ec5 2003-12-11 devnull File* fileaddtext(File*, Text*);
150 b3994ec5 2003-12-11 devnull void fileclose(File*);
151 b3994ec5 2003-12-11 devnull void filedelete(File*, uint, uint);
152 b3994ec5 2003-12-11 devnull void filedeltext(File*, Text*);
153 b3994ec5 2003-12-11 devnull void fileinsert(File*, uint, Rune*, uint);
154 b3994ec5 2003-12-11 devnull uint fileload(File*, uint, int, int*);
155 b3994ec5 2003-12-11 devnull void filemark(File*);
156 b3994ec5 2003-12-11 devnull void filereset(File*);
157 b3994ec5 2003-12-11 devnull void filesetname(File*, Rune*, int);
158 b3994ec5 2003-12-11 devnull void fileundelete(File*, Buffer*, uint, uint);
159 b3994ec5 2003-12-11 devnull void fileuninsert(File*, Buffer*, uint, uint);
160 b3994ec5 2003-12-11 devnull void fileunsetname(File*, Buffer*);
161 b3994ec5 2003-12-11 devnull void fileundo(File*, int, uint*, uint*);
162 b3994ec5 2003-12-11 devnull uint fileredoseq(File*);
163 b3994ec5 2003-12-11 devnull
164 b3994ec5 2003-12-11 devnull enum /* Text.what */
165 b3994ec5 2003-12-11 devnull {
166 b3994ec5 2003-12-11 devnull Columntag,
167 b3994ec5 2003-12-11 devnull Rowtag,
168 b3994ec5 2003-12-11 devnull Tag,
169 b3994ec5 2003-12-11 devnull Body,
170 b3994ec5 2003-12-11 devnull };
171 b3994ec5 2003-12-11 devnull
172 b3994ec5 2003-12-11 devnull struct Text
173 b3994ec5 2003-12-11 devnull {
174 b3994ec5 2003-12-11 devnull File *file;
175 b3994ec5 2003-12-11 devnull Frame fr;
176 b3994ec5 2003-12-11 devnull Reffont *reffont;
177 b3994ec5 2003-12-11 devnull uint org;
178 b3994ec5 2003-12-11 devnull uint q0;
179 b3994ec5 2003-12-11 devnull uint q1;
180 b3994ec5 2003-12-11 devnull int what;
181 b3994ec5 2003-12-11 devnull int tabstop;
182 b3994ec5 2003-12-11 devnull Window *w;
183 b3994ec5 2003-12-11 devnull Rectangle scrollr;
184 b3994ec5 2003-12-11 devnull Rectangle lastsr;
185 b3994ec5 2003-12-11 devnull Rectangle all;
186 b3994ec5 2003-12-11 devnull Row *row;
187 b3994ec5 2003-12-11 devnull Column *col;
188 b3994ec5 2003-12-11 devnull
189 b3994ec5 2003-12-11 devnull uint eq0; /* start of typing for ESC */
190 b3994ec5 2003-12-11 devnull uint cq0; /* cache position */
191 b3994ec5 2003-12-11 devnull int ncache; /* storage for insert */
192 b3994ec5 2003-12-11 devnull int ncachealloc;
193 b3994ec5 2003-12-11 devnull Rune *cache;
194 b3994ec5 2003-12-11 devnull int nofill;
195 b3994ec5 2003-12-11 devnull };
196 b3994ec5 2003-12-11 devnull
197 b3994ec5 2003-12-11 devnull uint textbacknl(Text*, uint, uint);
198 b3994ec5 2003-12-11 devnull uint textbsinsert(Text*, uint, Rune*, uint, int, int*);
199 b3994ec5 2003-12-11 devnull int textbswidth(Text*, Rune);
200 b3994ec5 2003-12-11 devnull int textclickmatch(Text*, int, int, int, uint*);
201 b3994ec5 2003-12-11 devnull void textclose(Text*);
202 b3994ec5 2003-12-11 devnull void textcolumnate(Text*, Dirlist**, int);
203 b3994ec5 2003-12-11 devnull void textcommit(Text*, int);
204 b3994ec5 2003-12-11 devnull void textconstrain(Text*, uint, uint, uint*, uint*);
205 b3994ec5 2003-12-11 devnull void textdelete(Text*, uint, uint, int);
206 b3994ec5 2003-12-11 devnull void textdoubleclick(Text*, uint*, uint*);
207 b3994ec5 2003-12-11 devnull void textfill(Text*);
208 b3994ec5 2003-12-11 devnull void textframescroll(Text*, int);
209 b3994ec5 2003-12-11 devnull void textinit(Text*, File*, Rectangle, Reffont*, Image**);
210 b3994ec5 2003-12-11 devnull void textinsert(Text*, uint, Rune*, uint, int);
211 b3994ec5 2003-12-11 devnull uint textload(Text*, uint, char*, int);
212 b3994ec5 2003-12-11 devnull Rune textreadc(Text*, uint);
213 b3994ec5 2003-12-11 devnull void textredraw(Text*, Rectangle, Font*, Image*, int);
214 b3994ec5 2003-12-11 devnull void textreset(Text*);
215 b3994ec5 2003-12-11 devnull int textresize(Text*, Rectangle);
216 b3994ec5 2003-12-11 devnull void textscrdraw(Text*);
217 b3994ec5 2003-12-11 devnull void textscroll(Text*, int);
218 b3994ec5 2003-12-11 devnull void textselect(Text*);
219 b3994ec5 2003-12-11 devnull int textselect2(Text*, uint*, uint*, Text**);
220 b3994ec5 2003-12-11 devnull int textselect23(Text*, uint*, uint*, Image*, int);
221 b3994ec5 2003-12-11 devnull int textselect3(Text*, uint*, uint*);
222 b3994ec5 2003-12-11 devnull void textsetorigin(Text*, uint, int);
223 b3994ec5 2003-12-11 devnull void textsetselect(Text*, uint, uint);
224 b3994ec5 2003-12-11 devnull void textshow(Text*, uint, uint, int);
225 b3994ec5 2003-12-11 devnull void texttype(Text*, Rune);
226 b3994ec5 2003-12-11 devnull
227 b3994ec5 2003-12-11 devnull struct Window
228 b3994ec5 2003-12-11 devnull {
229 b3994ec5 2003-12-11 devnull QLock lk;
230 b3994ec5 2003-12-11 devnull Ref ref;
231 b3994ec5 2003-12-11 devnull Text tag;
232 b3994ec5 2003-12-11 devnull Text body;
233 b3994ec5 2003-12-11 devnull Rectangle r;
234 b3994ec5 2003-12-11 devnull uchar isdir;
235 b3994ec5 2003-12-11 devnull uchar isscratch;
236 b3994ec5 2003-12-11 devnull uchar filemenu;
237 b3994ec5 2003-12-11 devnull uchar dirty;
238 5a8e63b2 2004-02-29 devnull uchar autoindent;
239 b3994ec5 2003-12-11 devnull int id;
240 b3994ec5 2003-12-11 devnull Range addr;
241 b3994ec5 2003-12-11 devnull Range limit;
242 b3994ec5 2003-12-11 devnull uchar nopen[QMAX];
243 b3994ec5 2003-12-11 devnull uchar nomark;
244 b3994ec5 2003-12-11 devnull uchar noscroll;
245 b3994ec5 2003-12-11 devnull Range wrselrange;
246 b3994ec5 2003-12-11 devnull int rdselfd;
247 b3994ec5 2003-12-11 devnull int neditwrsel;
248 b3994ec5 2003-12-11 devnull Column *col;
249 b3994ec5 2003-12-11 devnull Xfid *eventx;
250 b3994ec5 2003-12-11 devnull char *events;
251 b3994ec5 2003-12-11 devnull int nevents;
252 b3994ec5 2003-12-11 devnull int owner;
253 b3994ec5 2003-12-11 devnull int maxlines;
254 b3994ec5 2003-12-11 devnull Dirlist **dlp;
255 b3994ec5 2003-12-11 devnull int ndl;
256 b3994ec5 2003-12-11 devnull int putseq;
257 b3994ec5 2003-12-11 devnull int nincl;
258 b3994ec5 2003-12-11 devnull Rune **incl;
259 b3994ec5 2003-12-11 devnull Reffont *reffont;
260 b3994ec5 2003-12-11 devnull QLock ctllock;
261 b3994ec5 2003-12-11 devnull uint ctlfid;
262 b3994ec5 2003-12-11 devnull char *dumpstr;
263 b3994ec5 2003-12-11 devnull char *dumpdir;
264 b3994ec5 2003-12-11 devnull int dumpid;
265 b3994ec5 2003-12-11 devnull int utflastqid;
266 b3994ec5 2003-12-11 devnull int utflastboff;
267 b3994ec5 2003-12-11 devnull int utflastq;
268 b3994ec5 2003-12-11 devnull };
269 b3994ec5 2003-12-11 devnull
270 b3994ec5 2003-12-11 devnull void wininit(Window*, Window*, Rectangle);
271 b3994ec5 2003-12-11 devnull void winlock(Window*, int);
272 b3994ec5 2003-12-11 devnull void winlock1(Window*, int);
273 b3994ec5 2003-12-11 devnull void winunlock(Window*);
274 b3994ec5 2003-12-11 devnull void wintype(Window*, Text*, Rune);
275 b3994ec5 2003-12-11 devnull void winundo(Window*, int);
276 b3994ec5 2003-12-11 devnull void winsetname(Window*, Rune*, int);
277 b3994ec5 2003-12-11 devnull void winsettag(Window*);
278 b3994ec5 2003-12-11 devnull void winsettag1(Window*);
279 b3994ec5 2003-12-11 devnull void wincommit(Window*, Text*);
280 b3994ec5 2003-12-11 devnull int winresize(Window*, Rectangle, int);
281 b3994ec5 2003-12-11 devnull void winclose(Window*);
282 b3994ec5 2003-12-11 devnull void windelete(Window*);
283 b3994ec5 2003-12-11 devnull int winclean(Window*, int);
284 b3994ec5 2003-12-11 devnull void windirfree(Window*);
285 b3994ec5 2003-12-11 devnull void winevent(Window*, char*, ...);
286 b3994ec5 2003-12-11 devnull void winmousebut(Window*);
287 b3994ec5 2003-12-11 devnull void winaddincl(Window*, Rune*, int);
288 b3994ec5 2003-12-11 devnull void wincleartag(Window*);
289 627bae9c 2005-01-04 devnull char *winctlprint(Window*, char*, int);
290 b3994ec5 2003-12-11 devnull
291 b3994ec5 2003-12-11 devnull struct Column
292 b3994ec5 2003-12-11 devnull {
293 b3994ec5 2003-12-11 devnull Rectangle r;
294 b3994ec5 2003-12-11 devnull Text tag;
295 b3994ec5 2003-12-11 devnull Row *row;
296 b3994ec5 2003-12-11 devnull Window **w;
297 b3994ec5 2003-12-11 devnull int nw;
298 b3994ec5 2003-12-11 devnull int safe;
299 b3994ec5 2003-12-11 devnull };
300 b3994ec5 2003-12-11 devnull
301 b3994ec5 2003-12-11 devnull void colinit(Column*, Rectangle);
302 b3994ec5 2003-12-11 devnull Window* coladd(Column*, Window*, Window*, int);
303 b3994ec5 2003-12-11 devnull void colclose(Column*, Window*, int);
304 b3994ec5 2003-12-11 devnull void colcloseall(Column*);
305 b3994ec5 2003-12-11 devnull void colresize(Column*, Rectangle);
306 b3994ec5 2003-12-11 devnull Text* colwhich(Column*, Point);
307 b3994ec5 2003-12-11 devnull void coldragwin(Column*, Window*, int);
308 b3994ec5 2003-12-11 devnull void colgrow(Column*, Window*, int);
309 b3994ec5 2003-12-11 devnull int colclean(Column*);
310 b3994ec5 2003-12-11 devnull void colsort(Column*);
311 b3994ec5 2003-12-11 devnull void colmousebut(Column*);
312 b3994ec5 2003-12-11 devnull
313 b3994ec5 2003-12-11 devnull struct Row
314 b3994ec5 2003-12-11 devnull {
315 b3994ec5 2003-12-11 devnull QLock lk;
316 b3994ec5 2003-12-11 devnull Rectangle r;
317 b3994ec5 2003-12-11 devnull Text tag;
318 b3994ec5 2003-12-11 devnull Column **col;
319 b3994ec5 2003-12-11 devnull int ncol;
320 b3994ec5 2003-12-11 devnull
321 b3994ec5 2003-12-11 devnull };
322 b3994ec5 2003-12-11 devnull
323 b3994ec5 2003-12-11 devnull void rowinit(Row*, Rectangle);
324 b3994ec5 2003-12-11 devnull Column* rowadd(Row*, Column *c, int);
325 b3994ec5 2003-12-11 devnull void rowclose(Row*, Column*, int);
326 b3994ec5 2003-12-11 devnull Text* rowwhich(Row*, Point);
327 b3994ec5 2003-12-11 devnull Column* rowwhichcol(Row*, Point);
328 b3994ec5 2003-12-11 devnull void rowresize(Row*, Rectangle);
329 b3994ec5 2003-12-11 devnull Text* rowtype(Row*, Rune, Point);
330 b3994ec5 2003-12-11 devnull void rowdragcol(Row*, Column*, int but);
331 b3994ec5 2003-12-11 devnull int rowclean(Row*);
332 b3994ec5 2003-12-11 devnull void rowdump(Row*, char*);
333 6d7fdb24 2004-12-27 devnull int rowload(Row*, char*, int);
334 b3994ec5 2003-12-11 devnull void rowloadfonts(char*);
335 b3994ec5 2003-12-11 devnull
336 b3994ec5 2003-12-11 devnull struct Timer
337 b3994ec5 2003-12-11 devnull {
338 b3994ec5 2003-12-11 devnull int dt;
339 b3994ec5 2003-12-11 devnull int cancel;
340 b3994ec5 2003-12-11 devnull Channel *c; /* chan(int) */
341 b3994ec5 2003-12-11 devnull Timer *next;
342 b3994ec5 2003-12-11 devnull };
343 b3994ec5 2003-12-11 devnull
344 b3994ec5 2003-12-11 devnull struct Command
345 b3994ec5 2003-12-11 devnull {
346 b3994ec5 2003-12-11 devnull int pid;
347 b3994ec5 2003-12-11 devnull Rune *name;
348 b3994ec5 2003-12-11 devnull int nname;
349 b3994ec5 2003-12-11 devnull char *text;
350 b3994ec5 2003-12-11 devnull char **av;
351 b3994ec5 2003-12-11 devnull int iseditcmd;
352 b3994ec5 2003-12-11 devnull Mntdir *md;
353 b3994ec5 2003-12-11 devnull Command *next;
354 b3994ec5 2003-12-11 devnull };
355 b3994ec5 2003-12-11 devnull
356 b3994ec5 2003-12-11 devnull struct Dirtab
357 b3994ec5 2003-12-11 devnull {
358 b3994ec5 2003-12-11 devnull char *name;
359 b3994ec5 2003-12-11 devnull uchar type;
360 b3994ec5 2003-12-11 devnull uint qid;
361 b3994ec5 2003-12-11 devnull uint perm;
362 b3994ec5 2003-12-11 devnull };
363 b3994ec5 2003-12-11 devnull
364 b3994ec5 2003-12-11 devnull struct Mntdir
365 b3994ec5 2003-12-11 devnull {
366 b3994ec5 2003-12-11 devnull int id;
367 b3994ec5 2003-12-11 devnull int ref;
368 b3994ec5 2003-12-11 devnull Rune *dir;
369 b3994ec5 2003-12-11 devnull int ndir;
370 b3994ec5 2003-12-11 devnull Mntdir *next;
371 b3994ec5 2003-12-11 devnull int nincl;
372 b3994ec5 2003-12-11 devnull Rune **incl;
373 b3994ec5 2003-12-11 devnull };
374 b3994ec5 2003-12-11 devnull
375 b3994ec5 2003-12-11 devnull struct Fid
376 b3994ec5 2003-12-11 devnull {
377 b3994ec5 2003-12-11 devnull int fid;
378 b3994ec5 2003-12-11 devnull int busy;
379 b3994ec5 2003-12-11 devnull int open;
380 b3994ec5 2003-12-11 devnull Qid qid;
381 b3994ec5 2003-12-11 devnull Window *w;
382 b3994ec5 2003-12-11 devnull Dirtab *dir;
383 b3994ec5 2003-12-11 devnull Fid *next;
384 b3994ec5 2003-12-11 devnull Mntdir *mntdir;
385 b3994ec5 2003-12-11 devnull int nrpart;
386 b3994ec5 2003-12-11 devnull uchar rpart[UTFmax];
387 b3994ec5 2003-12-11 devnull };
388 b3994ec5 2003-12-11 devnull
389 b3994ec5 2003-12-11 devnull
390 b3994ec5 2003-12-11 devnull struct Xfid
391 b3994ec5 2003-12-11 devnull {
392 b3994ec5 2003-12-11 devnull void *arg; /* args to xfidinit */
393 b3994ec5 2003-12-11 devnull Fcall fcall;
394 b3994ec5 2003-12-11 devnull Xfid *next;
395 b3994ec5 2003-12-11 devnull Channel *c; /* chan(void(*)(Xfid*)) */
396 b3994ec5 2003-12-11 devnull Fid *f;
397 b3994ec5 2003-12-11 devnull uchar *buf;
398 b3994ec5 2003-12-11 devnull int flushed;
399 b3994ec5 2003-12-11 devnull
400 b3994ec5 2003-12-11 devnull };
401 b3994ec5 2003-12-11 devnull
402 b3994ec5 2003-12-11 devnull void xfidctl(void *);
403 b3994ec5 2003-12-11 devnull void xfidflush(Xfid*);
404 b3994ec5 2003-12-11 devnull void xfidopen(Xfid*);
405 b3994ec5 2003-12-11 devnull void xfidclose(Xfid*);
406 b3994ec5 2003-12-11 devnull void xfidread(Xfid*);
407 b3994ec5 2003-12-11 devnull void xfidwrite(Xfid*);
408 b3994ec5 2003-12-11 devnull void xfidctlwrite(Xfid*, Window*);
409 b3994ec5 2003-12-11 devnull void xfideventread(Xfid*, Window*);
410 b3994ec5 2003-12-11 devnull void xfideventwrite(Xfid*, Window*);
411 b3994ec5 2003-12-11 devnull void xfidindexread(Xfid*);
412 b3994ec5 2003-12-11 devnull void xfidutfread(Xfid*, Text*, uint, int);
413 b3994ec5 2003-12-11 devnull int xfidruneread(Xfid*, Text*, uint, uint);
414 b3994ec5 2003-12-11 devnull
415 b3994ec5 2003-12-11 devnull struct Reffont
416 b3994ec5 2003-12-11 devnull {
417 b3994ec5 2003-12-11 devnull Ref ref;
418 b3994ec5 2003-12-11 devnull Font *f;
419 b3994ec5 2003-12-11 devnull
420 b3994ec5 2003-12-11 devnull };
421 b3994ec5 2003-12-11 devnull Reffont *rfget(int, int, int, char*);
422 b3994ec5 2003-12-11 devnull void rfclose(Reffont*);
423 b3994ec5 2003-12-11 devnull
424 b3994ec5 2003-12-11 devnull struct Rangeset
425 b3994ec5 2003-12-11 devnull {
426 b3994ec5 2003-12-11 devnull Range r[NRange];
427 b3994ec5 2003-12-11 devnull };
428 b3994ec5 2003-12-11 devnull
429 b3994ec5 2003-12-11 devnull struct Dirlist
430 b3994ec5 2003-12-11 devnull {
431 b3994ec5 2003-12-11 devnull Rune *r;
432 b3994ec5 2003-12-11 devnull int nr;
433 b3994ec5 2003-12-11 devnull int wid;
434 b3994ec5 2003-12-11 devnull };
435 b3994ec5 2003-12-11 devnull
436 b3994ec5 2003-12-11 devnull struct Expand
437 b3994ec5 2003-12-11 devnull {
438 b3994ec5 2003-12-11 devnull uint q0;
439 b3994ec5 2003-12-11 devnull uint q1;
440 b3994ec5 2003-12-11 devnull Rune *name;
441 b3994ec5 2003-12-11 devnull int nname;
442 b3994ec5 2003-12-11 devnull char *bname;
443 b3994ec5 2003-12-11 devnull int jump;
444 b3994ec5 2003-12-11 devnull union{
445 b3994ec5 2003-12-11 devnull Text *at;
446 b3994ec5 2003-12-11 devnull Rune *ar;
447 b3994ec5 2003-12-11 devnull } u;
448 b3994ec5 2003-12-11 devnull int (*agetc)(void*, uint);
449 b3994ec5 2003-12-11 devnull int a0;
450 b3994ec5 2003-12-11 devnull int a1;
451 b3994ec5 2003-12-11 devnull };
452 b3994ec5 2003-12-11 devnull
453 b3994ec5 2003-12-11 devnull enum
454 b3994ec5 2003-12-11 devnull {
455 b3994ec5 2003-12-11 devnull /* fbufalloc() guarantees room off end of BUFSIZE */
456 b3994ec5 2003-12-11 devnull BUFSIZE = Maxblock+IOHDRSZ, /* size from fbufalloc() */
457 b3994ec5 2003-12-11 devnull RBUFSIZE = BUFSIZE/sizeof(Rune),
458 b3994ec5 2003-12-11 devnull EVENTSIZE = 256,
459 b3994ec5 2003-12-11 devnull Scrollwid = 12, /* width of scroll bar */
460 b3994ec5 2003-12-11 devnull Scrollgap = 4, /* gap right of scroll bar */
461 b3994ec5 2003-12-11 devnull Margin = 4, /* margin around text */
462 b3994ec5 2003-12-11 devnull Border = 2, /* line between rows, cols, windows */
463 b3994ec5 2003-12-11 devnull };
464 b3994ec5 2003-12-11 devnull
465 b3994ec5 2003-12-11 devnull #define QID(w,q) ((w<<8)|(q))
466 b3994ec5 2003-12-11 devnull #define WIN(q) ((((ulong)(q).path)>>8) & 0xFFFFFF)
467 b3994ec5 2003-12-11 devnull #define FILE(q) ((q).path & 0xFF)
468 b3994ec5 2003-12-11 devnull
469 b8f742db 2005-01-11 devnull #undef FALSE
470 b8f742db 2005-01-11 devnull #undef TRUE
471 b8f742db 2005-01-11 devnull
472 b3994ec5 2003-12-11 devnull enum
473 b3994ec5 2003-12-11 devnull {
474 b3994ec5 2003-12-11 devnull FALSE,
475 b3994ec5 2003-12-11 devnull TRUE,
476 b3994ec5 2003-12-11 devnull XXX,
477 b3994ec5 2003-12-11 devnull };
478 b3994ec5 2003-12-11 devnull
479 b3994ec5 2003-12-11 devnull enum
480 b3994ec5 2003-12-11 devnull {
481 b3994ec5 2003-12-11 devnull Empty = 0,
482 b3994ec5 2003-12-11 devnull Null = '-',
483 b3994ec5 2003-12-11 devnull Delete = 'd',
484 b3994ec5 2003-12-11 devnull Insert = 'i',
485 b3994ec5 2003-12-11 devnull Replace = 'r',
486 b3994ec5 2003-12-11 devnull Filename = 'f',
487 b3994ec5 2003-12-11 devnull };
488 b3994ec5 2003-12-11 devnull
489 b3994ec5 2003-12-11 devnull enum /* editing */
490 b3994ec5 2003-12-11 devnull {
491 b3994ec5 2003-12-11 devnull Inactive = 0,
492 b3994ec5 2003-12-11 devnull Inserting,
493 b3994ec5 2003-12-11 devnull Collecting,
494 b3994ec5 2003-12-11 devnull };
495 b3994ec5 2003-12-11 devnull
496 5a8e63b2 2004-02-29 devnull uint globalincref;
497 b3994ec5 2003-12-11 devnull uint seq;
498 b3994ec5 2003-12-11 devnull uint maxtab; /* size of a tab, in units of the '0' character */
499 b3994ec5 2003-12-11 devnull
500 b3994ec5 2003-12-11 devnull Display *display;
501 b3994ec5 2003-12-11 devnull Image *screen;
502 b3994ec5 2003-12-11 devnull Font *font;
503 b3994ec5 2003-12-11 devnull Mouse *mouse;
504 b3994ec5 2003-12-11 devnull Mousectl *mousectl;
505 b3994ec5 2003-12-11 devnull Keyboardctl *keyboardctl;
506 b3994ec5 2003-12-11 devnull Reffont reffont;
507 b3994ec5 2003-12-11 devnull Image *modbutton;
508 b3994ec5 2003-12-11 devnull Image *colbutton;
509 b3994ec5 2003-12-11 devnull Image *button;
510 b3994ec5 2003-12-11 devnull Image *but2col;
511 b3994ec5 2003-12-11 devnull Image *but3col;
512 b3994ec5 2003-12-11 devnull Cursor boxcursor;
513 b3994ec5 2003-12-11 devnull Row row;
514 b3994ec5 2003-12-11 devnull int timerpid;
515 b3994ec5 2003-12-11 devnull Disk *disk;
516 b3994ec5 2003-12-11 devnull Text *seltext;
517 b3994ec5 2003-12-11 devnull Text *argtext;
518 b3994ec5 2003-12-11 devnull Text *mousetext; /* global because Text.close needs to clear it */
519 b3994ec5 2003-12-11 devnull Text *typetext; /* global because Text.close needs to clear it */
520 b3994ec5 2003-12-11 devnull Text *barttext; /* shared between mousetask and keyboardthread */
521 b3994ec5 2003-12-11 devnull int bartflag;
522 d8c78a8d 2005-01-10 devnull int swapscrollbuttons;
523 b3994ec5 2003-12-11 devnull Window *activewin;
524 b3994ec5 2003-12-11 devnull Column *activecol;
525 b3994ec5 2003-12-11 devnull Buffer snarfbuf;
526 b3994ec5 2003-12-11 devnull Rectangle nullrect;
527 b3994ec5 2003-12-11 devnull int fsyspid;
528 b3994ec5 2003-12-11 devnull char *cputype;
529 b3994ec5 2003-12-11 devnull char *objtype;
530 b3994ec5 2003-12-11 devnull char *home;
531 b3994ec5 2003-12-11 devnull char *fontnames[2];
532 b3994ec5 2003-12-11 devnull Image *tagcols[NCOL];
533 b3994ec5 2003-12-11 devnull Image *textcols[NCOL];
534 5a8e63b2 2004-02-29 devnull extern char wdir[]; /* must use extern because no dimension given */
535 b3994ec5 2003-12-11 devnull int editing;
536 b3994ec5 2003-12-11 devnull int erroutfd;
537 b3994ec5 2003-12-11 devnull int messagesize; /* negotiated in 9P version setup */
538 5a8e63b2 2004-02-29 devnull int globalautoindent;
539 b3994ec5 2003-12-11 devnull
540 c16f1f73 2004-06-09 devnull enum
541 c16f1f73 2004-06-09 devnull {
542 c16f1f73 2004-06-09 devnull Kscrolloneup = KF|0x20,
543 c16f1f73 2004-06-09 devnull Kscrollonedown = KF|0x21,
544 c16f1f73 2004-06-09 devnull };
545 c16f1f73 2004-06-09 devnull
546 b3994ec5 2003-12-11 devnull Channel *ckeyboard; /* chan(Rune)[10] */
547 b3994ec5 2003-12-11 devnull Channel *cplumb; /* chan(Plumbmsg*) */
548 b3994ec5 2003-12-11 devnull Channel *cwait; /* chan(Waitmsg) */
549 b3994ec5 2003-12-11 devnull Channel *ccommand; /* chan(Command*) */
550 b3994ec5 2003-12-11 devnull Channel *ckill; /* chan(Rune*) */
551 b3994ec5 2003-12-11 devnull Channel *cxfidalloc; /* chan(Xfid*) */
552 b3994ec5 2003-12-11 devnull Channel *cxfidfree; /* chan(Xfid*) */
553 b3994ec5 2003-12-11 devnull Channel *cnewwindow; /* chan(Channel*) */
554 b3994ec5 2003-12-11 devnull Channel *mouseexit0; /* chan(int) */
555 b3994ec5 2003-12-11 devnull Channel *mouseexit1; /* chan(int) */
556 b3994ec5 2003-12-11 devnull Channel *cexit; /* chan(int) */
557 b3994ec5 2003-12-11 devnull Channel *cerr; /* chan(char*) */
558 b3994ec5 2003-12-11 devnull Channel *cedit; /* chan(int) */
559 8ad51794 2004-03-25 devnull Channel *cwarn; /* chan(void*)[1] (really chan(unit)[1]) */
560 b3994ec5 2003-12-11 devnull
561 b3994ec5 2003-12-11 devnull #define STACK 32768