在Emacs中分割窗口--Tabbar仅显示活动缓冲区

3
我正在使用分屏的Emacs框架将我的窗口移动到更方便的状态。但是,有两件事情困扰着我,我想知道它们是否可以改变:
  1. 我正在使用tabbar,当前打开的所有缓冲区都显示在所有的窗口分割上。我只想让该当前分割可用的缓冲区出现。因此,如果我在顶部分割中打开了somefile.org,并且在底部打开了anotherfile.org,则我希望每个选项卡栏列表(顶部和底部)只显示相应的一个。
  2. 我想知道是否有可能将模式行配置为只在底部出现,并且每当我移动到另一个窗口时刷新它。类似于tmux,对于那些了解的人来说-信息基于我当前所在的窗口进行更改(尽管那里称为面板)。
编辑: 关于第一点:
假设我有2个打开的缓冲区-file1.txtfile2.txt。首先在顶部垂直拆分中显示第一个,然后在底部拆分中显示第二个。我希望顶部选项卡栏只显示file1.txt,底部选项卡栏只显示file2.txt

我对第一项感到困惑(它肯定是可能的,但似乎毫无意义),但我猜想您只是想要将其与第二项结合使用(这将导致您丢失一些信息,其中一些将通过第一项得到补偿)。我认为第二项不可能。 - phils
编辑了原始帖子来解释我需要什么。我不是在问这是否是无意义的,而是如何实现它。 - Devon Ville
1个回答

0

这是问题1的答案:

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

我认为@phils关于第二个问题是正确的--即,在不修改构成Emacs的底层"C"源代码的情况下是不可能的。


这里有一个关于问题2的替代方法,可以使非活动窗口的模式行背景颜色与缓冲区的背景颜色相同。原始帖子作者可以使用该代码,并将非活动模式行的文本颜色也设置为缓冲区的背景颜色,这样非活动模式行就完全不可见了。但是,可见的模式行自然会在任何激活窗口中切换位置。

https://dev59.com/DXI_5IYBdhLWcg3wHvU5#20936397

示例
(来源:lawlist.com


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