104 lines · 1.5 KB · Text
RawDownload
defn saminit(){	if !access("/sys/src/cmd/sam/cmd.acid") then		rc("cd /sys/src/cmd/sam && mk cmd.acid");	include("/sys/src/cmd/sam/cmd.acid");} defn printrunestring(addr, len){	loop 1,len do {		print(*(addr\r));		addr = addr+2;	}} defn runestring(addr, len){	local s;		s = "";	loop 1,len do {		s = s + *(addr\r);		addr = addr+2;	}	return s;} defn string(s){	complex String s;	return runestring(s.s, s.n);} defn filemenu(f){	complex File f;	local s;		s = "";	if f != *cmd then {		if f.mod then			s = s + "'";		else 			s = s + " ";		if f.rasp != 0 then			s = s + "+";		else			s = s + "-";		if f == *curfile then			s = s + ".";		else			s = s + " ";		s = s + " ";	}	s = s + string(f.name);	print("file(", f\X, ") // ", s, "\n");} defn files(){	local i, f, fx, fp;		fx = (List)file;	if fx.nused == 0 then		filemenu(*cmd);	i = 0;	loop 1,fx.nused do {		f = (File)fx.g.filep[i];		filemenu(f);		i = i+1;	}} defn range(r){	complex Range r;		if r.p1 == r.p2 then		return itoa(r.p1, "#%d");	return itoa(r.p1, "#%d")+"-"+itoa(r.p2, "#%d");} defn file(f){	complex File f;		filemenu(f);	print("\t$=#", f.nc\D, " .=", range(f.dot.r), " buffer(", f\X, ")\n");	if f == *cmd then {		print("\tcmdpt=#", *cmdpt\D, " cmdptadv=#", *cmdptadv\D, "\n");	}} defn buffer(b){	complex Buffer b;		print("buffer(", b\X, "): c=", b.c\X, " nc=", b.nc\D, "\n");	print("cache: ==(");	print(runestring(b.c, b.nc));	print(")==\n");} print("/sys/lib/acid/sam");