防止SLIME切换到repl缓冲区

4

我很少使用REPL,并且每次连接到swank实例时弹出它让我感到很烦。如何防止SLIME切换到repl缓冲区?

我试图在slime的代码中找到它的位置,但是如果不确定要查找什么,代码就会变得非常庞大。

谢谢

2个回答

4

以下是我在 lispy 中的做法:

(defun lispy--eval-lisp (str)
  "Eval STR as Common Lisp code."
  (require 'slime-repl)
  (unless (slime-current-connection)
    (let ((wnd (current-window-configuration)))
      (slime)
      (while (not (and (slime-current-connection)
                       (get-buffer-window (slime-output-buffer))))
        (sit-for 0.2))
      (set-window-configuration wnd)))
  (let (deactivate-mark)
    (cadr (slime-eval `(swank:eval-and-grab-output ,str)))))

如果我理解正确的话,您只是保存当前窗口配置,并在连接后恢复它吗? 另外,尝试宣传您的项目不错 :P - fstamour
你让它听起来好像很容易。可我花了几个小时才想出来:( - abo-abo
抱歉,我的本意不是让它听起来很简单,我只是不确定代码是否是这样做的 :) - fstamour
我只是开玩笑而已。顺便说一下,sit-for 只是因为在 slime 完全初始化之前我无法进行 eval 操作,这需要一些时间。 - abo-abo
这正是我所想的,也是为什么我把它留在那里的原因。谢谢。 - fstamour
我在Slime中创建了一个问题,以帮助找到更少hacky的解决方案:https://github.com/slime/slime/issues/645 - fstamour

1

这是我的解决方案,感谢@abo-abo的答案。

(defun my-slime-connect () (interactive)
   (let ((wnd (current-window-configuration)))
 (call-interactively 'slime-connect)
 (sit-for 0.2) ;; Not sure if necessary, haven't tested without it.
 (set-window-configuration wnd)))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接