*if_mzsch.txt*  For Vim version 7.2c.  Last change: 2008 Jun 28


		  VIM REFERENCE MANUAL    by Sergey Khorev


The MzScheme Interface to Vim				*mzscheme* *MzScheme*

1. Commands				|mzscheme-commands|
2. Examples				|mzscheme-examples|
3. Threads				|mzscheme-threads|
4. The Vim access procedures		|mzscheme-vim|
5. Dynamic loading			|mzscheme-dynamic|

{Vi does not have any of these commands}

The MzScheme interface is available only if Vim was compiled with the
|+mzscheme| feature.

Based on the work of Brent Fulgham.
Dynamic loading added by Sergey Khorev

For downloading MzScheme and other info:
	http://www.plt-scheme.org/software/mzscheme/

Note: On FreeBSD you should use the "drscheme" port.

==============================================================================
1. Commands						*mzscheme-commands*

							*:mzscheme* *:mz*
:[range]mz[scheme] {stmt}
			Execute MzScheme statement {stmt}.  {not in Vi}

:[range]mz[scheme] << {endmarker}
{script}
{endmarker}
			Execute inlined MzScheme script {script}.
			Note: This command doesn't work if the MzScheme
			feature wasn't compiled in.  To avoid errors, see
			|script-here|.

							*:mzfile* *:mzf*
:[range]mzf[ile] {file}	Execute the MzScheme script in {file}.  {not in Vi}
			All statements are executed in the namespace of the
			buffer that was current during :mzfile start.
			If you want to access other namespaces, use
			'parameterize'.

All of these commands do essentially the same thing - they execute a piece of
MzScheme code, with the "current range" set to the given line
range.

In the case of :mzscheme, the code to execute is in the command-line.
In the case of :mzfile, the code to execute is the contents of the given file.

Each buffer has its own MzScheme namespace. Global namespace is bound to
the "global-namespace" value from the 'vimext' module.
MzScheme interface defines exception exn:vim, derived from exn.
It is raised for various Vim errors.

During compilation, the MzScheme interface will remember the current MzScheme
collection path. If you want to specify additional paths use the
'current-library-collection-paths' parameter. E.g., to cons the user-local
MzScheme collection path: >
    :mz << EOF
    (current-library-collection-paths
	(cons
	    (build-path (find-system-path 'addon-dir) (version) "collects")
	    (current-library-collection-paths)))
    EOF
<

All functionality is provided through module vimext.

The exn:vim is available without explicit import.

To avoid clashes with MzScheme, consider using prefix when requiring module,
e.g.: >
	:mzscheme (require (prefix vim- vimext))
<
All the examples below assume this naming scheme.  Note that you need to do
this again for every buffer.

The auto-instantiation can be achieved with autocommands, e.g. you can put
something like this in your .vimrc (EOFs should not have indentation): >
    function s:MzRequire()
	if has("mzscheme")
	    :mz << EOF
	    (require (prefix vim- vimext))
	    (let ((buf (vim-get-buff-by-name (vim-eval "expand(\"<afile>\")"))))
	      (when (and buf (                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             