Skip to content

Commit

Permalink
Add VimClojure plugin.
Browse files Browse the repository at this point in the history
rev d4497538ae397efdb0f684b3d3278e4c6ec8effd
  • Loading branch information
bernd committed Apr 3, 2012
1 parent 9f12f6c commit 47eacae
Show file tree
Hide file tree
Showing 30 changed files with 3,345 additions and 0 deletions.
1,080 changes: 1,080 additions & 0 deletions autoload/vimclojure.vim

Large diffs are not rendered by default.

108 changes: 108 additions & 0 deletions autoload/vimclojure/util.vim
@@ -0,0 +1,108 @@
" Part of Vim filetype plugin for Clojure
" Language: Clojure
" Maintainer: Meikel Brandmeyer <mb@kotka.de>

let s:save_cpo = &cpo
set cpo&vim

function! vimclojure#util#SynIdName()
return synIDattr(synID(line("."), col("."), 0), "name")
endfunction

function! vimclojure#util#WithSaved(closure)
let v = a:closure.save()
try
let r = a:closure.f()
finally
call a:closure.restore(v)
endtry
return r
endfunction

function! s:SavePosition() dict
let [ _b, l, c, _o ] = getpos(".")
let b = bufnr("%")
return [b, l, c]
endfunction

function! s:RestorePosition(value) dict
let [b, l, c] = a:value

if bufnr("%") != b
execute b "buffer!"
endif
call setpos(".", [0, l, c, 0])
endfunction

function! vimclojure#util#WithSavedPosition(closure)
let a:closure.save = function("s:SavePosition")
let a:closure.restore = function("s:RestorePosition")

return vimclojure#util#WithSaved(a:closure)
endfunction

function! s:SaveRegister(reg)
return [a:reg, getreg(a:reg, 1), getregtype(a:reg)]
endfunction

