我想写一个emacs lisp函数,它将输出写入当前窗口以外的窗口。如果只存在当前窗口,它应该创建一个新窗口,否则应该使用现有窗口。这类似于运行C-h-f(描述函数)时发生的情况,并在另一个窗口中弹出描述。这样做的最佳方式是什么?
答案 0 :(得分:9)
请参阅display-buffer
:
display-buffer是一个交互式的 在`window.el'中编译了Lisp函数。
它与C-x 4 C-o绑定。
(display-buffer buffer-or-name &可选not-this-window frame)
显示缓冲区缓冲区或名称 一些窗口,但不要选择它。 buffer-or-name必须是缓冲区或者 现有缓冲区的名称。返回 选择显示的窗口 buffer-or-name,如果没有,则为nil 找到了窗口。
可选参数not-this-window 非零意味着在a中显示缓冲区 窗口以外的窗口, 即使它已经显示在 选定的窗口。
可选参数框指定 什么帧来调查时 已经显示指定的缓冲区。 如果缓冲区已经显示在 其中一个框架上有一些窗口 只需返回该窗口。可能 框架的值是:
`可见' - 考虑所有的窗户 可见帧。
0 - 考虑所有可见的窗口或 图标化的框架。
t - 考虑所有帧的窗口。
特定框架 - 考虑窗口 那个框架。
nil - 考虑所选的窗口 框架(实际上是最后一个 非迷你缓冲框架)。如果, 但是,要么
display-buffer-reuse-frames' or
弹出框架'是非零的(非零) 而不仅仅是图形文本 终端),考虑所有可见或 图标化的框架。
或者你可以使用pop-to-buffer
如果你想要选择那个缓冲区(听起来你没有这个),或with-output-to-temp-buffer
绑定要发送到standard-output
的缓冲区。临时缓冲区 - 阅读documentation了解更多详情(请提示Michael)。