जैसा कि एक और पोस्ट में कहा गया है, आप command-switch-alist
पर अपने कस्टम स्विच जोड़ सकते हैं और emacs कमांड लाइन पर पारित किसी भी मिलान स्विच के लिए हैंडलर फ़ंक्शन को कॉल करेंगे। हालांकि, यह ऑपरेशन आपके .emacs
फ़ाइल के मूल्यांकन के बाद किया जाता है। अधिकांश मामलों के लिए यह ठीक है लेकिन आप अपने .emacs
मूल्यांकन के निष्पादन पथ या व्यवहार को बदलने के लिए कमांड लाइन तर्क की इच्छा कर सकते हैं; मैं अक्सर कॉन्फ़िगरेशन हिस्सों को सक्षम/अक्षम करने के लिए ऐसा करता हूं (मुख्य रूप से डिबगिंग के लिए)।
इसे प्राप्त करने के लिए आप command-line-args
पढ़ सकते हैं और मैन्युअल रूप से अपने स्विच की जांच कर सकते हैं और फिर सूची से इसे हटा सकते हैं, यह emacs
किसी अज्ञात तर्क के बारे में शिकायत करेगा।
(setq my-switch-found (member "-myswitch" command-line-args))
(setq command-line-args (delete "-myswitch" command-line-args))
कौन इतना की तरह अपने .emacs
मूल्यांकन में परिवर्तन कर सकते हैं:
(unless my-switch-found
(message "Didn't find inhibit switch, loading some config.")
...)
और तुम एक ही चरण में इस बना सकते हैं:
;; This was written in SO text-box, not been tested.
(defun found-custom-arg (switch)
(let ((found-switch (member switch command-line-args)))
(setq command-line-args (delete switch command-line-args))
found-switch))
(unless (found-custom-arg "-myswitch")
(message "Loading config...")
...)
परीक्षण किया कोड के रूप में चिह्नित "परीक्षण नहीं किया गया"। यह बिल्कुल वर्णन के रूप में काम करता है। –