[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

PRINNDEF, TAB ETC.



a change was made some time ago butti guess this is the firt
net release to get out with it. there is a minor incompatibility
but it provides new capability hitherto not available.

ussd to be the case thatprintdef alwayscaaled
TAB giving it the position of its (PRINTDEF's)
LEFT argument (which defaults to 0).
TAB would do a terpri and space over if you
were already beyond thatpoint. thus the net effect was if
you were beyond the indicated column, you always got
a free TERPRI. However, thi meant that it was not
possible to do something like the following:
print several atoms on a line, and then start a printdef
without either havng it go to a new line, or having
its left maagin unnecessarily far in, e.g. supppose
you wanted to prettyprint a history event, say one inw hich
you did DEFINEQ((FOO (LAMBDA (X) --))
you would print DEFINEQ, and then call PRINTDEF on
its argument. however, either you would then be
forced to go to a new line or else have to specify LEFT
to be greater than the current position.

the way printdef now works is that it calls
TAB but in a way so that a terpri is not done if
you are already beyond thatposition, i.e. it is a nop.
(this is indicated by value ofminspaces for TAB being T.)

the manual does not specifically say what printdef does
initially if you are already beyond its left hand margin,
and there was no way i could get the intended effect without
making this change.

the solution from your standpoint if you want printdef to
always staat a new line if it is beyond LEFT
is simply to first prform (TAB LEFT).


to summarize, you can now call printdef and start printing
an  xpression on the same line, wheres befor you couldnt, i.e.
you can print


.....     (FOO (LAMBDA (X)
    (COND
      ((--  etc.

if you want to always start a new line, either perform
a TERPRI first, or else perform a (TAB N), which will
perform the terpri only if you are already beyond N.

warren
-------