VLS allows many different kinds of Lisp shell commands to be written
given the basic VLS library. VLS does not want to assume that any one
Lisp command is better than any other. VLS provides a simple VLS shell
vlsc that we showed how to use in the Sample Lisp
Shell Command section, See section Sample Lisp Shell Command. But you can
create your own VLS Lisp shell commands that operate in different ways.
The author for example prefers to invoke VLS Lisp shells as Agroups
entries, See section VLS Shell Commands in Agroups.
More generally VLS is meant to be used by having a user written Lisp
shell command call the
vls-shell function. You use the
vls-shell function by calling with
where specifics is a list of the form
(shell-id lisp-executable specifics-file)
For example this function call
(vls-shell '(allegro "lisp" "$VLSLIBDIR/types/allegro.el"))
is an example of giving the
vls-shell function's specifics
input. The Lisp shell command would usually select a specifics
input based on some user set variable or strategy. The supplied
vlsc, command is a simple example of a user set variable
containing a list of specifics inputs, See section Sample Lisp Shell Command.
The shell-id is a symbol that makes a VLS Lisp shell instance
unique from all other VLS Lisp shells. Additionally the Lisp shell
buffer name and Lisp process name is derived from this symbol. These
could be different Lisp shell types or two or more instances of the Lisp
shell buffer of the same type. For example
allegro-2 could be two Lisp shell buffers running the same Lisp
execute but in different Lisp processes in different buffers.
The lisp-executable is a string that when executed as an Emacs process will run the Lisp type. It will use the user's execution paths if necessary.
The specifics-file is a string containing the pathname of the VLS format Lisp specifics file of that type, See section Type Specifics Files.
When you write such a command you usually specify that when the user
uses your Lisp shell command the VLS function
vls-shell will get
auto-loaded. You specify this as putting
(autoload 'vls-shell "$LISPDIR/vls")
in the user's
Action Groups (Agroups) is a powerful facility for making it easy to create. manipulate, execute and maintain groups and subgroups of automations called actions. Each specific action is generated from a generalized action template. Agroups is extensible and makes it easy to add new such action templates. VLS provides such action templates for creating actions that evaluate things in Lisp shells and for running Lisp shells.
If you use Agroups it is a lot easier to create new Lisp shells without having to write any code. After installing VLS the VLS action templates are in the file
All you need to do is load the VLS provided action templates after you
load the Agroups facility in your
~/.emacs file. So for
example using the notation in this document you could put in your
(load "$LISPDIR/agroups" (load "$VLSLIBDIR/extra/agroups-vls") (autoload 'vls-shell "$LISPDIR/vls")
Thereafter when executing the Agroups operation "View user defined Actions" you will see
User defined actions Vanilla Lisp Shell (keys: l s) Vanilla Lisp Shell: Evaluate a Lisp expression (keys: l e)
When you want to create a new VLS Lisp shell you simply execute the user defined action "Vanilla Lisp Shell" and it will prompt you with the data for a specific Lisp shell and create that specific action entry in the current Agroups group. Each time you execute that specific Lisp shell action it will create a new Lisp shell buffer Associated with that specific Lisp shell process or return to a previously such created Lisp shell buffer.
The user defined action "Vanilla Lisp Shell: Evaluate a Lisp expression" is also very powerful and allows you to have any arbitrary Lisp expression as an Agroups entry that when selected gets evaluated in the current VLS Lisp shell.
Agroups is one of the more preferred ways of using VLS Lisp shells since you can arrange specific Lisp shells and evaluation automations that are local to specific groups or projects.
Go to the first, previous, next, last section, table of contents.