*workshop.txt*  For Vim version 7.0aa.  Last change: 2005 Mar 29


		  VIM REFERENCE MANUAL    by Gordon Prieur


Sun Visual WorkShop Features			*workshop* *workshop-support*

1. Introduction						|workshop-intro|
2. Commands						|workshop-commands|
3. Compiling vim/gvim for WorkShop			|workshop-compiling|
4. Configuring gvim for a WorkShop release tree		|workshop-configure|
5. Obtaining the latest version of the XPM library	|workshop-xpm|

{Vi does not have any of these features}
{only available when compiled with the |+sun_workshop| feature}

==============================================================================
1. Introduction						*workshop-intro*

Sun Visual WorkShop has an "Editor of Choice" feature designed to let users
debug using their favorite editors.  For the 6.0 release we have added support
for gvim.  A workshop debug session will have a debugging window and an editor
window (possibly others as well).  The user can do many debugging operations
from the editor window, minimizing the need to switch from window to window.

The version of vim shipped with Sun Visual WorkShop 6 (also called Forte
Developer 6) is vim 5.3.  The features in this release are much more reliable
than the vim/gvim shipped with Visual WorkShop.  VWS users wishing to use vim
as their editor should compile these sources and install them in their
workshop release tree.

==============================================================================
2. Commands						*workshop-commands*

						*:ws* *:wsverb*
:ws[verb] verb			Pass the verb to the verb executor

Pass the verb to a workshop function which gathers some arguments and
sends the verb and data to workshop over an IPC connection.

==============================================================================
3. Compiling vim/gvim for WorkShop			*workshop-compiling*

Compiling vim with FEAT_SUN_WORKSHOP turns on all compile time flags necessary
for building a vim to work with Visual WorkShop.  The features required for VWS
have been built and tested using the Sun compilers from the VWS release.  They
have not been built or tested using Gnu compilers.  This does not mean the
features won't build and run if compiled with gcc, just that nothing is
guaranteed with gcc!

==============================================================================
4. Configuring gvim for a WorkShop release tree		*workshop-configure*

There are several assumptions which must be met in order to compile a gvim for
use with Sun Visual WorkShop 6.

    o You should use the compiler in VWS rather than gcc.  We have neither
      built nor tested with gcc and cannot guarantee it will build properly.

    o You must supply your own XPM library.  See |workshop-xpm| below for
      details on obtaining the latest version of XPM.

    o Edit the Makefile in the src directory and uncomment the lines for Sun
      Visual WorkShop.  You can easily find these by searching for the string
      FEAT_SUN_WORKSHOP

    o We also suggest you use Motif for your gui.  This will provide gvim with
      the same look-and-feel as the rest of Sun Visual WorkShop.

The following configuration line can be used to configure vim to build for use
with Sun Visual WorkShop:

    $ CC=cc configure --enable-workshop --enable-gui=motif \
	-prefix=<VWS-install-dir>/contrib/contrib6/<vim-version>

The VWS-install-dir should be the base directory where your Sun Visual WorkShop
was installed.  By default this is /opt/SUNWspro.  It will normally require
root permissions to install the vim release.  You will also need to change the
symlink <VWS-install-dir>/bin/gvim to point to the vim in your newly installed
directory.  The <vim-version> should be a unique version string.  I use "vim"
concatenated with the equivalent of version.h's VIM_VERSION_SHORT.

==============================================================================
5. Obtaining the latest version of the XPM library	*workshop-xpm*

The XPM library is required to show images within Vim with Motif or Athena.
Without it the toolbar and signs will be disabled.

The XPM library is provide by Arnaud Le Hors of the French National Institute
for Research in Computer Science and Control.  It can be downloaded from
http://koala.ilog.fr/ftp/pub/xpm.  The current release, as of this writing, is
xpm-3.4k-solaris.tgz, which is a gzip'ed tar file.  If you create the directory
/usr/local/xpm and untar the file there you can use the uncommented lines in
the Makefile without changing them.  If you use another xpm directory you will
need to change the XPM_DIR in src/Makefile.

 vim:tw=78:ts=8:ft=help:norl:
