A jtspella(J jt,A w){C c,s[3];V*v; RZ(w); v=VAV(w); c=v->id; if(c==CFCONS)R over(thorn1(v->h),chr[':']); spellit(c,s); R str(s[2]?3L:s[1]?2L:1L,s); }
static F2(jtth2box){A z;I n,p,q,*v,x,y; p=jt->pos[0]; q=jt->pos[1]; RZ(a=vi(a)); n=AN(a); v=AV(a); ASSERT(1>=AR(a),EVRANK); ASSERT(1==n||2==n,EVLENGTH); x=v[0]; y=2>n?0:v[1]; ASSERT(0<=x&&x<=2&&0<=y&&y<=2,EVDOMAIN); jt->pos[0]=x; jt->pos[1]=y; z=thorn1(w); jt->pos[0]=p; jt->pos[1]=q; R z; }
/*static*/ void disp(A w){C err;I t; t=AT(w); switch(t){ case BOOL: case INT: case FL: case CMPX: if(nflag)jputc(' '); err=jerr; jerr=0; w=thorn1(w); jerr=err; if(w)dwr(w); else jputs(" (ws full in numeric display) "); break; case NAME: dname(w); break; case CHAR: dwrq(w); break; case LPAR: jputc('('); break; case RPAR: jputc(')'); break; case ASGN: jputs(*AV(w)?"=.":"=:"); break; case MARK: break; default: dspell(VAV(w)->id); } nflag=t&NAME+NUMERIC?1:0; }