非アクティブなミニバッファーの背景色を変更できますか?


9

非アクティブなミニバッファー

次の設定で試してみました。

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

(set-face-background 'minibuffer-prompt "blue")

しかし、それらはアクティブなミニバッファにのみ影響を与えました:

アクティブなミニバッファー


1
これはエコーエリアとも呼ばれます。
Malabarba 2014年

1
@Malabarba:エコー領域と呼ばれるだけです(ミニバッファーが非アクティブの場合)。
2014年

回答:


6

minibuffer-setup-hook ミニバッファーが設定されている場合、つまりアクティブ化されている場合にのみ使用され、非アクティブ化されている場合は使用されません。

minibuffer-exit-hookミニバッファが終了すると有効になります。もありminibuffer-inactive-mode-hookます。

しかし、それらは色の変更を開始しますが((debug)フック関数の最初に追加してから、を使用してデバッガーをステップスルーすることで示されますd)、kill-local-variables追加された色をある時点で削除するようです。私にはさらにチェックする時間はありませんが、おそらくあなたができるか、おそらく他の誰かが迅速な解決策を持っています。不完全な情報しか提供できず申し訳ありません。

お奨めですが、すぐに、フックをいじる必要がなくなるのではないかと思います\` \*Minibuf-[0-9]+\*\'。名前がに一致するすべてのバッファーのフェイスリマップを実行するだけでよいのです。


FWIW、私は別のミニバッファーフレームを使用し、これをminibuffer-exit-hookフレームの背景に色を付けるために配置しました。

(defun 1on1-color-minibuffer-frame-on-exit ()
  "Change background of minibuffer frame to reflect the minibuffer depth.
Use this when reducing the minibuffer recursion depth."
  (when 1on1-minibuffer-frame
    (save-window-excursion
      (select-frame 1on1-minibuffer-frame)
      (cond ((= (minibuffer-depth) 2)
             (set-background-color 1on1-active-minibuffer-frame-background))
            ((< (minibuffer-depth) 2)
             (set-background-color 1on1-inactive-minibuffer-frame-background))
            (t
             (set-background-color (hexrgb-increment-hue ; Change bg hue slightly.
                                    (frame-parameter nil 'background-color)
                                    1on1-color-minibuffer-frame-on-exit-increment)))))))

あなたの分析を考えると、私はface-remapping-alist 恒久的にすることはうまくいくと思いますか?コードマークアップの逆引用符については、この回答を参照してください。
Gilles「SO-邪悪なことをやめなさい」

リンクは、あなたは404で結果を提供
COMPROプラサド

@ComproPrasad:修正されました。どうも。
ドリュー

3

あなたは試すかもしれません:

(dolist (buf '(" *Echo Area 0*" " *Echo Area 1*"))
  (with-current-buffer (get-buffer buf)
    (make-local-variable 'face-remapping-alist)
    (add-to-list 'face-remapping-alist '(default (:background "green")))))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.