*workshop.txt*  For Vim version 7.4.  Last change: 2013 Jul 06


		  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 provided by Arnaud Le Hors of the French National Institute
for Research in Computer Science and Control.  It can be downloaded from
http://cgit.freedesktop.org/xorg/lib/libXpm.  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:
