2010-11-03 8 views
11

के साथ लोड होने पर वर्तमान emacs स्क्रिप्ट फ़ाइल के लिए पथ प्राप्त करें lisp फ़ाइल के भीतर से लोड किया जा रहा है और emacs -l path/to/script/foo.el के साथ चलाया जा सकता है क्या मुझे फ़ाइल चलाने के लिए पथ मिल सकता है?-l पैरामीटर

उदाहरण के लिए, path/to/scriptfoo.el के भीतर से निर्धारित करने का कोई तरीका है?

मैं lisp के साथ बहुत अनुभवी नहीं हूँ इसलिए कृपया अपने समाधान के साथ सौम्य रहें। के रूप में यह लोड किया जा रहा है

Emacs 22.3.1 विंडोज 7

+0

संभव डुप्लिकेट (http://stackoverflow.com/questions/ 1344747/कैसे-टू-रेफर-टू-द-फाइल-वर्तमान में-लोड-इन-एमाक्स-लिस्प) –

+0

@ ट्रे जैक्सन, मैं मानता हूं कि यह करीब है लेकिन यह मुझे ट्रैक करने के लिए थोड़ा और समय लेगा फ़ाइल-नाम-निर्देशिका फ़ंक्शन। –

उत्तर

24

चर load-file-name पर फ़ाइल का नाम के लिए बाध्य है। निर्देशिका पाने के लिए आपको सिर्फ file-name-directory का उपयोग करेंगे, तो जैसे:

(file-name-directory load-file-name) 
की [? कैसे फ़ाइल अभी Emacs लिस्प में लोड किया जा रहा उल्लेख करने के लिए]
+0

बिल्कुल सही, धन्यवाद! –

+0

@JesseVogt ऐसा नहीं * बिल्कुल सही *; इसे 'id'' पैकेज पैकेज में' eval': 'डीबगर दर्ज किया गया - लिस्प त्रुटि: (गलत-प्रकार-तर्क स्ट्रिंगप शून्य) फ़ाइल-नाम-निर्देशिका (शून्य) ' – yPhil

+0

@yPhil' फ़ाइल- नाम-निर्देशिका 'में एक स्ट्रिंग को पारित करने की आवश्यकता होती है, जिसे आपने स्पष्ट रूप से इसे' शून्य 'कहा है। परिवर्तनीय केवल कॉल के दौरान 'लोड' पर सेट होता है - जो प्रश्न का संदर्भ है। –