确保在使用分屏窗口时,当前活动的Emacs窗口至少有80个字符宽度。

4
(我使用“窗口”和“框架”这两个词的含义与Emacs手册相同。)
我喜欢在工作时将我的Emacs框架垂直分割,因为我想要并排看到两个缓冲区。由于我的屏幕比较小,而且我喜欢比通常更大的字体大小,所以两个窗口都不足以显示每行80个字符。当我在窗口之间切换时,我发现自己必须调整它们的大小,以防止我的代码换行。
有没有一种方法让Emacs自动将当前活动的窗口至少调整到80个字符宽?我希望每当我切换到一个窗口时,Emacs都可以自动调整窗口大小,以便我可以舒适地在单行上查看我的代码。
例如,假设这是原始分割:
     ____________________
    |          |         |
    |          |         |
    |          |         |
    |          |         |
    |          |         |
    |          |         |
    |          |         |
     --------------------

现在我将插入点移动到左窗口。Emacs 应该调整窗口大小,使设置看起来像这样:
     ____________________
    |             |      |
    |             |      |
    |             |      |
    |insertion    |      |
    |point        |      |
    |             |      |
    |             |      |
     --------------------

我已经在左侧窗口编辑了缓冲区。现在我将插入点移动到右侧窗口。Emacs应该调整窗口大小,使其看起来像这样:

     ____________________
    |       |           |
    |       |           |
    |       |           |
    |       |insertion  |
    |       |point      |
    |       |           |
    |       |           |
     --------------------

我确信我已经见过一些elisp代码可以完全做到这一点,但我无法找到应该在Google搜索框中输入的正确咒语。

1个回答

7
假设您使用默认绑定为 C-x o 的 other-window 在窗口之间切换,那么您可以简单地对其进行如下建议:
(defadvice other-window (after other-window-now activate)
  (when (< (window-width) 80)
    (enlarge-window (- 80 (window-width)) t)))

那将自动扩大一个窗口的宽度为80个字符,比当前宽度多(80-当前宽度)个字符。

这太棒了。我从来不知道defadvice。正如他们所说:你永远无法真正“了解”Emacs。 - Ankur Sethi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接