Tôi có thể thay đổi màu nền của xe buýt nhỏ không hoạt động không?


9

Minibuffer không hoạt động

Tôi đã thử nó với các cài đặt sau:

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

nhưng họ chỉ ảnh hưởng đến xe buýt nhỏ đang hoạt động:

Minibuffer hoạt động


1
Tôi tin rằng đó cũng được gọi là khu vực tiếng vang.
Malabarba

1
@Malabarba: Nó chỉ được gọi là khu vực tiếng vang (khi bộ thu âm không hoạt động).
vẽ

Câu trả lời:


6

minibuffer-setup-hook chỉ được sử dụng khi thiết bị thu nhỏ được thiết lập, tức là được kích hoạt chứ không phải khi nó bị vô hiệu hóa.

minibuffer-exit-hookcó hiệu lực khi thoát khỏi xe buýt nhỏ. Cũng có minibuffer-inactive-mode-hook.

Nhưng mặc dù những thứ này bắt đầu thay đổi màu sắc (như được hiển thị bằng cách thêm (debug)vào lúc bắt đầu chức năng hook, và sau đó bước qua trình gỡ lỗi với d), có vẻ như nó kill-local-variablessẽ loại bỏ màu được thêm vào tại một số điểm. Bây giờ tôi không có thời gian để kiểm tra thêm, nhưng có lẽ bạn có thể, hoặc có lẽ ai đó có giải pháp nhanh chóng. Xin lỗi vì chỉ cung cấp thông tin không đầy đủ.

Phải đi ngay bây giờ - nhưng nhanh chóng, tôi đoán rằng có lẽ bạn không cần phải nghịch ngợm với móc, và bạn chỉ có thể thực hiện ánh xạ lại khuôn mặt cho tất cả các bộ đệm có khớp tên \` \*Minibuf-[0-9]+\*\'.


FWIW, tôi sử dụng một khung hình nhỏ gọn riêng biệt và tôi đặt nó lên minibuffer-exit-hookđể tô màu nền khung:

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

Dựa vào phân tích của bạn, tôi đoán làm cho face-remapping-alist vĩnh viễn sẽ làm việc? Đối với các backquote trong đánh dấu mã, xem câu trả lời này .
Gilles 'SO- ngừng trở nên xấu xa'

Liên kết bạn đã cung cấp kết quả trong 404.
Compro Prasad

@ComproPrasad: Đã sửa. Cám ơn.
Drew

3

Bạn có thể thử:

(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")))))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.