/vimclojure

This is a clone of http://bitbucket.org/kotarak/vimclojure. Development happens over there. This repo might lag behind.

Primary LanguageJavaMIT LicenseMIT

VimClojure – a Clojure environment for Vim

VimClojure is one of the most sophisticated editing environments for Clojure. It provides syntax highlighting, indenting and command completion.

VimClojure is not intended to be an easy to use Clojure IDE, but a plugin to make life easier for people already familiar with Vim. So you should be familiar with Vim and/or Java. Eg. VimClojure won't help you in any way to set up a correct classpath! This is the responsibility of the build system of the given project. So before using the dynamic server make yourself comfortable with Clojure, the JVM and Vim.

Requirements

Please make sure that the following options are set in your .vimrc:

syntax on
filetype plugin indent on

Otherwise the filetype is not activated, and hence VimClojure doesn't work.

The following assumes a standard installation. If you have installed Vim (or are installing VimClojure) in a non-standard way, I trust that you know what you are doing.

Online Documentation

Please refer to the online documentation in the doc folder for further information on how to use VimClojure, its features and its caveats. To rebuild the help tags for the online documentation issue the following command in Vim instance.

" On Unix:
:helptags ~/.vim/doc
" On Windows:
:helptags ~/vimfiles/doc

Here be Dragons

If requested VimClojure also provides a SLIME like interface to dynamically work with Clojure code. For this to work the included Nailgun server must be running. Remote may be forwarded via ssh.

Features of the interactive interface are:

  • dynamic documentation lookup
  • dynamic javadoc lookup (in an external browser)
  • Repl running in a Vim buffer
  • smart omni completion
  • easy evaluation of code in a buffer

However: This is not a requirement! VimClojure works perfectly in offline mode. That is: just unpack the distribution zip in your .vim directory and you are good to go! In fact I discourage newbies to use the server until being more comfortable with Clojure and/or the JVM.

Configuration

To activate the interactive interface define the vimclojure#WantNailgun variable in your .vimrc: let vimclojure#WantNailgun = 1

Building the Nailgun interface

You have to download and install the client program once. Unless there is a note in the release notes it will be compatible with future releases. The client can be downloaded from: http://kotka.de/projects/vimclojure/vimclojure-nailgun-client-.zip.

After unzipping the archive, simply type make in the subdirectory from the zip archive. This will compile the nailgun client. For Windows the client is already pre-compiled as ng.exe.

Configure the location of the nailgun client in your .vimrc:

let vimclojure#NailgunClient = "/path/to/your/ng"

It will default to just ng which should work if the client is on your PATH.

Note: You might need to check the Makefile for special lib requirements to compile the nailgun client, eg. on OpenSolaris.

It is not required to build the server side of the Nailgun interface and I strongly discourage to do so. The server is provided as jar file from Clojars. Just add the artifact to your development dependencies.

  • For Gradle (with Clojuresque):

    dependencies {
        development 'vimclojure:server:<version>'
    }
    
  • For Leiningen:

    (defproject …
      :dev-dependencies […
                         [vimclojure/server "<version>"]
                         …])
    
  • For Ivy:

    <dependency org="vimclojure" name="server" rev="<version>"/>
    
  • For Maven:

      <dependency>
        <groupId>vimclojure</groupId>
        <artifactId>server</artifactId>
        <version><version></version>
      </dependency>
    

For manual download: http://clojars.org/repo/vimclojure/server//server-.jar

There are also launcher scripts included in the vimclojure/bin subdirectory based on Stephen C. Gilardi's clj-env-dir launcher. See information on how to use them in the corresponding files.

-- Meikel Branmdeyer mb@kotka.de Erlensee, 2010