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 cbeb0b26 2006-04-01 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 cbeb0b26 2006-04-01 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 cbeb0b26 2006-04-01 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 cd1d0ab0 2006-01-12 devnull int needundo;
196 b3994ec5 2003-12-11 devnull };
197 b3994ec5 2003-12-11 devnull
198 b3994ec5 2003-12-11 devnull uint textbacknl(Text*, uint, uint);
199 b3994ec5 2003-12-11 devnull uint textbsinsert(Text*, uint, Rune*, uint, int, int*);
200 b3994ec5 2003-12-11 devnull int textbswidth(Text*, Rune);
201 b3994ec5 2003-12-11 devnull int textclickmatch(Text*, int, int, int, uint*);
202 b3994ec5 2003-12-11 devnull void textclose(Text*);
203 b3994ec5 2003-12-11 devnull void textcolumnate(Text*, Dirlist**, int);
204 b3994ec5 2003-12-11 devnull void textcommit(Text*, int);
205 b3994ec5 2003-12-11 devnull void textconstrain(Text*, uint, uint, uint*, uint*);
206 b3994ec5 2003-12-11 devnull void textdelete(Text*, uint, uint, int);
207 b3994ec5 2003-12-11 devnull void textdoubleclick(Text*, uint*, uint*);
208 b3994ec5 2003-12-11 devnull void textfill(Text*);
209 b3994ec5 2003-12-11 devnull void textframescroll(Text*, int);
210 b3994ec5 2003-12-11 devnull void textinit(Text*, File*, Rectangle, Reffont*, Image**);
211 b3994ec5 2003-12-11 devnull void textinsert(Text*, uint, Rune*, uint, int);
212 b3994ec5 2003-12-11 devnull uint textload(Text*, uint, char*, int);
213 b3994ec5 2003-12-11 devnull Rune textreadc(Text*, uint);
214 b3994ec5 2003-12-11 devnull void textredraw(Text*, Rectangle, Font*, Image*, int);
215 b3994ec5 2003-12-11 devnull void textreset(Text*);
216 33dc4226 2005-10-31 devnull int textresize(Text*, Rectangle, int);
217 b3994ec5 2003-12-11 devnull void textscrdraw(Text*);
218 b3994ec5 2003-12-11 devnull void textscroll(Text*, int);
219 b3994ec5 2003-12-11 devnull void textselect(Text*);
220 b3994ec5 2003-12-11 devnull int textselect2(Text*, uint*, uint*, Text**);
221 b3994ec5 2003-12-11 devnull int textselect23(Text*, uint*, uint*, Image*, int);
222 b3994ec5 2003-12-11 devnull int textselect3(Text*, uint*, uint*);
223 b3994ec5 2003-12-11 devnull void textsetorigin(Text*, uint, int);
224 b3994ec5 2003-12-11 devnull void textsetselect(Text*, uint, uint);
225 b3994ec5 2003-12-11 devnull void textshow(Text*, uint, uint, int);
226 b3994ec5 2003-12-11 devnull void texttype(Text*, Rune);
227 b3994ec5 2003-12-11 devnull
228 b3994ec5 2003-12-11 devnull struct Window
229 b3994ec5 2003-12-11 devnull {
230 b3994ec5 2003-12-11 devnull QLock lk;
231 b3994ec5 2003-12-11 devnull Ref ref;
232 b3994ec5 2003-12-11 devnull Text tag;
233 b3994ec5 2003-12-11 devnull Text body;
234 b3994ec5 2003-12-11 devnull Rectangle r;
235 b3994ec5 2003-12-11 devnull uchar isdir;
236 b3994ec5 2003-12-11 devnull uchar isscratch;
237 b3994ec5 2003-12-11 devnull uchar filemenu;
238 b3994ec5 2003-12-11 devnull uchar dirty;
239 5a8e63b2 2004-02-29 devnull uchar autoindent;
240 b3994ec5 2003-12-11 devnull int id;
241 b3994ec5 2003-12-11 devnull Range addr;
242 b3994ec5 2003-12-11 devnull Range limit;
243 b3994ec5 2003-12-11 devnull uchar nopen[QMAX];
244 b3994ec5 2003-12-11 devnull uchar nomark;
245 b3994ec5 2003-12-11 devnull uchar noscroll;
246 b3994ec5 2003-12-11 devnull Range wrselrange;
247 b3994ec5 2003-12-11 devnull int rdselfd;
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 33dc4226 2005-10-31 devnull int tagsafe; /* taglines is correct */
269 33dc4226 2005-10-31 devnull int tagexpand;
270 33dc4226 2005-10-31 devnull int taglines;
271 33dc4226 2005-10-31 devnull Rectangle tagtop;
272 66301756 2006-05-05 devnull QLock editoutlk;
273 b3994ec5 2003-12-11 devnull };
274 b3994ec5 2003-12-11 devnull
275 b3994ec5 2003-12-11 devnull void wininit(Window*, Window*, Rectangle);
276 b3994ec5 2003-12-11 devnull void winlock(Window*, int);
277 b3994ec5 2003-12-11 devnull void winlock1(Window*, int);
278 b3994ec5 2003-12-11 devnull void winunlock(Window*);
279 b3994ec5 2003-12-11 devnull void wintype(Window*, Text*, Rune);
280 b3994ec5 2003-12-11 devnull void winundo(Window*, int);
281 b3994ec5 2003-12-11 devnull void winsetname(Window*, Rune*, int);
282 b3994ec5 2003-12-11 devnull void winsettag(Window*);
283 b3994ec5 2003-12-11 devnull void winsettag1(Window*);
284 b3994ec5 2003-12-11 devnull void wincommit(Window*, Text*);
285 33dc4226 2005-10-31 devnull int winresize(Window*, Rectangle, int, int);
286 b3994ec5 2003-12-11 devnull void winclose(Window*);
287 b3994ec5 2003-12-11 devnull void windelete(Window*);
288 b3994ec5 2003-12-11 devnull int winclean(Window*, int);
289 b3994ec5 2003-12-11 devnull void windirfree(Window*);
290 b3994ec5 2003-12-11 devnull void winevent(Window*, char*, ...);
291 b3994ec5 2003-12-11 devnull void winmousebut(Window*);
292 b3994ec5 2003-12-11 devnull void winaddincl(Window*, Rune*, int);
293 b3994ec5 2003-12-11 devnull void wincleartag(Window*);
294 627bae9c 2005-01-04 devnull char *winctlprint(Window*, char*, int);
295 b3994ec5 2003-12-11 devnull
296 b3994ec5 2003-12-11 devnull struct Column
297 b3994ec5 2003-12-11 devnull {
298 b3994ec5 2003-12-11 devnull Rectangle r;
299 b3994ec5 2003-12-11 devnull Text tag;
300 b3994ec5 2003-12-11 devnull Row *row;
301 b3994ec5 2003-12-11 devnull Window **w;
302 b3994ec5 2003-12-11 devnull int nw;
303 b3994ec5 2003-12-11 devnull int safe;
304 b3994ec5 2003-12-11 devnull };
305 b3994ec5 2003-12-11 devnull
306 b3994ec5 2003-12-11 devnull void colinit(Column*, Rectangle);
307 b3994ec5 2003-12-11 devnull Window* coladd(Column*, Window*, Window*, int);
308 b3994ec5 2003-12-11 devnull void colclose(Column*, Window*, int);
309 b3994ec5 2003-12-11 devnull void colcloseall(Column*);
310 b3994ec5 2003-12-11 devnull void colresize(Column*, Rectangle);
311 b3994ec5 2003-12-11 devnull Text* colwhich(Column*, Point);
312 b3994ec5 2003-12-11 devnull void coldragwin(Column*, Window*, int);
313 b3994ec5 2003-12-11 devnull void colgrow(Column*, Window*, int);
314 b3994ec5 2003-12-11 devnull int colclean(Column*);
315 b3994ec5 2003-12-11 devnull void colsort(Column*);
316 b3994ec5 2003-12-11 devnull void colmousebut(Column*);
317 b3994ec5 2003-12-11 devnull
318 b3994ec5 2003-12-11 devnull struct Row
319 b3994ec5 2003-12-11 devnull {
320 b3994ec5 2003-12-11 devnull QLock lk;
321 b3994ec5 2003-12-11 devnull Rectangle r;
322 b3994ec5 2003-12-11 devnull Text tag;
323 b3994ec5 2003-12-11 devnull Column **col;
324 b3994ec5 2003-12-11 devnull int ncol;
325 b3994ec5 2003-12-11 devnull
326 b3994ec5 2003-12-11 devnull };
327 b3994ec5 2003-12-11 devnull
328 b3994ec5 2003-12-11 devnull void rowinit(Row*, Rectangle);
329 b3994ec5 2003-12-11 devnull Column* rowadd(Row*, Column *c, int);
330 b3994ec5 2003-12-11 devnull void rowclose(Row*, Column*, int);
331 b3994ec5 2003-12-11 devnull Text* rowwhich(Row*, Point);
332 b3994ec5 2003-12-11 devnull Column* rowwhichcol(Row*, Point);
333 b3994ec5 2003-12-11 devnull void rowresize(Row*, Rectangle);
334 b3994ec5 2003-12-11 devnull Text* rowtype(Row*, Rune, Point);
335 b3994ec5 2003-12-11 devnull void rowdragcol(Row*, Column*, int but);
336 b3994ec5 2003-12-11 devnull int rowclean(Row*);
337 b3994ec5 2003-12-11 devnull void rowdump(Row*, char*);
338 6d7fdb24 2004-12-27 devnull int rowload(Row*, char*, int);
339 b3994ec5 2003-12-11 devnull void rowloadfonts(char*);
340 b3994ec5 2003-12-11 devnull
341 b3994ec5 2003-12-11 devnull struct Timer
342 b3994ec5 2003-12-11 devnull {
343 b3994ec5 2003-12-11 devnull int dt;
344 b3994ec5 2003-12-11 devnull int cancel;
345 b3994ec5 2003-12-11 devnull Channel *c; /* chan(int) */
346 b3994ec5 2003-12-11 devnull Timer *next;
347 b3994ec5 2003-12-11 devnull };
348 b3994ec5 2003-12-11 devnull
349 b3994ec5 2003-12-11 devnull struct Command
350 b3994ec5 2003-12-11 devnull {
351 b3994ec5 2003-12-11 devnull int pid;
352 b3994ec5 2003-12-11 devnull Rune *name;
353 b3994ec5 2003-12-11 devnull int nname;
354 b3994ec5 2003-12-11 devnull char *text;
355 b3994ec5 2003-12-11 devnull char **av;
356 b3994ec5 2003-12-11 devnull int iseditcmd;
357 b3994ec5 2003-12-11 devnull Mntdir *md;
358 b3994ec5 2003-12-11 devnull Command *next;
359 b3994ec5 2003-12-11 devnull };
360 b3994ec5 2003-12-11 devnull
361 b3994ec5 2003-12-11 devnull struct Dirtab
362 b3994ec5 2003-12-11 devnull {
363 b3994ec5 2003-12-11 devnull char *name;
364 b3994ec5 2003-12-11 devnull uchar type;
365 b3994ec5 2003-12-11 devnull uint qid;
366 b3994ec5 2003-12-11 devnull uint perm;
367 b3994ec5 2003-12-11 devnull };
368 b3994ec5 2003-12-11 devnull
369 b3994ec5 2003-12-11 devnull struct Mntdir
370 b3994ec5 2003-12-11 devnull {
371 b3994ec5 2003-12-11 devnull int id;
372 b3994ec5 2003-12-11 devnull int ref;
373 b3994ec5 2003-12-11 devnull Rune *dir;
374 b3994ec5 2003-12-11 devnull int ndir;
375 b3994ec5 2003-12-11 devnull Mntdir *next;
376 b3994ec5 2003-12-11 devnull int nincl;
377 b3994ec5 2003-12-11 devnull Rune **incl;
378 b3994ec5 2003-12-11 devnull };
379 b3994ec5 2003-12-11 devnull
380 b3994ec5 2003-12-11 devnull struct Fid
381 b3994ec5 2003-12-11 devnull {
382 b3994ec5 2003-12-11 devnull int fid;
383 b3994ec5 2003-12-11 devnull int busy;
384 b3994ec5 2003-12-11 devnull int open;
385 b3994ec5 2003-12-11 devnull Qid qid;
386 b3994ec5 2003-12-11 devnull Window *w;
387 b3994ec5 2003-12-11 devnull Dirtab *dir;
388 b3994ec5 2003-12-11 devnull Fid *next;
389 b3994ec5 2003-12-11 devnull Mntdir *mntdir;
390 b3994ec5 2003-12-11 devnull int nrpart;
391 b3994ec5 2003-12-11 devnull uchar rpart[UTFmax];
392 b3994ec5 2003-12-11 devnull };
393 b3994ec5 2003-12-11 devnull
394 b3994ec5 2003-12-11 devnull
395 b3994ec5 2003-12-11 devnull struct Xfid
396 b3994ec5 2003-12-11 devnull {
397 b3994ec5 2003-12-11 devnull void *arg; /* args to xfidinit */
398 b3994ec5 2003-12-11 devnull Fcall fcall;
399 b3994ec5 2003-12-11 devnull Xfid *next;
400 b3994ec5 2003-12-11 devnull Channel *c; /* chan(void(*)(Xfid*)) */
401 b3994ec5 2003-12-11 devnull Fid *f;
402 b3994ec5 2003-12-11 devnull uchar *buf;
403 b3994ec5 2003-12-11 devnull int flushed;
404 b3994ec5 2003-12-11 devnull
405 b3994ec5 2003-12-11 devnull };
406 b3994ec5 2003-12-11 devnull
407 b3994ec5 2003-12-11 devnull void xfidctl(void *);
408 b3994ec5 2003-12-11 devnull void xfidflush(Xfid*);
409 b3994ec5 2003-12-11 devnull void xfidopen(Xfid*);
410 b3994ec5 2003-12-11 devnull void xfidclose(Xfid*);
411 b3994ec5 2003-12-11 devnull void xfidread(Xfid*);
412 b3994ec5 2003-12-11 devnull void xfidwrite(Xfid*);
413 b3994ec5 2003-12-11 devnull void xfidctlwrite(Xfid*, Window*);
414 b3994ec5 2003-12-11 devnull void xfideventread(Xfid*, Window*);
415 b3994ec5 2003-12-11 devnull void xfideventwrite(Xfid*, Window*);
416 b3994ec5 2003-12-11 devnull void xfidindexread(Xfid*);
417 b3994ec5 2003-12-11 devnull void xfidutfread(Xfid*, Text*, uint, int);
418 b3994ec5 2003-12-11 devnull int xfidruneread(Xfid*, Text*, uint, uint);
419 b3994ec5 2003-12-11 devnull
420 b3994ec5 2003-12-11 devnull struct Reffont
421 b3994ec5 2003-12-11 devnull {
422 b3994ec5 2003-12-11 devnull Ref ref;
423 b3994ec5 2003-12-11 devnull Font *f;
424 b3994ec5 2003-12-11 devnull
425 b3994ec5 2003-12-11 devnull };
426 b3994ec5 2003-12-11 devnull Reffont *rfget(int, int, int, char*);
427 b3994ec5 2003-12-11 devnull void rfclose(Reffont*);
428 b3994ec5 2003-12-11 devnull
429 b3994ec5 2003-12-11 devnull struct Rangeset
430 b3994ec5 2003-12-11 devnull {
431 b3994ec5 2003-12-11 devnull Range r[NRange];
432 b3994ec5 2003-12-11 devnull };
433 b3994ec5 2003-12-11 devnull
434 b3994ec5 2003-12-11 devnull struct Dirlist
435 b3994ec5 2003-12-11 devnull {
436 b3994ec5 2003-12-11 devnull Rune *r;
437 b3994ec5 2003-12-11 devnull int nr;
438 b3994ec5 2003-12-11 devnull int wid;
439 b3994ec5 2003-12-11 devnull };
440 b3994ec5 2003-12-11 devnull
441 b3994ec5 2003-12-11 devnull struct Expand
442 b3994ec5 2003-12-11 devnull {
443 b3994ec5 2003-12-11 devnull uint q0;
444 b3994ec5 2003-12-11 devnull uint q1;
445 b3994ec5 2003-12-11 devnull Rune *name;
446 b3994ec5 2003-12-11 devnull int nname;
447 b3994ec5 2003-12-11 devnull char *bname;
448 b3994ec5 2003-12-11 devnull int jump;
449 b3994ec5 2003-12-11 devnull union{
450 b3994ec5 2003-12-11 devnull Text *at;
451 b3994ec5 2003-12-11 devnull Rune *ar;
452 b3994ec5 2003-12-11 devnull } u;
453 b3994ec5 2003-12-11 devnull int (*agetc)(void*, uint);
454 b3994ec5 2003-12-11 devnull int a0;
455 b3994ec5 2003-12-11 devnull int a1;
456 b3994ec5 2003-12-11 devnull };
457 b3994ec5 2003-12-11 devnull
458 b3994ec5 2003-12-11 devnull enum
459 b3994ec5 2003-12-11 devnull {
460 b3994ec5 2003-12-11 devnull /* fbufalloc() guarantees room off end of BUFSIZE */
461 b3994ec5 2003-12-11 devnull BUFSIZE = Maxblock+IOHDRSZ, /* size from fbufalloc() */
462 b3994ec5 2003-12-11 devnull RBUFSIZE = BUFSIZE/sizeof(Rune),
463 b3994ec5 2003-12-11 devnull EVENTSIZE = 256,
464 b3994ec5 2003-12-11 devnull Scrollwid = 12, /* width of scroll bar */
465 b3994ec5 2003-12-11 devnull Scrollgap = 4, /* gap right of scroll bar */
466 b3994ec5 2003-12-11 devnull Margin = 4, /* margin around text */
467 cbeb0b26 2006-04-01 devnull Border = 2 /* line between rows, cols, windows */
468 b3994ec5 2003-12-11 devnull };
469 b3994ec5 2003-12-11 devnull
470 b3994ec5 2003-12-11 devnull #define QID(w,q) ((w<<8)|(q))
471 b3994ec5 2003-12-11 devnull #define WIN(q) ((((ulong)(q).path)>>8) & 0xFFFFFF)
472 b3994ec5 2003-12-11 devnull #define FILE(q) ((q).path & 0xFF)
473 b3994ec5 2003-12-11 devnull
474 b8f742db 2005-01-11 devnull #undef FALSE
475 b8f742db 2005-01-11 devnull #undef TRUE
476 b8f742db 2005-01-11 devnull
477 b3994ec5 2003-12-11 devnull enum
478 b3994ec5 2003-12-11 devnull {
479 b3994ec5 2003-12-11 devnull FALSE,
480 b3994ec5 2003-12-11 devnull TRUE,
481 cbeb0b26 2006-04-01 devnull XXX
482 b3994ec5 2003-12-11 devnull };
483 b3994ec5 2003-12-11 devnull
484 b3994ec5 2003-12-11 devnull enum
485 b3994ec5 2003-12-11 devnull {
486 b3994ec5 2003-12-11 devnull Empty = 0,
487 b3994ec5 2003-12-11 devnull Null = '-',
488 b3994ec5 2003-12-11 devnull Delete = 'd',
489 b3994ec5 2003-12-11 devnull Insert = 'i',
490 b3994ec5 2003-12-11 devnull Replace = 'r',
491 cbeb0b26 2006-04-01 devnull Filename = 'f'
492 b3994ec5 2003-12-11 devnull };
493 b3994ec5 2003-12-11 devnull
494 b3994ec5 2003-12-11 devnull enum /* editing */
495 b3994ec5 2003-12-11 devnull {
496 b3994ec5 2003-12-11 devnull Inactive = 0,
497 b3994ec5 2003-12-11 devnull Inserting,
498 cbeb0b26 2006-04-01 devnull Collecting
499 b3994ec5 2003-12-11 devnull };
500 b3994ec5 2003-12-11 devnull
501 5a8e63b2 2004-02-29 devnull uint globalincref;
502 b3994ec5 2003-12-11 devnull uint seq;
503 b3994ec5 2003-12-11 devnull uint maxtab; /* size of a tab, in units of the '0' character */
504 b3994ec5 2003-12-11 devnull
505 b3994ec5 2003-12-11 devnull Display *display;
506 b3994ec5 2003-12-11 devnull Image *screen;
507 b3994ec5 2003-12-11 devnull Font *font;
508 b3994ec5 2003-12-11 devnull Mouse *mouse;
509 b3994ec5 2003-12-11 devnull Mousectl *mousectl;
510 b3994ec5 2003-12-11 devnull Keyboardctl *keyboardctl;
511 b3994ec5 2003-12-11 devnull Reffont reffont;
512 b3994ec5 2003-12-11 devnull Image *modbutton;
513 b3994ec5 2003-12-11 devnull Image *colbutton;
514 b3994ec5 2003-12-11 devnull Image *button;
515 b3994ec5 2003-12-11 devnull Image *but2col;
516 b3994ec5 2003-12-11 devnull Image *but3col;
517 b3994ec5 2003-12-11 devnull Cursor boxcursor;
518 b3994ec5 2003-12-11 devnull Row row;
519 b3994ec5 2003-12-11 devnull int timerpid;
520 b3994ec5 2003-12-11 devnull Disk *disk;
521 b3994ec5 2003-12-11 devnull Text *seltext;
522 b3994ec5 2003-12-11 devnull Text *argtext;
523 b3994ec5 2003-12-11 devnull Text *mousetext; /* global because Text.close needs to clear it */
524 b3994ec5 2003-12-11 devnull Text *typetext; /* global because Text.close needs to clear it */
525 b3994ec5 2003-12-11 devnull Text *barttext; /* shared between mousetask and keyboardthread */
526 b3994ec5 2003-12-11 devnull int bartflag;
527 d8c78a8d 2005-01-10 devnull int swapscrollbuttons;
528 b3994ec5 2003-12-11 devnull Window *activewin;
529 b3994ec5 2003-12-11 devnull Column *activecol;
530 b3994ec5 2003-12-11 devnull Buffer snarfbuf;
531 b3994ec5 2003-12-11 devnull Rectangle nullrect;
532 b3994ec5 2003-12-11 devnull int fsyspid;
533 b3994ec5 2003-12-11 devnull char *cputype;
534 b3994ec5 2003-12-11 devnull char *objtype;
535 b3994ec5 2003-12-11 devnull char *home;
536 b3994ec5 2003-12-11 devnull char *fontnames[2];
537 b3994ec5 2003-12-11 devnull Image *tagcols[NCOL];
538 b3994ec5 2003-12-11 devnull Image *textcols[NCOL];
539 5a8e63b2 2004-02-29 devnull extern char wdir[]; /* must use extern because no dimension given */
540 b3994ec5 2003-12-11 devnull int editing;
541 b3994ec5 2003-12-11 devnull int erroutfd;
542 b3994ec5 2003-12-11 devnull int messagesize; /* negotiated in 9P version setup */
543 5a8e63b2 2004-02-29 devnull int globalautoindent;
544 d96da29b 2005-03-14 devnull int dodollarsigns;
545 b3994ec5 2003-12-11 devnull
546 c16f1f73 2004-06-09 devnull enum
547 c16f1f73 2004-06-09 devnull {
548 c16f1f73 2004-06-09 devnull Kscrolloneup = KF|0x20,
549 cbeb0b26 2006-04-01 devnull Kscrollonedown = KF|0x21
550 c16f1f73 2004-06-09 devnull };
551 c16f1f73 2004-06-09 devnull
552 b3994ec5 2003-12-11 devnull Channel *cplumb; /* chan(Plumbmsg*) */
553 b3994ec5 2003-12-11 devnull Channel *cwait; /* chan(Waitmsg) */
554 b3994ec5 2003-12-11 devnull Channel *ccommand; /* chan(Command*) */
555 b3994ec5 2003-12-11 devnull Channel *ckill; /* chan(Rune*) */
556 b3994ec5 2003-12-11 devnull Channel *cxfidalloc; /* chan(Xfid*) */
557 b3994ec5 2003-12-11 devnull Channel *cxfidfree; /* chan(Xfid*) */
558 b3994ec5 2003-12-11 devnull Channel *cnewwindow; /* chan(Channel*) */
559 b3994ec5 2003-12-11 devnull Channel *mouseexit0; /* chan(int) */
560 b3994ec5 2003-12-11 devnull Channel *mouseexit1; /* chan(int) */
561 b3994ec5 2003-12-11 devnull Channel *cexit; /* chan(int) */
562 b3994ec5 2003-12-11 devnull Channel *cerr; /* chan(char*) */
563 b3994ec5 2003-12-11 devnull Channel *cedit; /* chan(int) */
564 8ad51794 2004-03-25 devnull Channel *cwarn; /* chan(void*)[1] (really chan(unit)[1]) */
565 b3994ec5 2003-12-11 devnull
566 66301756 2006-05-05 devnull QLock editoutlk;
567 66301756 2006-05-05 devnull
568 b3994ec5 2003-12-11 devnull #define STACK 32768