Go to the first, previous, next, last section, table of contents.


Creating VLS Shell Commands

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 command called 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.

VLS Shell Commands in General

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

(vls-shell specifics)

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-1 and 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 ~/.emacs file.

VLS Shell Commands in Agroups

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

$VLSLIBDIR/extra/agroups-vls.el

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 ~/.emacs file

(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.