क्या मैं निष्क्रिय मिनीबार की पृष्ठभूमि का रंग बदल सकता हूं?


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
मेरा मानना ​​है कि इसे प्रतिध्वनि क्षेत्र भी कहा जाता है।
मालाबार

1
@ मलबारबा: इसे केवल इको क्षेत्र कहा जाता है (जब मिनीबर्फर निष्क्रिय होता है)।
ड्रू

जवाबों:


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 स्थायी बनाने से काम चल जाएगा? कोड मार्कअप में backquotes के लिए, यह उत्तर देखें ।
गिलेस एसओ- बुराई को रोकना '

आपके द्वारा दिए गए लिंक ने 404 में परिणाम प्रदान किए।
कॉम्प्रो प्रसाद

@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")))))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.