Emacs中的专用misc缓冲区(自动完成,功能信息等)

时间:2013-08-17 20:18:58

标签: emacs emacs24

我一直想知道很长一段时间:如何在Emacs中获得专用的misc缓冲区

自动完成,功能描述和可能的文档都可以到达那里而不会出现意外的地方,而是在预定义的位置(屏幕的四分之一?)。

2 个答案:

答案 0 :(得分:2)

(我假设您的意思是专用窗口而不是专用缓冲区。)如果您打开窗口而不执行任何其他窗口拆分命令,help / repl缓冲区将自动使用它。您可以按this question

中的说明更改窗口大小

如果你想能够进行正常的窗口操作,但是帮助窗口有一定的大小,我建议你调查temp-buffer-show-hook,一个在显示临时缓冲区(例如帮助缓冲区)时运行的钩子。我没有尝试过,但可能会将其设置为以特定方式排列窗口配置的函数。

答案 1 :(得分:1)

以下是我在One On One中执行的操作,用于定义专用的*Help*框架:

;; *Help* frame
(if 1on1-*Help*-frame-flag
    (add-to-list
     'special-display-buffer-names
     (list "*Help*" '1on1-display-*Help*-frame
           (list (cons 'background-color 1on1-help-frame-background)
                 (cons 'mouse-color 1on1-help-frame-mouse+cursor-color)
                 (cons 'cursor-color 1on1-help-frame-mouse+cursor-color)
                 '(height . 40))))
  (setq special-display-buffer-names
        (1on1-remove-if (lambda (elt) (equal "*Help*" (car elt)))
                        special-display-buffer-names)))

(defun 1on1-display-*Help*-frame (buf &optional args)
  "Display *Help* buffer in its own frame.
`special-display-function' is used to do the actual displaying.
BUF and ARGS are the arguments to `special-display-function'."
  (let ((old-ptr-shape (and (boundp 'x-pointer-shape) x-pointer-shape))
        return-window)
    (when (boundp 'x-pointer-xterm) (setq x-pointer-shape x-pointer-xterm))
    (setq return-window (select-window (funcall special-display-function buf args)))
    (raise-frame)
    (setq x-pointer-shape old-ptr-shape)
    return-window))

您不需要所有这些细节(指针形状等),但这可以为您提供想法。主要是将*Help*放在special-display-buffer-names上。这就是你真正需要做的一切。

这里用于帧参数的1on1-*变量非常明显。 *-remove-if函数是标准remove-if。完整的代码在这里:oneonone.el