function! s:SaveRegisters() dict
return map([self._register, "", "/", "-",
\ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"],
\ "s:SaveRegister(v:val)")
endfunction

function! s:RestoreRegisters(registers) dict
for register in a:registers
call call(function("setreg"), register)
endfor
endfunction

function! vimclojure#util#WithSavedRegister(reg, closure)
let a:closure._register = a:reg
let a:closure.save = function("s:SaveRegisters")
let a:closure.restore = function("s:RestoreRegisters")

return vimclojure#util#WithSaved(a:closure)
endfunction

function! s:SaveOption() dict
return eval("&" . self._option)
endfunction

function! s:RestoreOption(value) dict
execute "let &" . self._option . " = a:value"
endfunction

function! vimclojure#util#WithSavedOption(option, closure)
let a:closure._option = a:option
let a:closure.save = function("s:SaveOption")
let a:closure.restore = function("s:RestoreOption")

return vimclojure#util#WithSaved(a:closure)
endfunction

function! s:DoYank() dict
silent execute self.yank
return getreg(self.reg)
endfunction

function! vimclojure#util#Yank(r, how)
let closure = {
\ 'reg': a:r,
\ 'yank': a:how,
\ 'f': function("s:DoYank")
\ }

return vimclojure#util#WithSavedRegister(a:r, closure)
endfunction

function! vimclojure#util#MoveBackward()
call search('\S', 'Wb')
endfunction

function! vimclojure#util#MoveForward()
call search('\S', 'W')
endfunction

" Epilog
let &cpo = s:save_cpo
80 changes: 80 additions & 0 deletions bin/clj
@@ -0,0 +1,80 @@
#!/bin/bash

# Copyright (c) Stephen C. Gilardi. All rights reserved. The use and
# distribution terms for this software are covered by the Eclipse Public
# License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can be
# found in the file epl-v10.html at the root of this distribution. By
# using this software in any fashion, you are agreeing to be bound by the
# terms of this license. You must not remove this notice, or any other,
# from this software.
#
# clj-env-dir Launches Clojure, passing along command line arguments. This
# launcher can be configured using environment variables and
# makes it easy to include directories full of classpath roots
# in CLASSPATH.
#
# scgilardi (gmail)
# Created 7 January 2009
#
# Modified to read in an optional .clojure file in the current directory
# naming further items for the CLASSPATH.
#
# Meikel Brandmeyer (mb ? kotka ! de)
# Frankfurt am Main, 21.08.2009
#
# Environment variables (optional):
#
# CLOJURE_EXT Colon-delimited list of paths to directories whose top-level
# contents are (either directly or as symbolic links) jar
# files and/or directories whose paths will be in Clojure's
# classpath. The value of the CLASSPATH environment variable
# for Clojure will include these top-level paths followed by
# the previous value of CLASSPATH (if any).
# default:
# example: /usr/local/share/clojure/ext:$HOME/.clojure.d/ext
#
# CLOJURE_JAVA The command to launch a JVM instance for Clojure
# default: java
# example: /usr/local/bin/java6
#
# CLOJURE_OPTS Java options for this JVM instance
# default:
# example:"-Xms32M -Xmx128M -server"
#
# CLOJURE_MAIN The Java class to launch
# default: clojure.main
# example: clojure.contrib.repl_ln

set -o errexit
#set -o nounset
#set -o xtrace

if [ -n "${CLOJURE_EXT:-}" ]; then
OLD="$IFS"
IFS=":"
EXT="$(find -H ${CLOJURE_EXT} -mindepth 1 -maxdepth 1 -print0 | tr \\0 \:)"
IFS="$OLD"
if [ -n "${CLASSPATH:-}" ]; then
CLASSPATH="${EXT}${CLASSPATH}"
else
CLASSPATH="${EXT%:}"
fi
fi

if [ -f .clojure ]; then
for path in `cat .clojure`; do
if [ -n "${CLASSPATH:-}" ]; then
CLASSPATH="${path}:${CLASSPATH}"
else
CLASSPATH="${path%:}"
fi
done
fi

export CLASSPATH

JAVA=${CLOJURE_JAVA:-java}
OPTS=${CLOJURE_OPTS:-}
MAIN=${CLOJURE_MAIN:-clojure.main}

exec ${JAVA} ${OPTS} ${MAIN} "$@"
77 changes: 77 additions & 0 deletions bin/ng-server
@@ -0,0 +1,77 @@
#! /usr/bin/env bash

# Copyright (c) Stephen C. Gilardi. All rights reserved. The use and
# distribution terms for this software are covered by the Eclipse Public
# License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can be
# found in the file epl-v10.html at the root of this distribution. By
# using this software in any fashion, you are agreeing to be bound by the
# terms of this license. You must not remove this notice, or any other,
# from this software.
#
# clj-env-dir Launches Clojure, passing along command line arguments. This
# launcher can be configured using environment variables and
# makes it easy to include directories full of classpath roots
# in CLASSPATH.
#
# scgilardi (gmail)
# Created 7 January 2009
#
# Modified to act as launcher for the Nailgun server and to read in an
# optional .clojure file in the current directory naming further items
# for the CLASSPATH.
#
# Meikel Brandmeyer (mb ? kotka ! de)
# Frankfurt am Main, 21.08.2009
#
# Environment variables (optional):
#
# CLOJURE_EXT Colon-delimited list of paths to directories whose top-level
# contents are (either directly or as symbolic links) jar
# files and/or directories whose paths will be in Clojure's
# classpath. The value of the CLASSPATH environment variable
# for Clojure will include these top-level paths followed by
# the previous value of CLASSPATH (if any).
# default:
# example: /usr/local/share/clojure/ext:$HOME/.clojure.d/ext
#
# CLOJURE_JAVA The command to launch a JVM instance for Clojure
# default: java
# example: /usr/local/bin/java6
#
# CLOJURE_OPTS Java options for this JVM instance
# default:
# example:"-Xms32M -Xmx128M -server"
#
# .clojure A file in the current directory. Every line names an item
# which will be added to the CLASSPATH.

set -o errexit
#set -o nounset
#set -o xtrace

if [ -n "${CLOJURE_EXT:-}" ]; then
OLD="$IFS"
IFS=":"
EXT="$(find -H ${CLOJURE_EXT} -mindepth 1 -maxdepth 1 -print0 | tr \\0 \:)"
IFS="$OLD"
if [ -n "${CLASSPATH:-}" ]; then
export CLASSPATH="${EXT}${CLASSPATH}"
else
export CLASSPATH="${EXT%:}"
fi
fi

if [ -f .clojure ]; then
for path in `cat .clojure`; do
if [ -n "${CLASSPATH:-}" ]; then
export CLASSPATH="${path}:${CLASSPATH}"
else
export CLASSPATH="${path%:}"
fi
done
fi

JAVA=${CLOJURE_JAVA:-java}
OPTS=${CLOJURE_OPTS:-}

exec ${JAVA} ${OPTS} vimclojure.nailgun.NGServer 127.0.0.1 "$@"

0 comments on commit 47eacae

Please sign in to comment.