我正在使用来自https://github.com/technomancy/swank-clojure的swank-clojure。
我想在emacs中打开clojure文件时自动运行clojure-jack-in。我的所有项目都使用lein,因此它应该始终合适。
据推测,你应该检查它是否已经被调用过。 〜/ .emacs.d / init.el中的这样的东西似乎有效,但有没有下行或更好的方法来达到同样的效果?
(defun clojure-jack-in-once ()
"clojure-jack-in if it hasn't been run already,
as indicated by presence of *swank* buffer"
(if (eq nil (get-buffer "*swank*"))
(clojure-jack-in)))
(add-hook 'clojure-mode-hook 'clojure-jack-in-once)
答案 0 :(得分:1)
您可能希望使用process-status
和get-buffer-process
对其进行扩展以检查流程的活跃程度,但没有根本原因您无法做到这一点。
稍微好一点的elisp将是:
(unless (get-buffer "*swank*")
(clojure-jack-in))
添加支票:
(let ((proc (get-buffer-process "*swank*")))
(unless (and proc (eq (process-status proc) 'run))
(clojure-jack-in)))
应检查进程是否仍在运行,并在需要时自动重启。
答案 1 :(得分:0)
(slime-connected-p)正是你要找的。 p>
或(和(featurep'staime)(粘液连接-p))是安全的。