HELP V13_6.CHANGES A.Sloman Oct 1988
This file lists the main changes for POPLOG Version 13.6. This version
is an intermediate release providing some new facililities, adaptation
for SunOS V4.0 and VMS V5.0 and a range of bug fixes. The next major
release will be Version 14 including an interface to X windows Version
11, and other major new features.
HELP * NEWS has the information presented below, but in chronological
order, and in some cases with more detail. This file uses a more
structured organisation.
HELP * LISPNEWS and HELP * PLOGNEWS provide details for Prolog and
Common Lisp. However, it should be noted that changes to POP-11 (e.g.
new data types or new primitive operations on them) are available to
users of Poplog Lisp or Prolog via calls to Pop-11.
CONTENTS - (Use <ENTER> g to access required sections)
-- Ports to new machines
-- Standard ML
-- Re-building Poplog
-- Access to operating system
-- Store Manager and Garbage Collector
-- External load and LIB EXTERNAL
-- Lisp Changes
-- Prolog Changes
-- Pop-11 syntax
-- New procedures, data-types, global variables, etc
-- Words, identifiers and sections
-- Documentation changes
-- Errors and tracing
-- New virtual machine instructions
-- VMS only
-- UNIX only
-- LIB FLAVOURS
-- Changes to the editor, VED
-- Poplog Window Manager (PWM)
-- KEATS - the knowledge engineering apprentice tool system
-- Miscellaneous
-- NOTE ON FILENAMES
-- Ports to new machines ----------------------------------------------
Poplog is now available on SUN-4 (SPARC)
Poplog is now available on Sequent Symmetry computers (multiple 80386
machines running a version of Berkeley Unix).
Both provide the new "mmap" system call mentioned in conection
with SunOS-4. This allows saved images (e.g. prolog lisp) to be
shared between processes.
The port to Sun386i will shortly be complete.
Poplog on MC68020 systems (i.e. Sun-3 and Bobcat) now uses the extended
arithmetic facilities of that processor. This implies a general speedup
in both simple and big integer multiplication and division operations.
Poplog now runs on Orion 1/05 (Clipper processor plus Unix 4.2 Bsd),
but is not a fully supported product. It is available only direct
from Sussex University. Whether it becomes fully supported will
depend on demand.
-- Standard ML --------------------------------------------------------
PML is an implementation of Standard ML version 1 that is available
as an optional extra in Poplog. An implementation of the new standard
may be available later. The current version is being used in a number
of computer science departments for teaching and research.
If you need PML please consult your Poplog supplier or Sussex
University. (See HELP * POPLOG)
-- Re-building Poplog -------------------------------------------------
For system administrators:-
As a step towards the provision of a fully fledged "delivery" mechanism,
the process of linking poplog has been changed. Instead of large numbers
of object files the system comes with more compact object libraries.
However, this change should make no difference to users.
Anyone intended to re-link poplog is advised to examine the newpop
command file (newpop.com on VMS) in the directory $usepop/pop/src
Please also see the Poplog Installation Guide and the Poplog
Administartor's Guide.
-- Access to operating system -----------------------------------------
A new general interrupt handling (signal handling) facility
is now available, documented in REF *SIGNALS. The user can control the
handling of most of the asynchronous interrupts ('signals' in Unix
terminology) defined by the operating system (how many, and exactly
which, varies from system to system - see REF *SIGNALS) and add new
synchronous interrupts. Principal new procedures are:
sys_signal_handler - access to handler procedures for signals
sys_signal_flag - access to enable flags for signals
sys_raise_signal - invoking a signal handler
sys_signal_queue - queue of yet to be handled signals
sys_max_signal - largest currently defined signal
A user library LIB SIGDEFS defines constants for the operating-
system-defined signals available in the current system.
A new library LIB SYSDEFS defines constants useful for identifying local
system dependencies in #_IF control statements. (eg UNIX, VMS as used in
#_IF DEF UNIX). See HELP *SYSDEFS, HELP *DEF
New procedures -sys_file_move- and -sys_file_copy-. See REF *SYSUTIL
Sun Poplog:- availability of new "mmap" system call in SunOS-4
means that the constant parts of Poplog saved images created with
-sys_lock_system- can be shared among all users (e.g. implies that most
of the Common LISP and PROLOG images will be shared). This facility
has been available on VMS for several years.
This "mmap" facility is available on Sequent Poplog also.
Three new active variables added to make it possible to access standard
I/O channels more easily: -pop_charin_device- -pop_charout_device-
-pop_charerr_device- See REF * SYSIO/pop_charin_device
In the interests of greater flexibility (and in particular the
requirements of a PWM for VMS Poplog), -popdevraw- has now been replaced
with two active variables containing separate read and write devices:
-poprawdevin- and -poprawdevout- (when neither standard input nor output
is a terminal, they both contain undef records). -popdevraw- is now just
an autoloadable synonym for -poprawdevin-, but to maintain upward
compatibility, output operations with -syswrite- and -sysflush- done on
the device in -poprawdevin- will be automatically redirected to the
device in -poprawdevout- (however, existing programs should be changed
so as not to rely on this kludge).
Also to maintain compatibility in Unix systems, a new procedure
-sys_link_tty_params- is run on the two devices to make them share
terminal characteristics, so that existing calls of -sys_io_control- on
-popdevraw- will affect both devices simultaneously. See REF * SYSIO
The procedure -sys_purge_terminal- is now an autoloadable synonym for
the new, more general, procedure -sys_clear_input-. See REF *SYSIO.
Changes to the handling of O/S process arguments by Poplog
(see REF *SYSTEM for full details):
1. A new variable -poparglist0- contains a complete list of the
arguments passed to Poplog, starting with the name under which the
process was invoked. -poparglist- is effectively unchanged, but will
now be a trailing sublist of -poparglist0- (i.e. excluding those
arguments processed by the system on startup).
2. The character `+` can now be used to flag a saved image to
restore, in both Unix and VMS systems. The characters `-` in Unix
and `/` in VMS are recognised as before, but not AFTER `+` has been
used, i.e.
pop11 -prolog -mysave
pop11 -prolog +mysave
pop11 +prolog +mysave
will all restore "prolog" and then "mysave", but
pop11 +prolog -mysave
will only restore "prolog". This allows programs based on saved
images to take Unix-style arguments beginning with `-`.
3. (VMS only) The translation of the DCL foreign command line to
arguments in -poparglist0- is now the same to that performed by VMS
C programs (see REF *SYSTEM). In particular, arguments containing
uppercase letters, spaces etc can be quoted with double quotes ",
which are then stripped off. For this reason, " at the beginning of
the first argument to flag POP-11 code to compile is now replaced by
: (colon) as in Unix. Note that since DCL recognises : immediately
after the command name as flagging a label, this will normally need
quoting (also as in Unix), e.g.
pop11 ":3+4=>"
-- Store Manager and Garbage Collector --------------------------------
From Version 13.1 POPLOG Unix systems have had the segmented heap and
garbage collector already in Version 13.0 of VMS POPLOG. This means that
the system now copes with the segmentation of its heap space that
results when external procedures allocate dynamic memory at run-time
(e.g. through -sbrk- or -malloc- etc).
External procedures can now allocate memory freely, and no prior
provision need be made for this (as a result, the optional 4th argument
to -external_load- that previously specified the amount of memory
required is now redundant -- and, if given, is ignored).
The garbage collector now has an alternate algorithm, which comes into
play when there is insufficient memory for the normal copying algorithm
to operate (and which can also be selected explicitly by assigning false
to -pop_gc_copy-). As a result, the system can no longer die with the
mishap 'CANNOT ALLOCATE GC WORKSPACE', and -popmemlim- can be set as
large as desired. (There is also now a clear distinction in mishap
messages between merely exceeding -popmemlim- and actually running out
of memory -- the latter can still happen, of course.) See REF *SYSTEM.
A new integer variable -popminmemlim- controls the minimum number of
words at which the system should maintain the combined heap/user stack
memory area (cf -popmemlim- for the maximum value).
See REF *SYSTEM for details.
For Lisp users
New module, "storeutils", added. This provides a Lisp interface
to POPLOG Storeage Management facilities. See HELP * STOREUTILS.
Note: the variable *GC-TIME* is now part of the "storeutils" module;
it is only defined if this module has been loaded. Also, the macro
TIME will only print GC time statistics if "storeutils" is loaded.
-- External load and LIB EXTERNAL -------------------------------------
LIB EXTERNAL now returns a ddecimal when given a ddecimal in
call-by-references using an identifier.
New 'external-type' keys allow the creation of 'external class' data
objects, containing references to external (non-Poplog) data structures
and treated specially by -external_apply-.
See REF *EXTERNAL, REF *KEYS, HELP *RECORDCLASS
The LIB EXTERNAL package is intended to simplify the use of
external_load. The package has been extended to cope with more of
the syntax of Fortran 77. For the moment the extended version and the
old version are both provided in case there are problems of upward
compatibility. From V14 he old version will be withdrawn.
The new version is LIB *NEWEXTERNAL documented in HELP *NEWEXTERNAL and
associated with LIB * NEWFORTRAN_DEC.
To use the new version it is necessary to do
lib newexternal
or
uses newexternal
explicitly before using the "external" commands described in the help
file.
-- Lisp Changes -------------------------------------------------------
See HELP *LISPNEWS
There are several new facilities including improved support for Lisp
in the editor VED and some useful new modules. Lisp performance has
been improved.
See also HELP *POPLISP
-- Prolog Changes -----------------------------------------------------
Improvements have been made to the database handling mechanism. The
predicates assert/1, retract/1 and clause/2 (and their derivatives) now
all work substantially faster than previously. Certain inconsistencies
in behaviour have also been removed.
There have also been improvements in the error handler, several minor
bug fixes, and a number of new utilities (e.g. new predicte
declarations) improved VED support for Prolog, and improved
documentation.
See HELP *PLOGNEWS for information about additional changes.
-- Pop-11 syntax ------------------------------------------------------
A new macro
#_INCLUDE 'filename'
enables the stream of items from a file to be 'included' in (spliced
into) the current -proglist-. See REF * PROGLIST.
Improved facilities for defining new syntactic forms. The syntax for
"define" has been extended to allow users to define new syntactic forms
enclosed by "define" and "enddefine", e.g.
define :class name ...
enddefine;
Using define and enddefine as openers and closers enables a collection
of standard VED utilities to be used without change, e.g. ved_mcp,
ved_lcp, ved_gsp. For full details see HELP * DEFINE_FORM.
REF * POPSYNTAX has not yet been updated to accommodate the new syntax.
HELP * DEFINE had seriously misleading information about definitions
specifying negative precedence. This has been corrected.
New POP-11 syntax -fast_repeat- speeds up loops of the form
fast_repeat <expression> times
<actions>
endfast_repeat ;;; or endrepeat
New syntax words -returnif- and -returnunless- added.
See REF * SYNTAX and REF * POPSYNTAX
The quoted word syntax has been extended to allow a string between the
word quotes. Thus the following are now legal Pop-11:
vars s1 = "'a string !!'";
if pdprops(proc) == "'foo/3'" then
The syntax words that can occur between "define" and a procedure name
have been listed in the list -define_headers-, and those which can occur
after the procedure call pattern in the header are in the list
-define_terminators-. Both are used by ved_f and the former by
-ved_tidy-.
-- New procedures, data-types, global variables, etc ------------------
Short (16 bit signed) vectors ("shortvec") added to complement "intvec".
See REF *INTVEC.
A set of ``fast'' procedures for accessing integer vectors in a
consistent way has been added - see REF *FASTPROCS.
-newanyarray- now checks that the arrayvector is big enough for the
maximum arrayvector bound. -arrayvector- now has an updater
pop11_comp_procedure(CLOSER, P_NAME, PROPS) -> P;
Compiles a procedure from just before the argument list up to
CLOSER (a word or list of words e.g. "end" "enddefine"
"endprocedure"). P_NAME is the name of the procedure or false,
-radix_apply- allows printing with a new radix. E.g. to print N in octal
radix_apply(N,pr,8)
See REF * LISTS /sysconslist_onto
A bug in -newanyarray- has been fixed - it is now possible to create
0-dimensional arrays by specifying an empty -boundslist-. However, this
means that is no longer possible to directly specify -nil- as the
initial element of an array, because -nil- will now be interpreted as a
-boundslist-.
New facility -sys_destroy_action- allows users to assign a procedure to
be run when a data object becomes garbage. This enables tidying up
to be done (e.g. notifying a remote window manager that a certain
window is no longer needed). See REF *PROPS
The procedure sys_= now returns true for two closures if their pdparts
are =, they have the same number of frozvals, and their corresponding
frozvals are =. See REF * KEYS
ISSUBSTRING has been altered: the second argument (integer) is now
optional and defaults to 1.
Two new string procedures in library * ISMIDSTRING(s1,s2),
* HASMIDSTRING(s2,s1). See REF * STRINGS
The procedure * ISSTARTSTRING has been moved from the library into the
system and re-defined to be more efficient.
* HASSUBSTRING has been modified so that it accepts an optional integer
argument analogous to * ISSUBSTRING
The new procedure -consclosure- constructs closures without requiring
the frozvals to be in a list. Format is
consclosure(P, FROZ_1, FROZ_2, ..., FROZ_N, N)
-partapply- has been moved out of the system to the autoloadable
library; it is now just: consclosure(P, destlist(FROZ_LIST))
See REF * PROCEDURE
Added -fast_frozval-, non-checking version of -frozval-.
A new procedure -property_active- allows the active default procedure
for a property to be accessed or updated (in particular, the updater can
be used to give an active default to a property constructed with
-newproperty-). See REF * PROPS
The library procedure -datafile- can now save ordinary -newproperty-
style properties. See HELP * DATAFILE.
A new procedure -ident_declare- declares permanent variables. This is
basically the same as -sysSYNTAX- (with the same arguments), except that
-ident_declare- has no interaction with lexical declarations.
See REF * IDENT, REF * VMCODE.
The fast arithmetic operators -fi_div- and -fi_rem- are now in the core
system rather than the autoloadable library. See REF * FASTPROCS
The standard empty string previously called -vednullstring- is now
called -nullstring- (the old name remains as an autoloadable synonym).
New procedures that operate on lists added: -fast_subscrl- and -initl-.
Also, -fast_ncdelete- moved from library to system.
See REF * LISTS, REF * FASTPROCS
The new (active) variable -pop_pr_level- controls the depth to which
components of datastructures are printed. See REF *PRINT.
The variables -popfilename- and -poplinenum- are now set correctly
during non-interactive compilation from a VED buffer. This means that
error messages resulting from 'lmr' compilation will now display source
file name and line number.
The macro -uses- now plants a call to a new procedure -useslib-, rather
than executing immediately. See REF * LIBRARY/uses
Discovered and fixed a serious (and ancient) bug in concatenating words
with the <> operator. When one or other word was empty (i.e. 0 length),
the result returned was garbage, and the heap was corrupted.
New procedure match_wordswith described in HELP * WORDSWITH.
-match_wordswith- takes a string and matching procedure, or else a
string pattern and returns a sorted list of all matching words in the
Poplog dictionary. (Used in a new VED facility)
LIB NCREV speeded up by a factor of about 4 on non-dynamic lists.
See HELP NCREV
-- Words, identifiers and sections ------------------------------------
The procedure -section_pathname- returns the full pathname of a section,
as a string. See REF *SECTIONS.
The procedure -identof- now has an updater, enabling (permanent)
identifiers to be attached directly to words. -Syssynonym- can now
be defined simply as
identof(word2) -> identof(word1)
Enhancements and bug fixes to the section mechanism (see REF *SECTIONS):
1. Imports and exports specified in a -section- statement now
take effect in all intermediate sections specified in a pathname,
e.g.
section $-tom$-dick$-harry xxx => yyy;
...
endsection
imports -xxx- from top-level down through -tom- and -dick- into
-harry-, and exports -yyy- from -harry- up through them to top-level
2. -word_identifier- has been enhanced so that it can return
'undeclared' word identifiers
word_identifier(WORD, SECT, "undef") -> WORD_ID
when WORD is not currently declared in SECT. The WORD_ID returned
then will act as a vehicle for declaring WORD in SECT, in the sense
that any later attachment of an identifier to WORD_ID (e.g. with
-sysSYNTAX-, -syssynonym-, etc), will simultaneously attach that
identifier to WORD in section SECT (conversely, a later declaration
of WORD in SECT will cause the new identifier to become attached to
WORD_ID also).
The new facility is now used by the procedure that reads
identifier pathnames in POP-11 (-sys_read_path-), and this means
that new sectioned identifiers can be declared or defined by
pathname reference alone. For example,
define $-foo$-xxx(); ... enddefine;
previously produced a mishap unless -xxx- was already declared in
section -foo-, but works in the new system (but note however that
this mechanism will NOT create new sections -- any sections involved
must have been created first by a -section- statement).
The -cancel- syntax word now also uses -sys_read_path-, and so
can be used to cancel sectioned identifiers.
-- Documentation changes ----------------------------------------------
HELP * LISPNEWS and HELP * PLOGNEWS have been updated.
There have been a number of improvements to old documentation (e.g.
some of the teach files improved), and a considerable amount of
new documentation, e.g. HELP * DICTIONARY explaining some aspects
of the structure and function of the Poplog dictionary, and REF * SYSTEM
describing system startup and reset, exit, interrupts, etc.
A number of HELP and TEACH files have been improved, with cross
references brought up to date:
HELP *DEVICE *DEVNAME *HELPFILES *INPUT *INPUTOUT *IO *NEXTCHAR
*OUTPUT *POPDEVRAW *POPRAWDEVIN *POPRAWDEVOUT *RAWOUTFLUSH
*SYSTRMDEV *FILL *DL *EXPLODE
HELP * DOCUMENTATION, * VEDSYSFILE, * VEDGETSYSFILE
TEACH * PERCENT, HELP * PARTAPPLY, * PERCENT, * CLOSURES
HELP * VEDVARS substantially improved. Broken down into different
sections, with clearer information for anyone tailoring VED to a
new terminal.
HELP * VEDCOMMS reorganised and clarified. Now includes information on
VED command line processing.
New versions of the following TEACH files have been installed.
BUFFERS DATABASE DEFINE LMR MARK MATCHES MOREVED
RESPOND SWITCHWINDOW TEACH TEACHFILES VARS VED VEDPOP
The main change is that these files are now TERMINAL INDEPENDENT: It is
assumed that the learner has a keyboard map and VED keys are referred to
by logical names as in the VED User Guide. In addition The files make
use of "load marked range" rather than <ENTER> x (i.e all compilation is
now done from the edit buffer). The recommended initial teaching
sequence is therefore:
TEACH, WINDOW, MARK, SWITCHWINDOW, BUFFERS, LMR, VEDPOP, RIVER,
MATCHES, RESPOND, DEFINE, VARS, MOREMATCHES, DATABASE, MOREVED.
Online HELP and VED_?? documentation on *FILL, *DL and *EXPLODE did not
mention that FILL could take records as well as vectors, and that DL and
EXPLODE now have updaters. Now fixed.
A new PWM help file *PWMWINIO has been added, discussing how to achieve
character-stream I/O on PWM user windows.
-- Errors and tracing -------------------------------------------------
Tracing facilities extended as follows.
1. Trace output is printed even if the procedure is entered or
exitted in an 'abnormal' fashion. These abnormal entry/exit statuses
are indicated by replacing the `>` and `<` that occur in normal
trace output by one of the following characters:
R entry due to process resume
S exit due to process suspend
X any other abnormal exit
2. The new variable POPMAXTRACEINDENT (default 40) controls whether
trace printing uses rows of exclamation marks to indicate depth of
procedure calls or a number in brackets. The latter can be forced in
all contexts by assigning 0 to POPMAXTRACEINDENT, producing trace
printing of the form:
[ 3]> addup 1 ;;; depth of recursive call is 3
[ 4]> addup 0 ;;; depth is 4
[ 4]< addup 0 ;;; exiting call of depth 4
[ 3]< addup 1
For full details see HELP * TRACE.
NOTE
Abnormal exits due to -setpop- are not displayed
Abnormal exit tracing can be turned on/off
-- New virtual machine instructions -----------------------------------
New VM instructions sysSUBSCR and sysUSUBSCR for planting fast in-line
vector subscriptor code (for arbitrary vector types). Also
sysEXT_FIELDVAL, sysUEXT_FIELD_VAL, sysEXT_SUBSCR, sysUEXT_SUBSCR, for
planting accesses to data pointed to by external class data objects.
See REF *VMCODE, REF *EXTERNAL
POPLOG VM procedures that previously had updaters that were not
alterable by users have been changed to call the corresponding
user-definable procedures. So the updater of sysPUSH now calls sysPOP,
the updater of sysCALLQ calls sysUCALLQ the updater of sysCALL calls
sysUCALL, the updater of sysCALLS calls sysUCALLS, the updater of
sysPASSIGN calls sysUPASSIGN. See REF* VMCODE
New VM flag -VM_NO_CHECK_GO_ON_INT- added. See REF * VMCODE/sysGO_ON
-- VMS only -----------------------------------------------------------
Conversion to VMS version 5.0
-- UNIX only ----------------------------------------------------------
There are new handlers for the 'suspend' and 'continue' signals, and
as a result VED's default behaviour on suspension is more sensible.
See HELP * STOP, REF*SIGNALS
The -syssleep- procedure now exits only in response to the timer or
ctrl-C interrupts, not other signals.
A collection of utilities for multiplexing and communication between
Poplog and sub-processes via pseudo-teletypes has been added to the
unsupported library. This includes a more sophisticated
'shell-in-ved-buffer' interface - like IMCSH only more useful as it can
be used for interactive programs.
See HELP *PTYFORK, HELP *MUX, HELP *VSH.
A new collection of autoloadable facilities for running Unix commands
and reading the output back through a pipe includes VED commands for
running processes and reading the output into a temporary VED buffer.
See HELP * PIPEUTILS for an overview.
The new procedures and VED commands include:
pipein(C,A,B) -> R
run a command with specified arguments and return a device or
repeater to access the pipe.
vedpipein(C,A,F,P,B,H)
run a command and read the output into a temporary ved file F
with header and formatting controlled by P, B, and H.
vedgenshell(C,H)
Run a shell command, read output into a VED file with header H.
<ENTER> sh <command>
<ENTER> csh <command>
<ENTER> rsh <machine> <command>
<ENTER> rved <machine> <file>
Compile and run C or Fortran programs using <ENTER> ccomp and
<ENTER> fcomp. See HELP CCOMP, HELP FCOMP
The procedure -sysfileparse-, on Unix POPLOG systems only, can be given
an optional second argument specifying the host name delimiter
character. See HELP * SYSFILEPARSE
-- LIB FLAVOURS -------------------------------------------------------
Various bug fixes to this object oriented programming library are
recorded in HELP NEWS.
-- Changes to the editor, VED -----------------------------------------
LIB * VEDEMACS has been extensively revised, as described in
HELP * VEDEMACS. The main changes are
a. A useable version is available for VMS with alternatives to the
control characters ^S, ^Q, ^Y
b. Several discrepancies between LIB VEDEMACS and standard UNIX
EMACS have been removed. E.g. capitalisation of initial letter of
words, tracking end of line, etc. work. Other discrepancies remain,
however. Other changes are listed in the HELP file.
Unix only: There is also a "dired" -like extension to VED partly
inspired by the EMACS dired. ved_dired enables you to read a directory
listing into a VED buffer then very easily delete, copy, rename, or edit
individual files. If one of the files is itself a directory dired can be
used to read in a listing for that directory. The facility is extendable
by users, who can define new dired options to operate on the file named
in the line containing the VED cursor. See HELP * DIRED for full
details.
Improved VED support for Lisp users is described in HELP*LISPNEWS
Added -ved_capword- for convenient invocation in VED
<ENTER> capword N will capitalise N words.
See HELP * VEDEMACS/Capitalise, HELP * VEDPROCS/vedcapword,
HELP * VEDCOMMS/ved_capword
LIB * VEDCONVERTWORD fixed so that it can move to left or to right
(changing case). So <ENTER> ucw, and <ENTER> lcw can now be given
negative arguments. E.g. to convert last three words to upper case, do
<ENTER> ucw -3
User-definable procedure -vedvedquitfile- which is called when a
a VED file is quit.
VED's strategy for deciding what file to edit after a quit has been
simplified - it now simply goes back to the previous file edited
instead of trying to be clever about selecting the last file of the
same type (e.g. TEACH, HELP, etc).
VED_W (<ENTER> w) and VEDWRITEFILES altered so that empty VED files will
be written if they already exist on disk.
-vedstatusbufferlimit- (default 60) is now user assignable, to allow
more <ENTER> commands to be stored in the VED status buffer.
There are new VED commands for manipulating list expressions in the
editor.
Various bugs have been fixed in the search mechanism, and it can now
handle patterns and non-embedded during backward search as well as
forward. In particular
<ENTER> `string`
will search backwards for non-embedded occurrences of 'string'.
VED re-search for previous string generalised.
<ESC> \ and <ESC> /
now no longer merely remember the last search string used, they also
remember whether the search was embedded or not.
The full state of the last search is represented by the following global
variables.
vvedanywhere
- search not constrained to item boundaries
vvedoldsrchdisplay
- original search string, including patterns etc.
vvedsrchstring
- copy of vvedoldsrchdisplay modified for efficient
matching
vvedsrchsize
- length of vvedoldsrchdisplay
<ENTER> s no longer inserts leading spaces when lines become
too long. I.e. it behaves like <ENTER> gs.
<ENTER> s no longer calls -vedscreenbell- at the end of the
search.
Some bugs concerned with searches including patterns and starting beyond
the end of the file have been fixed.
The help file, HELP * VEDSEARCH has been updated and clarified.
-ved_f- now uses the two lists -define_headers- and -define_terminators-
It also now copes with section pathnames in procedure headers, e.g.
<ENTER> f grum
will now find
define $-foo$-baz$-grum(x,y);
It also now works with new "define:" formats, e.g.
define : <type> name
-ved_mep- (mark to end of procedure) now works if called in the middle
of a procedure.
Finding words in the dictionary (apropos)
<ENTER> wordswith <string or string pattern>
Prints into a VED buffer all words in the dictionary that contain the
string or match the pattern. See HELP * WORDSWITH
New procedure -vedteststartsearch- takes a string and searches for line
in current VED buffer starting with the string. Returns line number or
false.
ved_indexify and ved_g both use -vedteststartsearch- so that users can
be less restricted in choice of ved_g_string. See HELP * ENTER_G.
There are new facilities for appending the marked range to a disk
file without reading the file into the editor. They are therefore
faster than ved_to and ved_mo.
<ENTER> wappr <file>
Write and append current range to file. Much faster than
ved_mo or ved_to, since it uses discappend and not VED.
<ENTER> wappdr <file>
Writes the range, appending it to file, and deletes it from
the current file.
See HELP * VEDCOMMS/ved_wappr
The standard empty string previously called -vednullstring- is now
called -nullstring- (the old name remains as an autoloadable synonym).
Some internal VED procedures for refreshing parts of the screen
are documented in HELP VEDCOMMS and made available to users.
vedrefreshtail(boolean, wline, wcol, index, string)
Refresh line to right of window line wline column wcol
For details see HELP * VEDCOMMS/vedrefreshtail
vedrefreshline(boolean, wline, string, <boolean or char>)
Refresh whole of window line wline
For details see HELP * VEDCOMMS/vedrefreshline
vedrefreshstatus()
Refresh status line
The new procedure -is_ved_lmr_stream- recognises character repeaters
given to -popcompiler- by -ved_lmr-.
<ENTER> @ options extended to allow all the following, described
in HELP * VEDCOMMS
<argument> <line to go to>
a first line of file
z last line of file
m marked range start
e end of marked range
<integer> go to line number <integer>
+<integer> go forward by <integer> lines
-<integer> go back by <integer> lines
Bug in -vedappfiles- fixed: it now correctly restores the original VED
environment if an error occurs during execution.
VEDEXPAND file name option modified. ^f will now expand to file name
EXCLUDING trailing comma or period. See TEACH * VEDEXPAND
VED debugging aid * VEDDEBUG altered so that it makes the cursor wiggle
at the current line and column, and if popready is invoked it now
restores the screen properly.
VEDWRITERANGE can now accept a device instead of a file name.
Tab conversion (with VEDNOTABS false) is now done for all VED files read
or written, whether a disk file is involved or some other device.
See HELP * VEDPROCS/vedwriterange *VEDVARS/vedreadintabs
<ENTER> ??
with no argument, no longer puts the default argument (next
item in VED buffer) onto the command line. Instead it puts the
expanded command on the previous line in the command line
buffer. See HELP * VED_WHAT
New VED procedure VEDENDRANGE jumps to end of marked range, just as
VEDMARKFIND jumps to beginning. SHOWLIB * VEDENDRANGE
When VED reads in files it now sets -popmemlim- locally to
popmemused + 1000000.
This should largely cure the problem of running out of memory while
reading in a large file.
-- Poplog Window Manager (PWM) ----------------------------------------
Most of the work has been consolidation and bug fixing, as the major
effort has gone into work to provide support for the X Windows System
Version 11. The X-11 extensions to Poplog will be made available
later, and a PWM compatibility package provided.
A new PWM help file *PWMWINIO has been added, discussing how to achieve
character-stream I/O on PWM user windows.
-pwm_window_label- and -pwm_icon_label- now update internal
representations of label (used by event printing routines etc.)
DOC *PWM has been updated.
-- KEATS - the knowledge engineering apprentice tool system -----------
This is a system developed originally by the Open University and British
Telecom on a symbolics computer. Part of KEATS has been ported to Sun
Poplog running under the X Window System Version 10.4. This will be made
available initially only to UK academic institutions. However, if there
is sufficient demand it may be made more widely available. Please
consult your Poplog supplier.
-- Miscellaneous ------------------------------------------------------
LIB SHOWTREE no longer calls vedsetup if it is being compiled by
a non-interactive process.
The structure browser LIB INSPECT now defines -inspect1-, a procedure
that displays an object in the standard -inspect- format, without
entering an interactive loop. See HELP * INSPECT
LIB SHOWARRAY for easy printing of arrays as tables of values or blocks
of 'grey-level' characters, and LIB READARRAY to allow files of
characters or turtle pictures such as LIB GREYPIC to be read into
ordinary arrays.
See TEACH * SHOWARRAY and TEACH * READARRAY.
The Unix LIB VED_SEND facilities have been extended. SEE HELP * SEND
-- NOTE ON FILENAMES --------------------------------------------------
In some of the examples in this file and elsewhere, UNIX file name
format is used. VMS users should do the corresponding translation. E.g.
UNIX version VMS version
------------ -----------
$usepop/pop/lib/psv/eliza.psv USEPOP:[POP.LIB.PSV]ELIZA.PSV
$usepop/pop/com/poplog USEPOP:[POP.COM]POPLOG.COM
The addition of ".COM" is required only for command files. Apart
from this, the UNIX format may be used in VMS POPLOG programs. They will
automatically be translated. See the section on "File Specifications" in
DOC * SYSSPEC
--- C.all/help/v13_6.changes
--- Copyright University of Sussex 1988. All rights reserved. ----------Author: A.Sloman Oct 1988