Charles.Forsyth20060303a828770d19 years agoHistory
85 lines · 2.2 KB · Objective-C
RawDownload
Edit: module {	#pragma	varargck	argpos	editerror	1 	PATH: con "/dis/acme/edit.dis"; 	String: adt{		n: int;		r: string;	}; 	Addr: adt{		typex: int;		# # (char addr), l (line addr), / ? . $ + - , ;		num: int;		next: cyclic ref Addr;		# or right side of , and ; 		re: ref String;		left: cyclic ref Addr;		# left side of , and ; 	}; 	Address: adt{		r: Dat->Range;		f: ref Filem->File;	}; 	Cmd: adt{		addr: ref Addr;			# address (range of text)		re: ref String;			# regular expression for e.g. 'x'		next: cyclic ref Cmd;		# pointer to next element in {}		num: int;		flag: int;				# whatever		cmdc: int;				# command character; 'x' etc.		cmd: cyclic ref Cmd;			# target of x, g, {, etc.		text: ref String;			# text of a, c, i; rhs of s		mtaddr: ref Addr;		# address for m, t	}; 	Cmdt: adt{		cmdc: int;			# command character		text: int;			# takes a textual argument?		regexp: int;		# takes a regular expression?		addr: int;		# takes an address (m or t)?		defcmd: int;		# default command; 0==>none		defaddr: int;		# default address		count: int;		# takes a count e.g. s2///		token: string;		# takes text terminated by one of these		fnc: int;			# function to call with parse tree	}; 	cmdtab: array of Cmdt; 	INCR: con 25;	# delta when growing list 	List: adt{		nalloc: int;		nused: int;		pick{			C => cmdptr: array of ref Cmd;			S => stringptr: array of ref String;			A => addrptr: array of ref Addr;		}	}; 	aNo, aDot, aAll: con iota;	# default addresses 	ALLLOOPER, ALLTOFILE, ALLMATCHFILE, ALLFILECHECK, ALLELOGTERM, ALLEDITINIT, ALLUPDATE: con iota; 	C_nl, C_a, C_b, C_c, C_d, C_B, C_D, C_e, C_f, C_g, C_i, C_k, C_m, C_n, C_p, C_s, C_u, C_w, C_x, C_X, C_pipe, C_eq: con iota; 	editing: int;	curtext: ref Textm->Text; 	init : fn(mods : ref Dat->Mods); 	allocstring: fn(a0: int): ref String;	freestring: fn(a0: ref String);	getregexp: fn(a0: int): ref String;	newaddr: fn(): ref Addr;	editcmd: fn(t: ref Textm->Text, r: string, n: int);	editerror: fn(a0: string);	cmdlookup: fn(a0: int): int;	Straddc: fn(a0: ref String, a1: int); 	allelogterm: fn(w: ref Windowm->Window);	alleditinit: fn(w: ref Windowm->Window);	allupdate: fn(w: ref Windowm->Window);};