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