2013-09-27 224 views
10

Tôi muốn có các emacs không có màu nền khi tôi mở một khung trong thiết bị đầu cuối. Tôi đang sử dụng thiết bị đầu cuối có nền mờ và các ký tự có màu nền không phải là "xem qua". TERM được đặt thành "xterm-256color".Emacs: vô hiệu hóa màu nền chủ đề trong terminal

Làm cách nào để nhận các emacs sử dụng màu nền mặc định (không có màu nào), khi khung không phải là đồ họa?

Edit: Tôi đã có nó, loại:

(add-to-list 'custom-theme-load-path "~/.emacs.d/themes") 
(load-theme 'my-awesome-theme t) 

(defun on-frame-open (frame) 
    (if (not (display-graphic-p frame)) 
    (set-face-background 'default "unspecified-bg" frame))) 
(on-frame-open (selected-frame)) 
(add-hook 'after-make-frame-functions 'on-frame-open) 

Tôi đặt mã trên trong tập tin init tôi, nhưng chỉ ngăn chặn nền khi mở một emacsclient trong một thiết bị đầu cuối, và không emacs chính nó (tức là chỉ khi được gọi với emacsclient -t và không khi được gọi với emacs). Bổ sung thêm (unless window-system (set-face-background 'default "unspecified-bg" (selected-frame))) không hoạt động và chỉ gây nhầm lẫn với khung đồ họa.

Bất kỳ ý tưởng nào về lý do điều này có thể xảy ra?

Trả lời

16
(defun on-after-init() 
    (unless (display-graphic-p (selected-frame)) 
    (set-face-background 'default "unspecified-bg" (selected-frame)))) 

(add-hook 'window-setup-hook 'on-after-init) 

Kết hợp với mã trong bản chỉnh sửa của bạn, nó hoạt động tốt cho cả hai emacsterm và emacsen mới bắt đầu. Còn về lý do window-setup-hook: http://www.gnu.org/software/emacs/manual/html_node/elisp/Startup-Summary.html

(. Không ai trong số các móc trước đó dường như làm việc trừ trường hợp này)

+0

Cảm ơn, điều này thực hiện thủ thuật một cách hoàn hảo. –

+0

Tuyệt vời! Điều đó làm việc hoàn hảo cho tôi với chủ đề iTerm2 + Emacs 24 + Base 16. –

+0

Bí quyết nhỏ. Tôi sử dụng nó để áp dụng một chủ đề 'wombat' chỉ cho Emacs đầu cuối và không phải là phiên bản cửa sổ mà nó trông không đẹp. –

2

Tôi đã thử các phương pháp đã được đề xuất trong this answer nhưng tôi không có may mắn nhận được nó để làm việc. Đoạn này làm việc cho tôi mặc dù

(defun on-frame-open (&optional frame) 
    "If the FRAME created in terminal don't load background color." 
    (unless (display-graphic-p frame) 
    (set-face-background 'default "unspecified-bg" frame))) 

(add-hook 'after-make-frame-functions 'on-frame-open) 

Mặc dù nó có một trở ngại, nếu nhà ga có một thiết lập nền khác nhau hơn so với chủ đề Tôi sử dụng (tối so với ánh sáng), khuôn mặt theme mặc định đang được sử dụng mà có thể có vẻ không tốt trên nền sáng hoặc tối. nhưng trong trường hợp của tôi mà cả hai thiết bị đầu cuối và chủ đề là tối nó hoạt động tốt.

+1

Điều này làm việc cho tôi, trong khi người được chấp nhận thì không. – terje