如何有效关闭由“ slime-describe-symbol”打开的缓冲区?

时间:2019-01-24 12:06:40

标签: emacs slime spacemacs

问题:

  1. 我已经使用默认垂直分割中的*slime-repl sbcl*开始了Common Lisp会话。
  2. 我在一个符号上,假设为cond,然后按slime-describe-symbol的键,在我的情况下为,hh,因为我正在使用spacemacs。
  3. 这会在repl窗口顶部打开一个缓冲区*slime-description*

我现在处于以下情况:

  • 移至右侧的拆分
  • 将缓冲区切换到史莱姆*slime-repl sbcl*
  • 返回到我的原始缓冲区

每次打开帮助文件时,都必须执行此操作,这对于设计的工作流程来说似乎很奇怪。我希望通过一次按键就能做到这一点。

管理此问题的预期方式是什么?

1 个答案:

答案 0 :(得分:1)

在普通的emacs中,用于移动到另一个窗口的键盘快捷键是“ C-x o”(另一个窗口)。我认为描述符号时实现自动光标移动的最简单方法是通过修改slime-describe-symbol将光标移动到 slime-description 窗口来定义自己的自定义elisp函数。并(重新)绑定键盘快捷键。

在我的机器上:

(defun my-slime-describe-symbol (symbol-name) "Describe the symbol at point." (interactive (list (slime-read-symbol-name "Describe symbol: "))) (when (not symbol-name) (error "No symbol given")) (slime-eval-describe `(swank:describe-symbol ,symbol-name)) (switch-to-buffer-other-window "*slime-description*"))

,然后根据自己的喜好定义键盘快捷键:

(define-key slime-mode-map (kbd "C-c C-d d") 'my-slime-describe-symbol) (define-key slime-mode-map (kbd "C-c C-d C-d") 'my-slime-describe-symbol)