为什么不在 clojure 模式的钩子中进行 clojure-jack-in 呢?

发布于 2024-12-19 19:30:56 字数 587 浏览 2 评论 0原文

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

I'm using swank-clojure from https://github.com/technomancy/swank-clojure.

I'd like to run clojure-jack-in automatically when a clojure file is opened in emacs. All my projects use lein, so it should always be appropriate.

Presumably you should check that it hasn't been called already. Something like this in ~/.emacs.d/init.el seems to work, but is there a downside or a better way to achieve the same effect?

 (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)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

北方的巷 2024-12-26 19:30:56

您可能希望使用 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)))

应该检查进程是否仍在运行,并在需要时自动重新启动。

You might want to extend that to check the liveness of the process, using process-status and get-buffer-process, but there is no fundamental reason you can't do that.

A slightly nicer bit of elisp would be:

(unless (get-buffer "*swank*")
  (clojure-jack-in))

Adding the check:

(let ((proc (get-buffer-process "*swank*")))
  (unless (and proc (eq (process-status proc) 'run))
    (clojure-jack-in)))

That should check if the process is still running and automatically restart if required.

不一样的天空 2024-12-26 19:30:56

(slime-connected-p) 就是您要找的。

或者(和(featurep 'slime)(slime-connected-p))以确保安全。

(slime-connected-p) is what you're looking for.

Or (and (featurep 'slime) (slime-connected-p)) to be safe.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文