Go to the first, previous, next, last section, table of contents.
Changes to do with making SM:
- *
-
Typing `make install' now installs the macro and help libraries. The
destinations of some files is now different -- see the main Makefile
for details.
- *
-
There is now a search path for `.sm' files; you may want to prepare
a system-wide one (see
SMPATH in the manual).
Changes to do invoking SM
- *
-
SM now searches a path looking for .sm files; you can override
this by setting the
SMPATH environment (VMS: logical) variable.
- *
-
The command line option
-u name makes SM treat `~' as name's
home directory when looking for `.sm' files.
- *
-
There is a new command line option
-h to print a help message.
- *
-
SM now supports a search path for help files.
Changes to do with .sm files:
- *
-
Entries in .sm files with `@' in the first column mean that
the entry isn't present, and that SM shouldn't search the rest of the path.
- *
-
Entries in .sm files with `+' in the first column direct SM to keep
looking for more entries, whose values are concatenated with this one.
Changes to do with history and the editor:
- *
-
There is now a macro
input_new analogous to the Mongo "input"
command, but reading a file of SM commands. Not recommended.
- *
-
There are two new commands ^R and ^S (or
ESC-s) to do
searches in macros or history. The use of ^-TAB
is no longer supported.
- *
-
There is a new command
ESC-^D to delete the current
line; this includes deleting it from the history list.
- *
-
If you set the variable
remember_history_line the history
editor will remember where you are in the history list, so a ^P will
get the command before the last one that you retrieved.
- *
-
Negative history numbers are now taken relative to the current command,
so -1 is the previous command.
- *
-
APROPOS will (on most systems) search the help files as well as
the macro headers.
- *
-
When reading from a file (or a pipe) SM will behave as if you gave
the
-S option.
- *
-
Key bindings may now contain ASCII NUL's.
- *
-
Shell escapes (with !) now look for a variable
$SHELL to decide
which shell to use; the Bourne shell is still the default. They also now
reset terminal modes before the shell command, and set them after.
- *
-
There is a new variable
exit_status which is the return code
from a shell escape.
- *
-
You can now use ^V and
ESC-v to move around the history list
as well as within macros.
Changes to do with files:
- *
-
If you define the variable
noclobber (maybe in your `.sm' file)
MACRO WRITE and PRINT won't overwrite existing files.
Changes to do with macros:
- *
-
If a macro is declared to have 100 or more arguments the last
argument will extend to the end of the line.
- *
-
Tabs in macro definitions are now expanded to spaces when read; you
can set the tab width with the `.sm' variable
tabsize.
- *
-
Macros used as functions can now be used in expressions.
- *
-
In a file of macros, lines starting
## are only printed if
VERBOSE is two or more.
Changes to do with variables:
- *
-
If a "DEFINE
var :" fails, if var is capitalised
SM will now look for it from the environment.
- *
-
The way that `internal' variables (those defined as
DEFINE name |) work is changed. If you don't define them they
will always have the correct value -- see the section on DEFINE for
further explanation.
- *
-
You can get at the size of an image with DEFINE NX IMAGE and
DEFINE NY IMAGE (note that NX and NY are capitalised).
- *
-
There are two new `internal' variables
$nx and $ny
which give the current size of the screen in hardware-specific units such
as pixels or dots, and $cheight and $cwidth which
give the current (average) size of a character in plot units.
- *
-
There is a new special form of variable expansion
$(expr) which
expands to the result of expr (taken to be a scalar).
Changes to do with vectors:
- *
-
You can now specify names for user ctypes, e.g. CTYPE={ puce khaki
vermillion }.
- *
-
You can make the PRINT command append to the output file, rather
than simply overwriting it.
- *
-
In response to overwhelming public pressure, an element of a vector
may once more be specified wherever a number is allowed (e.g. in a
RELOCATE command).
- *
-
You can now write a number as
1.234d56 if you must.
- *
-
There is a new operator ATAN2 that takes two arguments and returns
an answer in the correct quadrant.
- *
-
STRING will now (by default) produce nicely formatted strings,
similar to those used to label axes.
- *
-
You can now declare an image (with
IMAGE (nx, ny)), and fill it
with SET IMAGE(x,y) = z.
- *
-
There are some more string operators, similar to those in
the new Unix
awk, INDEX, SPRINTF, STRLEN, and SUBSTR.
- *
-
You can determine how long a string is (in device coordinates) with LENGTH.
- *
-
You can specify your own format statement for SM to read lines of
data with:
READ 'format' { vectors }.
Changes to how plotting is done are as follows:
- *
-
The hcopy and hmacro macros will now work even if the printer name
is omitted (using the value of PRINTER from `.sm' or the
environment instead).
- *
-
`Dotted' lines (ltype 1) are now really dotted, not short lines.
- *
-
You can now start a new page for hardcopy devices with the new
command PAGE.
- *
-
The new command ABORT closes the current device without making a hardcopy.
Changes to labels:
- *
-
SM's "TeX" macros can now take arguments
- *
-
There is a new pseudo-macro
\move to move a group around,
but leave the current position unchanged.
- *
-
There are new pseudo-macros
depth, height, and
\width to find the dimensions of a group.
- *
-
The height and depth information is used to place axis labels more
intelligently. This will only work if you draw the axes before the
axis labels, which seems not unreasonable.
- *
-
LABEL will now draw a string with its
baseline at the starting
point. If you want the old behaviour use PUTLABEL 6.
Changes to stdgraph:
- *
-
:RA: has been retired in favour of the much more general :DV=device:.
- *
-
The new :TC: entry is like :tc: but doesn't start scanning
graphcap again. This can be used to modify standard entries.
- *
-
Comments are now permitted within graphcap entries.
- *
-
SY entries can now use
$"..." to prompt the user
for a string; the $"..." will be replaced by the reply.
- *
-
SY entries now support graphcap variables, so that you can say things like
BIN = /usr/local/bin
device|some device:\
...
:SY=${BIN}/rasterise -r $0 $F $1:
Changes to drivers:
- *
-
The imagen driver now supports portrait, landscape, and square plots.
- *
-
There is a new driver (
sgi) for Silicon Graphics's
Irises, which should also work on IBM's RS/6000.
Changes to Callable SM:
- *
-
The device call now returns 0 for success, -1 for failure.
- *
-
You can now compile SM to prefix external names with "sm_"
(or any other string of your choice).
- *
-
There is a new call
redraw that should be used on window systems
that need some help redrawing their windows (e.g. SGI's GL, or X11
on machines like RS/6000 that don't support backing stores).
Changes to 2-D SM:
- *
-
If you specify
nx or ny to be negative they will be
taken to be the negation of the actual size of the image, rather than
an offset in the file.
- *
-
If you specify
nx or ny as string values (e.g.
:nx=10:ny=100: they are taken to be the actual size of the
image (just like the previous item).
- *
-
You can get at the size of an image with DEFINE NX IMAGE and
DEFINE NY IMAGE (note that NX and NY are capitalised).
- *
-
You can now declare an image (with
IMAGE (nx, ny)), and fill it
with SET IMAGE(x,y) = z.
- *
-
You can define any (2-letter) name in
filecap and retrieve the
value at the specified offset with DEFINE nn IMAGE.
- *
-
In FITS files, CRPIX, CRVAL, and CDELT are now interpreted correctly.
Bug fixes: (only the ones most visible to users are noted)
- *
-
The problems with calling SM routines have been fixed.
Go to the first, previous, next, last section, table of contents.