emacs - 在当前窗口或单独的框架中显示帮助和消息缓冲区?

时间:2009-09-19 20:49:07

标签: emacs elisp

我一直在半全屏幕配置中使用emacs,我的画面宽度为160个字符,与屏幕一样高。在这个布局中,我的窗户以某种我喜欢的方式分开。我想知道是否有办法在我调用help或shell命令时,在我的(点)所在的同一窗口中弹出帮助文件和消息(例如,当我运行异步shell时的输出),或者一个单独的框架,以免扰乱我的窗口布局和其中包含的缓冲区?我尝试过elscreen和win-mode;后者确实恢复了我的窗口布局,但要求我循环浏览窗口以关闭帮助或消息缓冲区(而不是现场的C-x k,如果它在同一个缓冲区中)...

谢谢,斯蒂芬

2 个答案:

答案 0 :(得分:3)

你必须自己动手(听起来你对你想要的东西有一些非常具体的想法)。您可以在elisp手册的"Choosing Windows"部分找到开始所需的所有信息。听起来像same-window-buffer-names和/或same-window-regexpssame-window-p会给你你想要的东西,尽管这些其他可能适合你的账单:special-display-buffer-namesspeical-display-regexps,{ {1}},special-display-function

答案 1 :(得分:0)

请参阅One-On-One Emacs以获取实现特殊显示*Help*缓冲区的代码 - IOW,*Help*在其自己的框架中弹出。

代码在这里: http://www.emacswiki.org/emacs/download/oneonone.el

见这部分:

  ;; *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
          (remove-if (lambda (elt) (equal "*Help*" (car elt)))
                     special-display-buffer-names)))