मैं एक फ्रेम को विभाजित होने से कैसे रोक सकता हूं?


16

वर्तमान में मैं माणिक और rspec के साथ काम करता हूं। मुझे वास्तव में एक और मॉनिटर में एक अलग फ्रेम होने का विचार पसंद है जो मुझे संकलन बफर दिखा रहा है। मेरा वर्तमान सेटअप एक 'कोड' फ्रेम (जिसमें मैं वास्तविक काम करता हूं) और एक 'परीक्षण-परिणाम' फ्रेम (जिसमें मैं rspec परिणाम देखता हूं) का उपयोग करता हूं

समस्या यह है कि जब मैं 'परीक्षण-परिणाम' फ्रेम में कुछ संकलन त्रुटि या फ़ाइल खोलने का प्रयास करता हूं, तो खिड़की उस फ्रेम में विभाजित हो जाती है । मैं वास्तव में क्या करना चाहूंगा, यह मेरे 'कोड' फ्रेम में खुलने के लिए है।

मैं पहले से ही विकल्प का उपयोग करता हूं display-buffer-reuse-frames। मैंने संकलन परिणाम विंडो को सेट करने का भी प्रयास किया dedicated, लेकिन जब भी emacs एक नई विंडो खोलने की कोशिश करते हैं, तो एक नया फ्रेम बनाया जाएगा (जो विशेष रूप से भयानक है यदि आप हेल्म का उपयोग करते हैं।)

क्या इसे हासिल करने का कोई आसान तरीका है?


1
IDE के रूप में emacs का उपयोग करना इतना अधिक सुविधाजनक होगा यदि एक बफर को "पिन" करना आसान होता है ताकि यह हमेशा उसी स्थान पर दिखाई दे। विजुअल स्टूडियो की एक विशेषता जो मुझे सबसे ज्यादा याद आती है, जब ईमैक्स का उपयोग करना विभाजन, पिन, डॉक, छिपाना और अन्यथा खिड़कियों में हेरफेर करने का सरल और सहज तरीका है।
nispio

1
हां। मैं भी एक बनाम पृष्ठभूमि से आता हूं, और मुझे यह भी याद है, हालांकि मुझे लगता है कि एमएसीएस क्लीन-नो-बटन-नो-बुलशिट इंटरफ़ेस ज्यादातर समय बेहतर है।
रेनन राणेली

@ नोस्पियो मैं वीएस का उपयोग नहीं करता हूं ताकि आप निर्दिष्ट कर सकें कि "पिन" से आपका क्या मतलब है। एमएसीएस फ्रेम आमतौर पर अनन्य होते हैं और जब तक आप उनके साथ बातचीत नहीं करते तब तक बदलते नहीं हैं।
वामसी

@vamsi: वीएस बहुत कम खिड़कियों का उपयोग करता है जिन्हें आप अपने फ्रेम के ऊपर / नीचे / पक्षों से जोड़ सकते हैं, या आप उन्हें पॉप आउट कर सकते हैं और एक नया फ्रेम बना सकते हैं। आप एक फ्रेम के किनारों के खिलाफ एक खिड़की डॉक कर सकते हैं और इसे ऑटो-छिपाने के लिए सेट कर सकते हैं। उदाहरण के लिए, संकलन प्रारंभ होने पर संकलन आउटपुट विंडो जादुई रूप से नीचे से ऊपर पॉप जाएगा, और संकलन समाप्त होने के तुरंत बाद फिर से खुद को छिपाएगा। यदि आप विंडो को ऑटो-छिपाना नहीं चाहते हैं, तो आप इसे जगह में पिन कर सकते हैं, और फिर इसे अन-पिन कर सकते हैं जब आप इसे संदर्भित कर रहे हैं।
nispio

@nispio मैं देख रहा हूँ। मैं popwin.elMELPA से पॉपअप संकलन और बफ़र्स का उपयोग करता हूं जो C-gदबाए जाने तक बनी रहती है। अगर मुझे उन्हें फुलटाइम की जरूरत है, तो मैं उन्हें दूसरी विंडो में स्विच करता हूं। मैंने खिड़कियों को पिन करने के बारे में नहीं सोचा है क्योंकि एमएसीएस करता है split-windows-sensibly
वामसी

जवाबों:


9

आपको 600-पाउंड गोरिल्ला को कॉन्फ़िगर करने की आवश्यकता है display-buffer-alistजो यह निर्धारित करता है कि display-bufferबफर को प्रदर्शित करने के लिए कैसे चुनता है। यह display-buffer-reuse-framesनए emacsen में अप्रचलित बनाता है । यहां एक कॉन्फ़िगरेशन है जो आपको मार्गदर्शन करना चाहिए (कम से कम 24.3 emacs में)।

;; all buffers, try to reuse windows across all frames
(add-to-list 'display-buffer-alist
           '(".*". (display-buffer-reuse-window .
                                  ((reusable-frames . t)))))

;; except for compilation buffers where you want new and dedicated frames when necessary
(add-to-list 'display-buffer-alist
         '("^\\*Compile-Log\\*". ((display-buffer-reuse-window
                                   display-buffer-pop-up-frame) .
                                  ((reusable-frames . t)
                                  (inhibit-same-window . t)))))

जैसा कि आप देख सकते हैं कि मैं कंपाइल-लॉग बफर से मिलान करने के लिए एक regexp का उपयोग करता हूं। दस्तावेज़ीकरण से display-bufferआपको पता चल जाएगा कि क्या हो रहा है। बस एक सिर है कि यह प्रलेखन का सबसे सुखद टुकड़ा नहीं है जिसे आप कभी भी पढ़ेंगे। मैंने उन्हें क्रमिक रूप से जोड़ा है इसलिए संकलन-लॉग रेक्सक्सप को जेनेरिक रीजैक्स से आगे मिलान किया जाएगा। अपनी आवश्यकताओं के लिए regexp को अनुकूलित करें।

EDIT किसी भी फ्रेम को अस्थिर करने के लिए आप M-: (set-frame-parameter nil 'unsplittable t)उस विशेष फ्रेम में विकसित कर सकते हैं । FRAMEयदि आवश्यक हो तो इसे कुल्हाड़ी से बदलें । इन दो सेटिंग्स के बीच, यह संकलन फ्रेम को अनन्य बनाना चाहिए जब तक कि आप विशेष रूप से उस फ्रेम में एक फ़ाइल नहीं ढूंढते।


बात यह है कि मैं हर समय नए फ्रेम नहीं खोलना चाहता। मैं जो चाहता हूं वह 'संकलन' लॉग-बफर के अपवाद के साथ सभी विंडो को 'कोड' फ्रेम तक सीमित करना है, जिसे हमेशा 'परीक्षण' फ्रेम में प्रदर्शित किया जाना चाहिए। मुझे अपने मुख्य 'कोड' फ्रेम में सभी नई विंडो पुनर्निर्देशित करने का कोई तरीका नहीं मिला। शायद मैं इस प्रश्न में पर्याप्त स्पष्ट नहीं था = (
२३:४३ पर रेन रानेली

यह केवल संकलन लॉग के लिए एक नया फ्रेम खोलना चाहिए, वह भी तब जब कोई मौजूदा फ्रेम न हो। क्या आप बता सकते हैं कि क्या गलत हो रहा है। किसी भी फ्रेम को बिना सोचे समझे बनाने के बारे में संपादित देखें।
वामसी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.