emacs从原始缓冲区调度帮助窗口

时间:2016-04-08 17:49:47

标签: emacs

每当我在emacs中执行apropos,describe-key或其他一些帮助功能时,它会在我的其他窗口中显示帮助。为了摆脱它,我必须更改窗口/缓冲区去那里,键入" q",然后更改回原来的工作缓冲区。

我能以某种方式在代码中执行此操作吗?我知道如何保存 - 游览,切换缓冲区等,但我不知道如何发送" q"当我在另一个缓冲区中时,到迷你缓冲区/ emacs。感谢

3 个答案:

答案 0 :(得分:5)

help-window-select变量可能正是您想要的。 如果将其值设置为true (setq help-window-select t),则当您通过其中一个帮助命令打开帮助窗口时,将自动选择该窗口。然后,您可以按q退出,然后返回原始缓冲区。还有很多其他选项,所以你也应该检查一下。

对于apropos窗口或使用display-buffer的任何窗口,您都可以使用。

(add-to-list 'display-buffer-alist
         '("*Apropos*" display-buffer-same-window))

display-buffer-same-window是众多选择之一;它在当前窗口中打开缓冲区。通过在display-buffer函数上查找文档,可以看到其他可能的选项。

答案 1 :(得分:1)

这是我对这个问题的解决方案。我将此命令绑定到C-c q

(defvar my/help-window-names
  '(
    ;; Ubiquitous help buffers
    "*Help*"
    "*Apropos*"
    "*Messages*"
    "*Completions*"
    ;; Other general buffers
    "*Command History*"
    "*Compile-Log*"
    "*disabled command*")
  "Names of buffers that `my/quit-help-windows' should quit.")

(defun my/quit-help-windows (&optional kill frame)
  "Quit all windows with help-like buffers.

Call `quit-windows-on' for every buffer named in
`my/help-windows-name'.  The optional parameters KILL and FRAME
are just as in `quit-windows-on', except FRAME defaults to t (so
that only windows on the selected frame are considered).

Note that a nil value for FRAME cannot be distinguished from an
omitted parameter and will be ignored; use some other value if
you want to quit windows on all frames."
  (interactive)
  (let ((frame (or frame t)))
    (dolist (name my/help-window-names)
      (ignore-errors
        (quit-windows-on name kill frame)))))

答案 2 :(得分:0)

我建议将(winner-mode 1)放入您的初始文件中,然后使用 Cc < left> 来调用winner-undo(如有必要,请重复)返回上一个窗口配置。