iamphet.nm.ru - Scheme stuff (MzVim)

Scheme stuff (MzVim)

The site is outdated. Please use google site instead


Metakit bindings for Chicken

Recently, I have implemented a set of bindings to Metakit for Chicken. It can be downloaded from the Chicken eggs site.

Schemete - Metakit bindings for PLT Scheme

The ancestor of Chicken bindings. API is quite different and less comfortable, but contains features that are not implemented in Chicken bindings yet.
sourcesSource code with unit-tests (SchemeUnit-1.x). Was tested on Windows, Linux, FreeBSD. Read doc.txt for build instructions. Distributed under X/MIT license.26 Jan 2004
binariesSource code for all platforms, and Windows binaries, packaged as PLT Scheme archive.26 Jan 2004

Embedding MzScheme in Vim

MzVim future:
As you can notice, Vim7 (now in ALPHA) includes embedded MzScheme interpreter.
But it contains about one third of original MzVim code (very core functionality only) without vimcmd, viml and some vimext (e.g. line-col->pos conversions, buffer ports)
Bram Moolenaar explained that original code is too intrusive and hardly maintainable, when adding new features.
And I agreed with him. So I'll try to implement the most of the original MzVim functionality in Scheme. This will be ugly sometimes, but it is better solution for now.
Although I will maintain the original MzVim for Vim 6.3. Thank you, wait for reworked MzVim for Vim 7.0
If you have any questions (even about whether MzVim is still alive) and suggestions, feel free to contact me.


MzScheme is one of the (greatest) implementations of the Scheme programming language.
I have managed to embed it in Vim.
This work is based on Brent Fulgham's patch.
The patch also improves Scheme code indentation, highlighting and paren matching (particularly, square brackets are recognized).
Supported platforms: Unix, MacOS X, Windows 95/98/Me/NT/2000/XP/2003 (build with MSVC or MinGW).

The main advantages over existing Vim interfaces (Perl, Python, Tcl, Ruby) are:

  1. Full access to Vim commands and registers as well as to VimL built-in variables and functions (so there is virtually no need to execute Vim statements in string literal form).VimL functions to get the results of evaluated MzScheme expressions.
  2. OS-independent threads.
  3. Event-handling mechanism (so Scheme can be used for autocommands, keyboard mappings, menus, and to react to changes in buffers).
  4. Stream-like (port) interface to buffer contents.
  5. Ability to define custom text objects (like a[ or i{).

Old downloads are removed, and new didn't appear yet :)

Also you may be interested in how to integrate PLT documentation with Vim

Integrating PLT documentation with the Vim help system

Use page2vim.scm script to convert TeX2Page'ified HTML documentation. Put .txt files in your Vim documentation directory. Already converted documentation for 207 is also available ("PLT MzScheme: Language Manual", "PLT MzLib: Libraries Manual", "Revised^5 Report on the Algorithmic Language Scheme", "Inside PLT MzScheme", "SRFIs").
Read source code comments for more detailed instructions.

Exuberant Ctags configuration for Scheme

Exuberant Ctags has the poor support for Scheme by default. It can be improved by putting this in your ~/.ctags (or ctags.cnf on Windows) :

Created with Vim