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");
|