我一直想知道很长一段时间:如何在Emacs中获得专用的misc缓冲区?
自动完成,功能描述和可能的文档都可以到达那里而不会出现意外的地方,而是在预定义的位置(屏幕的四分之一?)。
答案 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。