【发布时间】:2014-12-18 18:21:35
【问题描述】:
我从来没有真正使用过 REPL,而且我发现每次连接到一个时髦的实例时它都会弹出,这很烦人。如何防止 SLIME 切换到 repl 缓冲区?
我试图在 slime 的代码中找到它在哪里执行此操作,但是当您不确定要查找什么时,它有点庞大。
谢谢
【问题讨论】:
标签: emacs common-lisp slime dot-emacs
我从来没有真正使用过 REPL,而且我发现每次连接到一个时髦的实例时它都会弹出,这很烦人。如何防止 SLIME 切换到 repl 缓冲区?
我试图在 slime 的代码中找到它在哪里执行此操作,但是当您不确定要查找什么时,它有点庞大。
谢谢
【问题讨论】:
标签: emacs common-lisp slime dot-emacs
这是我在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)))))
【讨论】:
sit-for 只是因为在 slime 完全初始化之前我无法评估,并且需要一段时间才能完成。
感谢@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)))
【讨论】: