为什么不把clojure-jack-in挂钩到clojure-mode?

时间:2011-12-06 01:19:38

标签: emacs clojure slime

我正在使用来自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)

2 个答案:

答案 0 :(得分:1)

您可能希望使用process-statusget-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)正是你要找的。

或(和(featurep'staime)(粘液连接-p))是安全的。