/* pplist - pretty print a list */ LOCAL void pplist(LVAL expr) { int n; /* if the expression will fit on one line, print it on one */ if ((n = flatsize(expr)) < ppmaxlen) { xlprint(ppfile,expr,TRUE); pplevel += n; } /* otherwise print it on several lines */ else { n = ppmargin; ppputc('('); if (atomp(car(expr))) { ppexpr(car(expr)); ppputc(' '); ppmargin = pplevel; expr = cdr(expr); } else ppmargin = pplevel; for (; consp(expr); expr = cdr(expr)) { pp(car(expr)); if (consp(cdr(expr))) ppterpri(); } if (expr != NIL) { ppputc(' '); ppputc('.'); ppputc(' '); ppexpr(expr); } ppputc(')'); ppmargin = n; } }
/* xpp - pretty-print an expression */ LVAL xpp() { LVAL expr; /* get expression to print and file pointer */ expr = xlgetarg(); ppfile = (moreargs() ? xlgetfile() : getvalue(s_stdout)); xllastarg(); /* pretty print the expression */ pplevel = ppmargin = 0; ppmaxlen = 40; pp(expr); ppterpri(ppfile); /* return nil */ return (NIL); }