संकलन मोड वर्तमान निर्देशिका को स्वचालित रूप से बदलना?


16

वर्तमान में, मेरा संकलन आदेश इस प्रकार है:

cd ~/somedir && ./somescript.sh

यह emacs को उस फ़ाइल को खोजने से रोकता है जिसमें कोई त्रुटि होती है (और इसे खोलना)।

बेशक, मैं M-x cdमैन्युअल रूप से चला सकता हूं लेकिन क्या बफर को अपनी वर्तमान निर्देशिका को प्रोग्रामिक रूप से बदलने का कोई तरीका है?


1
यह कुछ ऐसा है जिसे मैं करने की कोशिश कर रहा हूं। आदर्श रूप से, कुछ ऐसी चीजें हो सकती हैं जिन्हें आप .dir-locals.el में आधार निर्देशिका में काम कर सकते हैं। 'काम करने लगता है)।
जूलियन स्क्वॉयर

जवाबों:


7

अंत में, मैंने वर्तमान निर्देशिका पर भरोसा करना छोड़ दिया क्योंकि यह बहुत ही घुसपैठ और इडो जैसी अन्य चीजें थीं जहां अंत प्रभावित हो रहा था ...

इसके बजाय, मैंने अपनी बिल्ड डायरेक्टरी को इसमें जोड़ा compilation-search-path

(add-to-list 'compilation-search-path "/path/to/build")

इस सवाल पर पाया गया: संकलन बफर से Emacs के संकलन-गोटो-त्रुटि वाले पथ को कैसे समायोजित किया जाए?

प्रश्न यह भी बताता है कि कुछ विशेष तार उत्सर्जित होने पर निर्देशिका मिलानकर्ता निर्देशिका को स्वचालित रूप से बदल सकता है:

Entering directory `...'
... 
Leaving directory `...'

यह भी जाहिरा तौर पर अनुकूलन योग्य है।


यह एक मजबूत समाधान की तरह दिखता है। यदि यह आपके लिए काम करता है, तो इसे स्वीकार करने के लिए स्वतंत्र महसूस करें।
मालाबार 2

ध्यान दें कि यह काम नहीं कर सकता है यदि आपको बिल्ड सिस्टम की आवश्यकता है कुछ फ़ाइलों को ढूंढें /path/to/build
आंद्रे होल्जनर

5

आप बस निर्देशिका का एक डेयर बफर बना सकते हैं, जहाँ आप एक कमांडर के रूप में सेवा करने के लिए कंपाइल कमांड को आमंत्रित करना चाहते हैं। जब आप संकलित करना चाहते हैं, तो Dired बफर पर जाएँ और संकलित कमांड चलाएँ। compileदिनांकित बफ़र की इस निर्देशिका में अपना आदेश चलाएगा। इसका लाभ यह है कि M-x cdजब आप संकलन करना चाहते हैं, तो आपको निर्देशिकाओं को आगे या पीछे नहीं करना पड़ता है।

यदि आप उपयोग करते हैं projectile, तो इसके पास एक कमांड है जिसका नाम projectile-compileस्वचालित रूप से प्रोजेक्ट रूट द्वारा संकलित कमांड चलाता है projectile


4

इस वैकल्पिक कमांड को चाल चलनी चाहिए:

(defun compile-in-dir (dir command)
  (interactive "DCompile in directory: \nsCommand: ")
  (let ((default-directory dir))
    (compile command)))

वैकल्पिक रूप से, आप नियमित compileकमांड का उपयोग करके संकलन चलाने के बाद , आप बफर (setq default-directory "~/somedir")में विकसित कर सकते हैं *compilation*। यह त्रुटि नेविगेशन कार्य करना चाहिए, लेकिन यह recompileसही काम करने से दोस्तों को रोक सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.