Subversion Repositories planix.SVN

Rev

Blame | Last modification | View Log | RSS feed

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