Emacs 当需要输入时,更改小缓冲区的背景色

Emacs 当需要输入时,更改小缓冲区的背景色,emacs,background-color,minibuffer,Emacs,Background Color,Minibuffer,当需要用户活动时,是否可以更改微型缓冲区的背景颜色?例如,当一个函数需要一个参数时,或者当一个函数名不完整时,或者当您开始输入“C-x”并且需要更多的键时,等等 我在想这样的事情:(见“Minibuffer背景色表示用户活动”,有很多截图) 除此之外,上述仅在微缓冲区位于其自身帧中时有效 我想让它的工作时,小缓冲区是一个“常规”小缓冲区,与其他缓冲区(s)在同一帧 我的elisp还不够强大,无法亲自破解解决方案,因此欢迎任何意见 编辑 我可以通过以下操作更改整个缓冲区的背景: (add-hook

当需要用户活动时,是否可以更改微型缓冲区的背景颜色?例如,当一个函数需要一个参数时,或者当一个函数名不完整时,或者当您开始输入“C-x”并且需要更多的键时,等等

我在想这样的事情:(见“Minibuffer背景色表示用户活动”,有很多截图)

除此之外,上述仅在微缓冲区位于其自身帧中时有效

我想让它的工作时,小缓冲区是一个“常规”小缓冲区,与其他缓冲区(s)在同一帧

我的elisp还不够强大,无法亲自破解解决方案,因此欢迎任何意见

编辑

我可以通过以下操作更改整个缓冲区的背景:

(add-hook 'minibuffer-setup-hook 
  (function (lambda ()
              (set-background-color "black"))))
我不知道使用一些“黑客”是否可以轻松地只改变微缓冲区的背景

我也不知道如何换回以前的颜色。我不知道怎样做才是正确的


如果我不能只更改小缓冲区的背景,则可以更改整个背景。

这并不完美,因为它不能覆盖您的所有条件,但您可以使用
M-x自定义面<代码>小缓冲区提示
并打开反向视频或进行其他自定义。它只改变文本的背景,而不是整个迷你缓冲区


这不会更改
C-x
或任何其他前缀命令您只需通过
minibuffer setup hook
尝试设置
面重映射列表。比如:

(add-hook 'minibuffer-setup-hook
          (lambda ()
            (make-local-variable 'face-remapping-alist)
            (add-to-list 'face-remapping-alist '(default (:background "green")))))

并非在所有情况下都有效(例如“F1 k”,然后我需要描述键,什么都不会发生),但它在大多数情况下都有效)。非常感谢。@CedricMartin:那是因为F1 k不使用小型缓冲区(它使用回音区)。也就是说,它只是显示一些信息,给人一种使用微型缓冲区的印象。迷你缓冲区和回音区是普通的缓冲区(你可以在
C-x b
中找到它们作为“*echo Area..”和“*Minbuffer-…*”),它们唯一的特殊之处是它们通常显示在帧底部的迷你窗口中。啊,有趣。。。我想我应该开始一个新的问题,然后问如何“突出”或“更加明显地”在“我框架底部的那个小窗口中”采取一些行动@塞德里克·马丁:是的,这有点困难,因为很难区分一个简单的消息输出和像isearch和C-h k这样的东西输出的特定消息。您可以根据回声区域中
光标的值来执行此操作,但下一个问题是它们没有运行的标准挂钩,即AFAICT(即没有可与
微缓冲区设置挂钩
)相比的挂钩),并且您可能需要添加代码来重置下一条正常消息的背景面。