2013-09-27 5 views
10

मैं टर्मिनल में फ्रेम खोलने पर emacs को पृष्ठभूमि रंग नहीं रखना चाहता हूं। मैं पारदर्शी पृष्ठभूमि वाले टर्मिनल का उपयोग कर रहा हूं, और पृष्ठभूमि रंग वाले अक्षर "देखने-थ्रू" नहीं हैं। टीईआरएम "xterm-256color" पर सेट है।Emacs: टर्मिनल में थीम पृष्ठभूमि रंग अक्षम करें

फ्रेम ग्राफ़िकल नहीं होने पर, मैं डिफ़ॉल्ट पृष्ठभूमि रंग (बिल्कुल कोई रंग नहीं) का उपयोग करने के लिए emacs कैसे प्राप्त करूं?

संपादित करें: मुझे मिल गया, एक तरह से:

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

मैं अपने init फाइल में उपरोक्त कोड डाल दिया, लेकिन केवल पृष्ठभूमि को दबा जब एक टर्मिनल में एक emacsclient खोलने, और नहीं emacs स्वयं (यानी केवल emacsclient -t के साथ बुलाया गया और जब emacs के साथ लागू नहीं किया गया)। अतिरिक्त (unless window-system (set-face-background 'default "unspecified-bg" (selected-frame))) जोड़ना काम नहीं करता है और केवल ग्राफिकल फ्रेम को भ्रमित करता है।

ऐसा कोई विचार क्यों हो सकता है?

उत्तर

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) 

अपने संपादन में कोड के साथ संयुक्त, यह दोनों emacsterms के लिए मेरे लिए अच्छी तरह से काम किया है और हाल में emacsen शुरू कर दिया। क्यों window-setup-hook के लिए के रूप में: http://www.gnu.org/software/emacs/manual/html_node/elisp/Startup-Summary.html

(। पहले हुक का न तो इस एक को छोड़कर काम करने के लिए लग रहा था)

+0

धन्यवाद, यह चाल पूरी तरह से करता है। –

+0

बहुत बढ़िया! यह iTerm2 + Emacs 24 + बेस 16 विषय के साथ मेरे लिए पूरी तरह से काम किया। –

+0

ग्रेट छोटी चाल। मैंने इसे टर्मिनल एमाक्स के लिए केवल 'गर्भपात' विषय लागू करने के लिए उपयोग किया था, न कि खिड़की वाला संस्करण जहां यह अच्छा नहीं दिखता है। –

2

मैं विधि है कि this answer में सुझाव दिया गया था की कोशिश की, लेकिन मैं कोई भाग्य यह काम करने के लिए हो रही थी। इस स्निपेट मेरे लिए काम करता है, हालांकि

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

हालांकि यह एक झटका है, तो टर्मिनल विषय मैं (बनाम प्रकाश अंधेरे), डिफ़ॉल्ट थीम चेहरे इस्तेमाल किया जा रहा का उपयोग जो अच्छा लगता है नहीं हो सकता है की तुलना में एक अलग पृष्ठभूमि सेटिंग है प्रकाश या अंधेरे पृष्ठभूमि पर। लेकिन मेरे मामले में जो टर्मिनल और थीम दोनों अंधेरे हैं, यह ठीक काम करता है।

+1

यह मेरे लिए काम करता था, जबकि स्वीकार किए गए व्यक्ति ने नहीं किया था। – terje

संबंधित मुद्दे