मैं OS X 10.6 पर 23.3.1 कोको का निर्माण कर रहा हूँ।
मैंने निम्नलिखित को ~ / लाइब्रेरी / लॉन्चअगेंट्स / gnu.emacs.daemon.plist में जोड़ा ताकि यह एक डेमॉन शुरू कर दे और अगर मैं अनजाने में इसे मार दूं तो स्वचालित रूप से ईमैक्स को फिर से चालू कर देगा।
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>gnu.emacs.daemon</string>
<key>ProgramArguments</key>
<array>
<string>/Applications/Emacs.app/Contents/MacOS/Emacs</string>
<string>--daemon</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>ServiceDescription</key>
<string>Gnu Emacs Daemon</string>
</dict>
</plist>
यह सॉर्ट काम करता है लेकिन मैंने देखा कि मेरा रंग विषय ठीक से काम नहीं कर रहा था। तब मुझे याद आया कि मैंने अपनी इनिट फ़ाइल में निम्नलिखित को जोड़ा था:
(when window-system
(require 'alpha)
(require 'color-theme-ir-black)
(modify-frame-parameters (selected-frame) '((alpha . 85)))
(color-theme-ir-black))
जब डेमॉन विंडो-सिस्टम के रूप में शुरू किया गया है, तो यह स्पष्ट रूप से गलत है और यह समझ में आता है, हालांकि इसका कारण मैंने इसे जोड़ा है क्योंकि मैं कभी-कभार एससीएस आदि से एक टर्मिनल में सामान्य एमएसीएस का निर्माण शुरू करना पसंद करता हूं और यह रंग योजना पूरी तरह से iTerm में अपठनीय है। (जब विंडो-सिस्टम ...)। क्या विंडो मोड को प्रारंभ करने के लिए emacs को बाध्य करने का एक तरीका है - जब शुरू होता है?
एक और मुद्दा मैंने देखा है कि जब मैं डेमॉन मोड में प्रेस स्वा (डिलीट-फ्रेम) चलाता हूं तो मुझे एकमात्र दृश्यमान या आइकॉनिफाइड फ्रेम को डिलीट करने का त्रुटि प्रयास नहीं मिलता है और बैकग्राउंड में ईमैक्स चलती रहती है। मुझे यह सबसे अधिक पसंद है, हालांकि मैंने देखा है कि एक बार अंतिम फ्रेम को मार देने के बाद मैं अब डॉक से इमेक को दोबारा नहीं खोल सकता हूं और हालांकि एमएसीएस सक्रिय हो जाएगा और मेनू प्रदर्शित होते हैं कि वे काम नहीं करते हैं और मैं एक नया फ्रेम नहीं बना सकता हूं सिवाय कमांड लाइन से एमकैशिएंट का उपयोग करके। किसी और को यह मुद्दा है और या वर्कअराउंड पर सिफारिश? शायद मैं अंतिम फ्रेम और आइकोइज़्ड-फ़्रेम के बजाय यह पता लगाने के लिए स्व-बाइंड कर सकता हूं, लेकिन यह निश्चित नहीं है कि यह अंतिम विंडो क्यों नहीं सोचता है और मुझे इसे पहली जगह पर मारने की अनुमति देता है।
अपडेट करें:
मुझे स्टीव पर्सेल द्वारा निम्नलिखित ब्लॉग पर एक ऐसी ही समस्या के समाधान के लिए एक टिप्पणी मिली: http://emacs-fu.blogspot.com/2009/03/color-theming.html
ऐसा लगता है कि नए बनाए गए फ्रेम को सेटअप करने के लिए और उसके बाद (सेट-कलर-थीम-इस-ग्लोबल निल) को सेटअप करने के लिए 'आफ्टर-मेक-फ्रेम-फंक्शन हुक का उपयोग करना है ताकि प्रत्येक फ्रेम का अपना रंग विषय हो सके। तो मेरे init के संबंधित अनुभाग अब इस तरह दिखते हैं:
(defvar after-make-console-frame-hooks '()
"Hooks to run after creating a new TTY frame")
(defvar after-make-window-system-frame-hooks '()
"Hooks to run after creating a new window-system frame")
(defun run-after-make-frame-hooks (frame)
"Selectively run either `after-make-console-frame-hooks' or
`after-make-window-system-frame-hooks'"
(select-frame frame)
(run-hooks (if window-system
'after-make-window-system-frame-hooks
'after-make-console-frame-hooks)))
(add-hook 'after-make-frame-functions 'run-after-make-frame-hooks)
(add-hook 'after-init-hook (lambda ()
(run-after-make-frame-hooks (selected-frame))))
(setq color-theme-is-global nil)
(add-hook 'after-make-window-system-frame-hooks
'(lambda ()
(require 'alpha)
(require 'color-theme-ir-black)
(modify-frame-parameters (selected-frame) '((alpha . 85)))
(color-theme-ir-black)
(global-set-key (kbd "s-w") 'delete-frame)))
हालाँकि, मैं अभी भी समस्या है जहाँ डिलीट-फ्रेम अंतिम फ्रेम को बंद कर देता है जब emacs को डेमॉन के रूप में शुरू किया गया था और मुझे emacsclient का उपयोग करके एक नया फ्रेम बनाने की अनुमति नहीं दी।
अपडेट करें:
अगर मैं eval (frame-list)
देखूं कि केवल एक दिखाई देने के बावजूद 2 फ्रेम सूचीबद्ध हैं। मैंने देखा कि अगर मैं /Applications/Emacs.app
Emacsclient के बजाय खुले के साथ Emacs शुरू करता हूं तो यह नहीं होता है । मैं सामान्य रूप से कमांड से एक उपनाम के साथ emacs शुरू करता हूं e='emacsclient -c -n '
जो कि दूसरा फ्रेम बनाता है। मैं केवल खुले कमांड के साथ emacs शुरू करके दूसरे फ्रेम से जुड़ सकता हूं। अगर मैं बिना किसी चीज़ के एमेसक्लिएंट-एन की कोशिश करता -c
हूं, तो मुझे कुछ भी नहीं मिलता है, और अगर मैं दौड़ता emacsclient -n -e '(frame-list)'
हूं तो मुझे लगता है कि एक फ्रेम है जो तब तक दिखाई नहीं देता जब तक कि मैं -c
एप्लिकेशन फ़ोल्डर से नया फ्रेम या ओपन एमएसीएस बनाने के लिए उपयोग नहीं करता ।