1. Tamas Kovacs
  2. slimv


slimv / description.txt

Lisp and Clojure REPL inside Vim: a script that tries to mimic SLIME.

Slimv tries to mimic a subset of SLIME's (Superior Lisp Interaction Mode for Emacs) functionality inside Vim. The script defines functions and keybindings to send Lisp s-expressions to a Lisp REPL. Slimv runs its own REPL or connects to a running REPL started by a previous Slimv session. The connection to Lisp is established when the first Slimv command is executed (e.g. an s-expression is evaluated).

The Lisp REPL buffer can also be opened inside Vim as a Vim buffer. The script has a basic support for Clojure REPL.

Here follows a list of Slimv commands, for a more complete description with keybindings see the included documentation.

Evaluation commands:
    *  Eval Defun
    *  Eval Last Expression
    *  Pprint Eval Last Expression
    *  Eval Region
    *  Eval Buffer
    *  Interactive Eval
    *  Undefine Function

Debug commands:
    *  Macroexpand-1
    *  Macroexpand
    *  Trace
    *  Untrace
    *  Disassemble
    *  Inspect

Compile commands:
    *  Compile Defun
    *  Compile and Load File
    *  Compile File
    *  Compile Region

Profile commands:
    *  Profile
    *  Unprofile

Documentation commands:
    *  Describe Symbol
    *  Apropos 

Place the cursor at any location inside an s-expression or on a name of a symbol then invoke a Slimv command in order to send the command operated on the given expression or symbol to the running Lisp REPL.

For more information see the documentation coupled with the script.
Installation details
Extract the zip archive into your vimfiles or runtime directory. The archive contains plugin/slimv.vim, plugin/slimv.py and doc/slimv.txt.

Slimv works on Windows and on Linux. The script requires the following programs installed on your system:
    *  Lisp (any Common Lisp should be OK) or Clojure
    *  Python 2.4 or later
    *  Pywin32 is recommended on Windows
Slimv tries to autodetect your Lisp and Python installation directories. If it fails to determine the correct directories, then you need to enter path definitions into your vimrc file:
    let g:slimv_python = 'C:/MyPythonDir/python.exe'
    let g:slimv_lisp = 'C:/MyLispDir/mylisp.exe'

For Clojure set the Lisp path to the Clojure startup command, something like:
    let g:slimv_lisp = '"java -cp clojure.jar clojure.lang.Repl"'

Linux users using terminal emulator other than xterm should define the complete command to run the Slimv client + server. Here follows an example with konsole and clisp:

let g:slimv_client = 'python ~/.vim/plugin/slimv.py -r "konsole -T Slimv -e @p @s -l clisp -s"'

See the included documentation for more complete installation and customization instructions.


Lisp with Vim: a script that tries to mimic a subset of SLIME's functionality.

Lisp and Clojure REPL inside a Vim buffer: Major update to the Slimv script.


0.2.2: Fixed REPL input and output mix-up problems, evaluation performance enhancement, corrected some more macroexpand problems. 

0.2.1: Added basic Clojure support, fixed some macroexpand and REPL refresh problems.

0.2.0: Major update: Lisp REPL inside a Vim buffer.

0.1.4: Corrected the delayed display of last line in REPL window on Linux.
       Ctrl+C is propagated to Lisp REPL, so it is possible to interrupt a running program.

0.1.3: Handle DOS and Unix style line endings on Windows, don't write logfile when debug level not set



- REPL buffer refresh on Vim focus gain works only in gvim, not in console vim
- REPL buffer refresh sometimes does not work first time after the server Lisp windows was just opened
- Ctrl+C does not work from Vim REPL buffer
- Ctrl+C works in server Lisp window (but only in Lisp implementations that support it, so not in SBCL)


Differences to Limp

As far as I know, the main differences at the moment are:
- Limp (0.3.4) works with SBCL on Linux (and Mac?), Slimv (0.1) should work for any Common Lisp implementation on Linux and Windows.
- Limp is a filetype plugin, it does automatic bracket closing, (some) name completion, current form highlighting, Hyperspec lookup in browser.