如何阻止帧被分割?


16

目前,我使用ruby和rspec。我真的很喜欢在另一个监视器中显示我的编译缓冲区的单独框架的想法。我当前的设置使用“代码”框架(在其中进行实际工作)和“测试结果”框架(在其中查看rspec结果)

问题是,当我尝试在“测试结果”框架中打开某些编译错误或文件时,窗口会在框架中拆分。我真正想做的是在“代码”框架中打开它。

我已经使用了option display-buffer-reuse-frames。我也尝试设置编译结果窗口dedicated,但是每当emacs尝试打开一个新窗口时,都会创建一个新框架(如果使用Helm,这特别糟糕。)

有一些简单的方法可以做到这一点吗?


1
如果可以轻松地将缓冲区“固定”在适当的位置,以便从现在开始始终将其显示在同一位置,那么将emacs用作IDE会更加方便。使用emacs时,我最想念的Visual Studio功能之一是简单,直观的分割,固定,停靠,隐藏和其他方式操作窗口的方法。
nispio 2014年

1
是的 我也来自vs背景,尽管我感觉emacs大部分时间都比较干净,但是我也很想念它。
Renan Ranelli 2014年

@nispio我不使用VS,因此可以指定“ pin”的含义。Emacs框架通常是排他性的,除非您与之交互,否则它们不会改变。
Vamsi 2014年

@vamsi:VS使用许多小窗口,您可以将它们附加到框架的顶部/底部/侧面,也可以将其弹出并创建一个新框架。您可以将窗口停靠在框架边缘并将其设置为自动隐藏。例如,当编译开始时,编译输出窗口将从底部神奇地弹出,并在编译结束后不久再次隐藏自身。如果您不希望窗口自动隐藏,则可以将其固定在适当的位置,然后在完成引用后再取消固定。
nispio

@nispio我明白了。我使用popwin.elMELPA来弹出编译和帮助缓冲区,这些缓冲区一直持续到C-g按下为止。如果我需要全职工作,只需在另一个窗口中切换到他们即可。我没有考虑过固定窗口,因为emacs确实可以split-windows-sensibly
Vamsi 2014年

Answers:


9

您需要配置600磅的大猩猩,display-buffer-alist该大猩猩决定了如何display-buffer选择显示缓冲区的位置。它display-buffer-reuse-frames在较新的emacsen中已作废。这是一个应该指导您的配置(至少在emacs 24.3中)。

;; all buffers, try to reuse windows across all frames
(add-to-list 'display-buffer-alist
           '(".*". (display-buffer-reuse-window .
                                  ((reusable-frames . t)))))

;; except for compilation buffers where you want new and dedicated frames when necessary
(add-to-list 'display-buffer-alist
         '("^\\*Compile-Log\\*". ((display-buffer-reuse-window
                                   display-buffer-pop-up-frame) .
                                  ((reusable-frames . t)
                                  (inhibit-same-window . t)))))

如您所见,我使用一个正则表达式来匹配编译日志缓冲区。的文档display-buffer应该使您对正在发生的事情有所了解。请注意,这不是您将阅读的最有趣的文档。我按顺序添加了它们,因此compile-log regexp将在通用regexp之前匹配。使正则表达式适应您的需求。

编辑要使任何帧均不可拆分,您可以评估M-: (set-frame-parameter nil 'unsplittable t)该特定帧。FRAME如果从elisp进行操作,则将nil替换为required 。在这两个设置之间,除非您在该框架中专门找到一个文件,否则它应使编译框架互斥。


问题是我不想一直打开新框架。我想要的是将所有窗口限制为“代码”框架,但“编译日志”缓冲区除外,该缓冲区应始终显示在“测试”框架中。我找不到将所有新窗口重定向到主“代码”框架的方法。也许我对这个问题不够清楚=(
Renan Ranelli 2014年

这应该只为编译日志打开一个新框架,也只有在不存在新框架时才打开。你能告诉我出什么事了吗?有关如何使任何框架不可分裂的信息,请参见编辑。
Vamsi 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.