【问题标题】:Split windows in Emacs -- with Tabbar displaying only active bufferEmacs 中的拆分窗口——Tabbar 仅显示活动缓冲区
【发布时间】:2013-04-08 13:56:46
【问题描述】:

我正在使用拆分 Emacs 框架将我的窗口移动到更方便的状态。 但是,有两件事困扰着我,我想知道它们是否可以改变:

  1. 我正在使用标签栏,并且当前打开的所有缓冲区都显示在所有窗口拆分上。我希望只显示当前拆分可用的缓冲区。 因此,如果我在顶部拆分中打开 somefile.org 并在底部打开 anotherfile.org,我希望每个标签栏列表(顶部和底部)中只显示相应的一个。

  2. 我想知道是否有可能将模式行配置为仅在底部出现一次,并在我移动到其他窗口时刷新它。 对于那些知道的人来说,类似于tmux 的东西 - 信息会根据我当前所在的窗口进行更改(尽管它被称为窗格)。

编辑:

关于第 1 点:

假设我有 2 个打开的缓冲区 - file1.txtfile2.txt。第一个显示在顶部的垂直拆分中,另一个显示在底部的垂直拆分中。我希望顶部标签栏只显示file1.txt,底部只显示file2.txt

【问题讨论】:

  • 我对第 1 项感到困惑(这肯定是可能的,但似乎毫无意义),但我假设您只希望它与第 2 项 结合 (这会导致您会丢失信息,其中一些您将通过#1 获得)。我认为#2 是不可能的。
  • 编辑了原始帖子以解释我需要什么。我不是在问它是否毫无意义,而是如何实现。

标签: emacs elisp


【解决方案1】:

这是第 1 题的答案:

(setq tabbar-buffer-groups-function (lambda () (list
  (if (eq (get-buffer-window (current-buffer)) (car (window-list)))
     "my-active-buffer"
     "not-used"))))

我相信@phils 关于第 2 个问题是正确的——也就是说,如果不修改使 Emacs 成为现实的底层“C”源代码,这是不可能的。


这是问题 2 的另一种方法,它使非活动窗口的模式行的背景与缓冲区的背景颜色相同。原始发布者可以使用该代码并使非活动模式行的文本也与缓冲区的背景颜色相同,这将使非活动模式行完全不可见。但是,可见模式行会自然地将位置切换到处于活动状态的任何窗口。

https://stackoverflow.com/a/20936397/2112489


(来源:lawlist.com

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    相关资源
    最近更新 更多