xref: /inferno-os/appl/acme/file.m (revision 37da2899f40661e3e9631e497da8dc59b971cbd0)
1Filem : module {
2	PATH : con "/dis/acme/file.dis";
3
4	init : fn(mods : ref Dat->Mods);
5
6	File : adt {
7		buf : ref Bufferm->Buffer;		# the data
8		delta : ref Bufferm->Buffer;		# transcript of changes
9		epsilon : ref Bufferm->Buffer;	# inversion of delta for redo
10		elogbuf: ref Bufferm->Buffer;	# log of pending editor changes
11		elog: Editlog->Elog;			# current pending change
12		name : string;				# name of associated file
13		qidpath : big;				# of file when read
14		mtime : int;				# of file when read
15		dev : int;					# of file when read
16		unread : int;				# file has not been read from disk
17		editclean: int;				# mark clean after edit command
18		seq : int;					# if seq==0, File acts like Buffer
19		mod : int;
20		curtext : cyclic ref Textm->Text;	# most recently used associated text
21		text : cyclic array of ref Textm->Text;		# list of associated texts
22		ntext : int;
23		dumpid : int;				# used in dumping zeroxed windows
24
25		addtext : fn(f : self ref File, t : ref Textm->Text) : ref File;
26		deltext : fn(f : self ref File, t : ref Textm->Text);
27		insert : fn(f : self ref File, n : int, s : string, m : int);
28		delete : fn(f : self ref File, m : int, n : int);
29		loadx : fn(f : self ref File, p : int, fd : ref Sys->FD) : int;
30		setname : fn(f : self ref File, s : string, n : int);
31		undo : fn(f : self ref File, p : int, q : int, r : int) : (int, int);
32		mark : fn(f : self ref File);
33		reset : fn(f : self ref File);
34		close : fn(f : self ref File);
35		undelete : fn(f : self ref File, b : ref Bufferm->Buffer, m : int, n : int);
36		uninsert : fn(f : self ref File, b : ref Bufferm->Buffer, m : int, n : int);
37		unsetname : fn(f : self ref File, b : ref Bufferm->Buffer);
38		redoseq : fn(f: self ref File): int;
39	};
40};
41