ฉันสามารถเปลี่ยนสีพื้นหลังของ minibuffer ที่ไม่ใช้งานได้หรือไม่


9

ไม่ใช้ Minibuffer

ฉันลองด้วยการตั้งค่าต่อไปนี้:

(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")

แต่พวกเขาได้รับผลกระทบ minibuffer ที่ใช้งานอยู่เท่านั้น:

Minibuffer ที่ใช้งานอยู่


1
ฉันเชื่อว่าที่เรียกว่าพื้นที่ก้อง
Malabarba

1
@ Malabarba: มันจะเรียกว่าพื้นที่ echo เท่านั้น (เมื่อ minibuffer ไม่ทำงาน)
ดึง

คำตอบ:


6

minibuffer-setup-hook จะใช้เฉพาะเมื่อมีการตั้งค่า minibuffer เช่นเปิดใช้งานไม่ใช่เมื่อปิดใช้งาน

minibuffer-exit-hookจะมีผลเมื่อออกจาก minibuffer minibuffer-inactive-mode-hookนอกจากนี้ยังมี

แต่ถึงแม้ว่าสิ่งเหล่านั้นจะเริ่มต้นการเปลี่ยนสี (ดังแสดงโดยการเพิ่ม(debug)ที่จุดเริ่มต้นของฟังก์ชั่นขอและจากนั้นผ่านการดีบักด้วยd) ดูเหมือนว่าkill-local-variablesจะลบสีที่เพิ่มเข้ามาในบางจุด ตอนนี้ฉันไม่มีเวลาตรวจสอบเพิ่มเติม แต่บางทีคุณสามารถทำได้หรือบางทีคนอื่นอาจมีวิธีแก้ปัญหาอย่างรวดเร็ว ขออภัยที่ให้ข้อมูลที่ไม่สมบูรณ์เท่านั้น

ต้องไปตอนนี้ - \` \*Minibuf-[0-9]+\*\'แต่อย่างรวดเร็วฉันคาดเดาว่าบางทีคุณอาจไม่จำเป็นต้องซอกับตะขอที่ทั้งหมดและคุณก็สามารถทำใบหน้าแมปสำหรับบัฟเฟอร์ทั้งหมดที่มีชื่อการจับคู่


FWIW ฉันใช้กรอบ minibuffer แยกต่างหากและฉันใส่มันลงใน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 ในการทำเครื่องหมายรหัสให้ดูคำตอบนี้
Gilles 'หยุดความชั่วร้าย'

ลิงก์ที่คุณให้ผลลัพธ์มีใน 404
Compro Prasad

@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.