2008-12-09 12 views
15

the Emacs docs के अनुसार, प्रत्येक बार जब आप कोई फ़ाइल खोलते हैं, तो Emacs उस फ़ाइल वाली निर्देशिका में default-directory बदलता है।डिफ़ॉल्ट-निर्देशिका

फिर, यदि कर्सर उस बफर में है और आप (उदाहरण के लिए) SLIME प्रारंभ करते हैं, तो यह SLIME के ​​लिए वर्तमान कार्य निर्देशिका के रूप में default-directory का उपयोग करता है। यदि आप एक नई फ़ाइल खोलने का प्रयास करते हैं, तो यह फ़ाइल को आपके शुरुआती बिंदु के रूप में default-directory के साथ खोलता है।

मैं M-x cd या अन्यथा cd निर्देशिका में सक्षम होना चाहता हूं, और फिर कभी भी Emacs मेरी वर्तमान कार्य निर्देशिका को किसी भी चीज़ पर नहीं बदलता है, लेकिन उस निर्देशिका तक जब तक मैं इसे अन्यथा नहीं बताता। मैं चाहता हूं कि यह सभी बफर में वैश्विक हो, ताकि जब भी मैं वर्तमान कार्यशील निर्देशिका से जुड़ा कुछ कर रहा हूं, मुझे पता है कि इस पर ध्यान दिए बिना कि यह मेरा कर्सर कहां है। क्या इसे करने का कोई तरीका है?

उत्तर

11

आप कुछ इस तरह का उपयोग कर की कोशिश कर सकते:

(add-hook 'find-file-hook 
      (lambda() 
      (setq default-directory command-line-default-directory))) 
4

एक और प्रकार निर्देशिका-स्थानीय चर में आवश्यक निर्देशिका के लिए डिफ़ॉल्ट-निर्देशिका बाध्य करने के लिए है, उदाहरण के लिए की तरह कुछ करने के लिए अपने माता-पिता निर्देशिका में से एक में .dir-locals.el फ़ाइल में:

((nil . ((default-directory . "~/.emacs.d/")))) 
1

यह सबसे अच्छा मैं अब तक के साथ आ गया है, दुर्भाग्य से:

(defun find-file-save-directory() 
    (interactive) 
    (setq saved-default-directory default-directory) 
    (ido-find-file) 
    (setq default-directory saved-default-directory)) 
(global-set-key "\C-x\C-f" 'find-file-save-directory) 

यह काम करता है जब तक C-x C-f से ठीक पहले सेट किया गया है। मैं एक उपयोगी दिशा में मुझे इंगित करने के लिए जुर्ता के जवाब को स्वीकार करने जा रहा हूं।