Emacs 突出显示当前活动窗口

Emacs 突出显示当前活动窗口,emacs,Emacs,是否有一种简单的方法来更改活动窗口的背景颜色,以便轻松区分哪个窗口有输入 我知道hiwin模式()。但这种模式在与helm的良好配合方面存在问题 我还知道颜色主题缓冲区local(),我想知道它是否可以定制为我想要的 (defun highlight-selected-window () "Highlight selected window with a different background color." (walk-windows (lambda (w)

是否有一种简单的方法来更改活动窗口的背景颜色,以便轻松区分哪个窗口有输入

我知道hiwin模式()。但这种模式在与helm的良好配合方面存在问题

我还知道颜色主题缓冲区local(),我想知道它是否可以定制为我想要的

(defun highlight-selected-window ()
  "Highlight selected window with a different background color."
  (walk-windows (lambda (w)
                  (unless (eq w (selected-window)) 
                    (with-current-buffer (window-buffer w)
                      (buffer-face-set '(:background "#111"))))))
  (buffer-face-set 'default))

(add-hook 'buffer-list-update-hook 'highlight-selected-window)
更改背景颜色(“111”)以适合您的口味。

auto-dim-other-buffers.el 您可能想看看,可从MELPA获得

自动调暗其他缓冲区模式是一种全局次要模式,使
非当前缓冲区不太突出,使哪个窗口更明显
有一个焦点

安装模式的首选方法是从安装包 梅尔帕:

安装后,可通过以下方式(全局)打开模式:

要在每次Emacs启动时启用该模式,请将以下内容添加到 Emacs初始化文件(
~/.Emacs
~/.Emacs.d/init.el
):

要配置暗显缓冲区的外观,请自定义
自动调暗其他缓冲面
。这可以通过以下方式实现:

M-x customize-face RET auto-dim-other-buffers-face RET
自动调暗其他缓冲区模式是一种全局次要模式,使
非当前缓冲区不太突出,使哪个窗口更明显
有一个焦点

对于给定的活动窗口,不显示相同缓冲区的所有其他窗口将设置为自定义背景。即,活动窗口和显示相同缓冲区的其他窗口的背景色与其他窗口的背景色不同。我相信这最后一部分是你正在寻找的具体行为,基于你对公认答案的评论


“非常感谢。这非常接近我想要的。除了 两个窗口打开同一个缓冲区会导致 windows将被标记为“非活动”。这不是非常重要,但非常重要 有没有一个简单的方法来解决这个问题?”


非常感谢你。这非常接近我想要的。除了两个窗口打开同一缓冲区会导致两个窗口都标记为“非活动”之外。这不是非常重要,但是有没有简单的方法来解决这个问题?使用“克隆间接缓冲区其他窗口”(C-x 4 C)来获得这两个窗口怎么样?如果这对您不起作用,您可以切换这两个表达式,使两个窗口都标记为活动。这是一个非常好的模式。谢谢仅供参考。从它的自述:注意,尽管它的名字,由于Emacs 27,该模式在windows上而不是在缓冲区上运行。即,所选窗口高亮显示,所有其他窗口变暗,即使它们显示相同的缓冲区。我还没有尝试过Emacs 27,但它的行为似乎略有改变。请注意,这会显著降低窗口切换的速度。
M-x auto-dim-other-buffers-mode RET
(add-hook 'after-init-hook (lambda ()
  (when (fboundp 'auto-dim-other-buffers-mode)
    (auto-dim-other-buffers-mode t))))
M-x customize-face RET auto-dim-other-buffers-face RET