【问题标题】:How do I efficiently close the buffer opened by `slime-describe-symbol`?如何有效地关闭由 `slime-describe-symbol` 打开的缓冲区?
【发布时间】:2019-01-24 12:06:40
【问题描述】:

问题:

  1. 我已经使用*slime-repl sbcl* 在默认垂直拆分中启动了一个 Common Lisp 会话。
  2. 我在一个符号上,比如说cond,然后按slime-describe-symbol 的键,在我的例子中是,hh,因为我正在使用spacemacs。
  3. 这会在 repl 窗口顶部打开一个缓冲区 *slime-description*

我现在不得不:

  • 移动到右边的分界
  • 将缓冲区切换到粘液*slime-repl sbcl*
  • 回到我原来的缓冲区

每次打开帮助文件时,我都必须这样做,这与设计的工作流程一样奇怪。我希望这可以通过一次按键来实现。

预期的管理方式是什么?

【问题讨论】:

    标签: emacs slime spacemacs


    【解决方案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)

    【讨论】:

    • 感谢您的回答 Orm :) 恐怕这不是我想要实现的目标。我已经改写了我的问题以使其更清楚。我主要是在寻找这样做的默认方式,但如果我找不到答案,我将不得不创建一个自定义函数,在这种情况下,你当前的答案会派上用场。
    • 你知道一旦进入 slime-description 缓冲区,只需按 'q' 将关闭缓冲区并让你回到你启动 slime-describe-symbol 的位置命令?
    • 确实如此,但通常的模式是,当打开描述缓冲区时,emacs 会将光标移动到它。在我的情况下,描述缓冲区打开,但光标保留在原始文件上,这意味着我必须手动移动到它并关闭它。也许这是一个spacemacs 错误。我想另一种解决方案是在同一个缓冲区上打开slime-description,以便我可以关闭它并返回到原来的。
    • 我不认为这是 spacemacs,因为这也发生在我的机器上。这就是我写上面的函数的原因。它应该解决这个问题。如果键盘快捷键不起作用,请先在要描述的符号上使用 M-x my-slime-describe-symbol 尝试。
    • 啊当然解决了问题!抱歉,我只是感到困惑:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多