2014-04-02 8 views
5

सभी प्रति बफ़र,Emacs खिड़की

मैं कई खिड़कियों अन्य IDEs के समान में स्विच बफ़र्स के लिए एक रास्ता तलाश कर रहा हूँ पर स्विच करें। मान लें कि मैंने अपने फ्रेम को दो विंडो (C-x 3) में विभाजित किया है। मैं हमेशा बाईं ओर विंडो में .c files और .h files के लिए बफर को संभालना चाहता हूं। मैं एक विशिष्ट विंडो में बफर की एक सूची को जोड़ने का एक तरीका ढूंढ रहा हूं, और चक्र बफर केवल वर्तमान विंडो से संबंधित है। इसलिए यदि मैं दाईं तरफ .h file संपादित कर रहा हूं, और एक महत्वपूर्ण संयोजन दबाता हूं तो मुझे अगले .h file मिलते हैं।

किसी भी सलाह के लिए धन्यवाद, जानोस

उत्तर

1

मैं buffer-stack (उपलब्ध का उपयोग Melpa के माध्यम से विफल रहता है) कुछ इसी तरह के लिए। buffer-stack आपको बफर के बीच बहुत ही लचीले तरीके से चक्र की अनुमति देता है (यह आपके सबसे हाल ही में उपयोग किए जाने वाले बफर याद करता है, और यह प्रति फ्रेम ढेर अलग करता है)।

आप बफर स्विचिंग कमांड में फ़िल्टर फ़ंक्शंस जोड़ सकते हैं। तो आप मौजूदा एक्सटेंशन की तुलना में उसी एक्सटेंशन वाले फ़ाइल नामों के साथ केवल बफर पर विचार करने के लिए एक फ़िल्टर फ़ंक्शन जोड़ सकते हैं। मैं एक ही मोड के बफर के बीच स्विच करने के लिए फ़िल्टरिंग फ़ंक्शन का उपयोग करता हूं। यहां यह एक उदाहरण है जो मेरे कीबाइंडिंग को वर्तमान मोड द्वारा फ़िल्टरिंग स्विच करने के लिए दिखाता है और थके हुए बफर को भी स्विथ करता है। फ़ाइल एक्सटेंशन के आधार पर एक और फ़िल्टर जोड़ना आसान होगा:

(defmacro command (&rest body) 
    `(lambda() 
    (interactive) 
    ,@body)) 

(defvar buffer-stack-mode) 

(defun buffer-op-by-mode (op &optional mode) 
    (let ((buffer-stack-filter 'buffer-stack-filter-by-mode) 
     (buffer-stack-mode (or mode major-mode))) 
    (funcall op))) 

(defun buffer-stack-filter-by-mode (buffer) 
    (with-current-buffer buffer 
    (equal major-mode buffer-stack-mode))) 

(global-set-key [(meta kp-7)] 
       (command (buffer-op-by-mode 'buffer-stack-up))) 
(global-set-key [(meta kp-9)] 
       (command (buffer-op-by-mode 'buffer-stack-down))) 
(global-set-key [(meta kp-3)] 
       (command (buffer-op-by-mode 'buffer-stack-down 'dired-mode))) 
(global-set-key [(meta kp-1)] 
       (command (buffer-op-by-mode 'buffer-stack-up 'dired-mode))) 
1

आप ff-find-other-file उपयोग कर सकते हैं। एक उपसर्ग तर्क सी-यू के साथ, यह एक और विंडो खुल जाएगा।

अगली .h फ़ाइल प्राप्त करने के आपके विचार के लिए, आप IDE से Emacs में एक बुरा विचार लाने की कोशिश करके को सीमित कर रहे हैं। उपयोग projectile या ido-switch-buffer या helm-buffers-list: इन उपकरण, एक समय में फ़ाइलों के सैकड़ों प्रबंधन कर सकते हैं, जबकि के "अगले फ़ाइल हो रही" (यानी टैब्स) दृष्टिकोण के आसपास 20.

संबंधित मुद्दे