जब फ़ाइलें डिस्क पर बदल गई हैं तो Emacs को सभी बफ़र्स को ऑटो-रिफ्रेश कैसे करें?


176

मेरे पास एक गैर-emacs वैश्विक खोज है और फ़ंक्शन को प्रतिस्थापित करता है जो मेरी डिस्क फ़ाइलों को मेरे emacs बफ़र्स (en masse) की तुलना में अधिक अद्यतित हो जाता है। फ़ाइल को पुनः लोड करके हर एक को व्यक्तिगत रूप से करने के बजाय, एक झपकी में सभी बफ़र्स को डिस्क से ताज़ा करने के लिए emacs बताने का कोई तरीका है?

धन्यवाद! डी


ग्लोबल-ऑटो-रिवर्ट-मोड ने किया जादू ...
जॉर्ज

जवाबों:


229

(global-auto-revert-mode t)अपने में .emacs


यह उन मामलों में अच्छा लगता है, जहाँ मैं हमेशा समकालिक रहना चाहता हूँ, धन्यवाद! मुझे लगता है कि मैं रिवबफ्स का उपयोग करके समाप्त हो जाऊंगा ताकि मैं खुद संघर्षों का प्रबंधन कर सकूं (अन्यथा कभी-कभी मैं बिना सहेजे बदलावों को खो सकता हूं, जिस तरह से मेरे वर्कफ़्लो वर्तमान में काम करते हैं।)
डेव

2
धन्यवाद! मैं रिबफ्स और ऑटो-रिवर्ट-मोड के संयोजन का उपयोग कर रहा हूं। जब मैं परिवर्तनों को अधिलेखित करना चाहता हूं, तो ऑटो-रिवर्ट-मोड बढ़िया काम करता है।
नातान येलिन

12
@Dave: (वैश्विक-) ऑटो-रिवर्स-मोड एक फाइल को वापस नहीं करेगा यदि संबंधित बफर को संशोधित किया गया है, इसलिए आपके द्वारा सहेजे न गए परिवर्तनों को खोने का कोई जोखिम नहीं होना चाहिए।
लिंडनेक्सर

मैंने चर को .emacs में सेट किया है, लेकिन जब मैं कुछ कोड xcode को संपादित करता हूं, तो उस लाइन पर फ़ाइल (पहले से खुला हुआ) को पढ़ें, xcode में संपादित नहीं होता है, Mx को वापस-बफर की आवश्यकता होती है। (mac + emacs 24.1.1)
एरिकफैंग

6
गिट के साथ शाखाओं को स्विच करते समय अच्छी तरह से काम करता है। धन्यवाद!
जस्टिन लेटगेब

10

यहाँ एक विकल्प है यदि आप Emacs GUI का उपयोग कर रहे हैं (मेरा विंडोज 7 पर GNU Emacs 25.1.1 है):

  1. मेनूबार में "विकल्प" पर क्लिक करें
  2. का चयन करें "अनुकूलित Emacs"
  3. का चयन करें "सहेजे गए विकल्प"
  4. फिर आपको एक खोज क्षेत्र देखना चाहिए जहां आप "वैश्विक-ऑटो-रिवर्ट-मोड" दर्ज करते हैं और "खोज" बटन दबाते हैं
  5. "टॉगल" बटन पर क्लिक करें और सुनिश्चित करें कि यह बटन के दाईं ओर "चालू" है
  6. प्रेस "लागू करें और सहेजें" खोज फ़ील्ड के नीचे बटन सही

यदि आपके पास पहले से कुछ फाइलें खुली हैं, तो आपको यह तुरंत प्रभाव देखना चाहिए। सौभाग्य!


3

इशारा करने के लिए @Ashwin को धन्यवाद (global-auto-revert-mode t)। मैंने पाया कि Emacs उन बफ़र्स को स्वचालित रूप से अपडेट नहीं करेंगे जिनकी फ़ाइलें डिस्क में अकेले इस परिवर्तन के साथ बदल गई हैं। से https://www.gnu.org/software/emacs/manual/html_node/emacs/Reverting.html :

डिफ़ॉल्ट रूप से, ऑटो-रिवर्ट मोड फ़ाइल सूचनाओं का उपयोग करके काम करता है, जिससे OS द्वारा Emacs को फाइल सिस्टम में परिवर्तन की सूचना दी जाती है। आप वैरिएबल ऑटो-रिवर्ट-यूज-नोटिफ़िकेशन को एक नील मूल्य पर कस्टमाइज़ करके फ़ाइल सूचनाओं के उपयोग को अक्षम कर सकते हैं, फिर Emacs हर पांच सेकंड में मतदान करके फ़ाइल परिवर्तनों की जांच करेंगे। आप चर ऑटो-रिवर्ट-अंतराल के माध्यम से मतदान अंतराल को बदल सकते हैं।

मेरे सेट के बाद (auto-revert-use-notify nil), Emacs ने वास्तव में हर 5 सेकंड में सभी बफ़र्स को ताज़ा किया।

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