【问题标题】:Change the background color of the minibuffer when input is needed需要输入时更改 minibuffer 的背景颜色
【发布时间】:2012-09-29 16:59:18
【问题描述】:

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

我在想这样的事情:http://emacswiki.org/emacs/Dedicated_Minibuffer_Frame(参见“Minibuffer 背景颜色表示用户活动”,有很多截图)

除了上面的方法只在 minibuffer 在它自己的帧中时有效。

我想让它在迷你缓冲区是“常规”迷你缓冲区时工作,并且在同一帧中具有其他缓冲区。

我的 elisp 还不够强大,无法自己破解此问题的解决方案,因此非常欢迎任何意见。

编辑

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

(add-hook 'minibuffer-setup-hook 
  (function (lambda ()
              (set-background-color "black"))))

我不知道使用一些“hack”来改变 minibuffer 的背景是否容易。

我也不知道如何改回以前的颜色。我不确定这样做的正确方法是什么。

如果我不能只改变迷你缓冲区的背景,那么改变整个背景就可以了。

【问题讨论】:

    标签: emacs background-color minibuffer


    【解决方案1】:

    您可以简单地尝试通过minibuffer-setup-hook 设置face-remap-alist。比如:

    (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 不使用迷你缓冲区(它使用回显区域代替)。 IE。它只显示消息,让您觉得它使用了 minibuffer。 Minibuffers 和 echo area 是普通的缓冲区(你可以在 C-x b 中找到它们作为 `*Echo Area ..*` 和 `*Minbuffer-..*`),它们唯一的特别之处是它们通常显示在框架底部的那个小窗口。
    • 很有趣...我想我应该开始一个新问题,然后在那个迷你窗口中询问如何“突出显示”或“更明显”应该采取一些行动“我的框架的底部" ; )
    • @CedricMartin:是的,这有点困难,因为很难将其中输出的简单消息与 isearch 和 C-h k 等输出的特定消息区分开来。根据cursor-in-echo-area 的值,你可以做到这一点,但下一个问题是它们没有运行标准的钩子,AFAICT(即没有可比的minibuffer-setup-hook),你可能不得不添加代码为下一条普通消息重置背景。
    【解决方案2】:

    它并不完美,因为它没有涵盖您的所有条件,但您可以使用M-x customize-face .. minibuffer-prompt 并打开反向视频或进行其他自定义。它只会改变文本的背景,而不是整个 minibuffer。

    这不会改变C-x 或任何其他前缀命令

    【讨论】:

      猜你喜欢
      • 2021-03-07
      • 1970-01-01
      • 2019-05-22
      • 1970-01-01
      • 2011-11-05
      • 2012-10-21
      • 1970-01-01
      • 2014-07-17
      相关资源
      最近更新 更多