/
clojurebot.el
47 lines (42 loc) · 1.99 KB
/
clojurebot.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
(require 'clojure-mode)
(require 'swank-clojure)
(defvar clojurebot-dir (file-name-directory
(or (buffer-file-name) load-file-name)))
;; (add-to-list 'swank-clojure-extra-vm-args "-Djava.security.manager")
;; (add-to-list 'swank-clojure-extra-vm-args
;; (format "-Djava.security.policy=\"file://%sexample.policy"
;; clojurebot-dir))
(unless (functionp 'clojure-project)
(defun clojure-project (path)
"Setup classpaths for a clojure project and starts a new SLIME session.
Kills existing SLIME session, if any."
(interactive (list
(ido-read-directory-name
"Project root: "
(locate-dominating-file default-directory "pom.xml"))))
(when (get-buffer "*inferior-lisp*")
(kill-buffer "*inferior-lisp*"))
(defvar swank-clojure-extra-vm-args nil)
(defvar slime-lisp-implementations nil)
;; (add-to-list swank-clojure-extra-vm-args
;; (format "-Dclojure.compile.path=%s"
;; (expand-file-name "target/classes/" path)))
(setq swank-clojure-binary nil
swank-clojure-jar-path (expand-file-name "target/dependency/" path)
swank-clojure-extra-classpaths
(append (mapcar (lambda (d) (expand-file-name d path))
'("src/" "target/classes/" "test/"))
(let ((lib (expand-file-name "lib" path)))
(if (file-exists-p lib)
(directory-files lib t ".jar$"))))
slime-lisp-implementations
(cons `(clojure ,(swank-clojure-cmd) :init swank-clojure-init)
(remove-if #'(lambda (x) (eq (car x) 'clojure))
slime-lisp-implementations)))
(save-window-excursion
(slime))))
(clojure-project clojurebot-dir)
(add-hook 'slime-connected-hook
(lambda ()
(slime-eval-async '(swank:eval-and-grab-output
"(require 'hiredman.clojurebot)"))))