Search                        Top                                  Index
HELP VEDEXPAND                                John Williams, August 1986

This file describes a VED command line substitution mechanism. By
default, this facility is switched off. To use it, assign an *ASCII code
to the variable VEDEXPANDCHAR, like this

    `^` -> vedexpandchar;

Having done this, VED <ENTER> commands will be interpreted in a special
way. Whenever ^ occurs in the command, the character following it will
be used to select and execute a procedure from the property
VEDEXPANDCHARS. The printed representation of whatever this procedure
returns is spliced into the original command in place of the ^ and
subsequent character.

The following expander commands are defined:

    ^w      replace ^w with word at cursor position in current file
    ^l      replace ^l with the current line
    ^f      replace ^f with a filename read from the current line
    ^e      replace ^e with characters from cursor to end of line
    ^%      replace ^% with VEDPATHNAME (full name of current file)
    ^p      replace ^p with SYS_FNAME_PATH(VEDPATHNAME)
                        (i.e. directory part of current file name)
    ^#      replace ^# with path name of next file on VEDBUFFERLIST
    ^^      replace ^^ with ^   (!)


To illustrate, imagine that you have a VED file that contains a
directory listing (perhaps obtained by doing <ENTER> LS). To edit one of
the files listed, you could simply move the cursor to the start of the
desired filename, and do

    <ENTER> ved ^f <RETURN>

Note - this option treats as a file name all the text to the right of
the cursor, up to the next space, tab, ', ), or newline. There is no
check that it is a legal file name. So this option can be used for any
purpose where it would be useful to incorporate such text into a ved
command.

By contrast the '^w' option uses the text on the right of the cursor
that would be returned by VEDNEXTITEM.

The ^w option is often used in conjunction with the <ENTER> commands for
searching and substituting text items. For example, if your file
included the mispelt word 'hipopotamus', you could correct the mistake
by moving the cursor to the beginning of the word, and giving the
command

    <ENTER> s"^w"hippopotamus <RETURN>


To include a ^ as a literal character in a command, use ^^


-- Looking back at previous commands ----------------------------------

Expanded versions of the commands are saved in the VED command file. In
order to view them (and, if necessary re-do them), get the cursor to the
VED status line, using the STATUSSWITCH key (sometimes called CHANGE
MODE key), then use the CHARUP key.


-- Customising the VEDEXPAND facility ----------------------------------

Expansion of <ENTER> commands only occurs if the variable VEDEXPANDCHAR
has a non-FALSE value. Above, it was suggested that `^` should be
assigned to it. However, any ASCII code will do, although it would be
unwise to use an alphabetic or numeric character code.

As outlined above, the character following the instance of VEDEXPANDCHAR
in the command is used to select the expander procedure. The property
VEDEXPANDCHARS controls the mapping from selector characters to
expansion procedures. Users can assign their own procedures into this
property. Such procedures should return an object to which
*DEST_CHARACTERS can be applied. The characters so produced are spliced
into the command in place of VEDEXPANDCHAR and the subsequent selector
character.

For example, one might want to insert the "name" part of of the current
file name into a command, in order to edit files with the same name but
a different extension. This is how that might be done:

    procedure();
        sys_fname_name(vedpathname)
    endprocedure -> vedexpandchars(`n`);

Then, while editing a file called 'longfilename.p', one could edit
'longfilename.lsp' by doing

    <ENTER> ved ^n.lsp


--- C.all/help/vedexpand
--- Copyright University of Sussex 1990. All rights reserved. ----------