mirror of
https://github.com/amix/vimrc
synced 2025-07-09 02:25:00 +08:00
Add support for Scheme and Racket language.
This commit is contained in:
30
sources_non_forked/slimv/swank-clojure/leiningen/swank.clj
Normal file
30
sources_non_forked/slimv/swank-clojure/leiningen/swank.clj
Normal file
@ -0,0 +1,30 @@
|
||||
(ns leiningen.swank
|
||||
"Launch swank server for Emacs to connect."
|
||||
(:use [leiningen.compile :only [eval-in-project]])
|
||||
(:import [java.io File]))
|
||||
|
||||
(defn swank-form [project port host opts]
|
||||
;; bootclasspath workaround: http://dev.clojure.org/jira/browse/CLJ-673
|
||||
(when (:eval-in-leiningen project)
|
||||
(require '[clojure walk template stacktrace]))
|
||||
`(do
|
||||
(let [is# ~(:repl-init-script project)]
|
||||
(when (.exists (File. (str is#)))
|
||||
(load-file is#)))
|
||||
(require '~'swank.swank)
|
||||
(require '~'swank.commands.basic)
|
||||
(@(ns-resolve '~'swank.swank '~'start-repl)
|
||||
(Integer. ~port) ~@(concat (map read-string opts)
|
||||
[:host host]))
|
||||
;; This exits immediately when using :eval-in-leiningen; must block
|
||||
(when ~(:eval-in-leiningen project)
|
||||
(doseq [t# ((ns-resolve '~'swank.commands.basic
|
||||
'~'get-thread-list))]
|
||||
(.join t#)))))
|
||||
|
||||
(defn swank
|
||||
"Launch swank server for Emacs to connect. Optionally takes PORT and HOST."
|
||||
([project port host & opts]
|
||||
(eval-in-project project (swank-form project port host opts)))
|
||||
([project port] (swank project port "localhost"))
|
||||
([project] (swank project 4005)))
|
Reference in New Issue
Block a user