首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当nrepl-jack-in呼叫时杀死以前的nrepl会话?

当nrepl-jack-in呼叫时杀死以前的nrepl会话?
EN

Stack Overflow用户
提问于 2012-10-21 22:08:34
回答 2查看 1.1K关注 0票数 7

此时此刻,我主要是使用nrepl与Clojurescript应用程序对话。我喜欢从内部使用nrepl。我从输入M-x nrepl-jack-in开始nrepl。

不幸的是,我的nrepl会话经常被完全挂起。当这种情况发生时,我会尽职尽责地杀死与nrepl相关的3个缓冲区。这些缓冲区是:

  1. *nrepl*
  2. *nrepl-connection*
  3. *nrepl-server*

*nrepl-server*也有一个活动的过程,它问我是否想关闭它,我说是的。

然后再次输入M-x nrepl-jack-in

,这太痛苦了,

我想让nrepl-jack-in过载,这样它就可以自动检查这3种缓冲区是否存在。如果它们中的任何一个确实存在,它将杀死这些缓冲区和与这些蜂巢相关的任何活动进程。完成此操作后,重载的nrepl-jack-in将照常进行。我希望这样做,因为每当我发现nrepl决定再次挂起它自己时,我就可以输入M-X nrepl-jack-in并重新启动我正在做的事情。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-22 06:29:14

这应该能完成任务:

代码语言:javascript
复制
(defun my-nrepl-jack-in ()
  (interactive)
  (dolist (buffer (buffer-list))
    (when (string-prefix-p "*nrepl" (buffer-name buffer))
      (kill-buffer buffer)))
  (nrepl-jack-in nil))
票数 4
EN

Stack Overflow用户

发布于 2012-10-23 13:29:24

选择的答案对我不太管用..。nrepl进程哨兵抛出一个错误,阻止它重新启动。我玩了它一点,并提出了以下(这也提供了一个单独的kill-nrepl函数)

代码语言:javascript
复制
;; Disable prompt on killing buffer with a process
(setq kill-buffer-query-functions
      (remq 'process-kill-buffer-query-function
            kill-buffer-query-functions))

(defun nrepl-kill ()
  "Kill all nrepl buffers and processes"
  (interactive)
  (when (get-process "nrepl-server")
    (set-process-sentinel (get-process "nrepl-server")
                          (lambda (proc evt) t)))
  (dolist (buffer (buffer-list))
    (when (string-prefix-p "*nrepl" (buffer-name buffer))
      (kill-buffer buffer))))

(defun nrepl-me ()
  (interactive)
  (nrepl-kill)
  (nrepl-jack-in nil))
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13002685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档