Emacs Lisp - 打开新窗口

时间:2010-11-20 03:01:51

标签: emacs elisp

我想写一个emacs lisp函数,它将输出写入当前窗口以外的窗口。如果只存在当前窗口,它应该创建一个新窗口,否则应该使用现有窗口。这类似于运行C-h-f(描述函数)时发生的情况,并在另一个窗口中弹出描述。这样做的最佳方式是什么?

1 个答案:

答案 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)。