2013-02-16 21 views
5

Emacs में, क्या हाल ही में खोला गया फ़ाइल खोलने का कोई आदेश है? visit-most-recent-file की तरह?Emacs में, क्या हाल ही में खोला गया फ़ाइल देखने के लिए कोई आदेश है?

ध्यान दें कि मैं हाल की फ़ाइलों की सूची नहीं देखना चाहता हूं और फिर एक का चयन करना चाहता हूं। मैं हाल ही में खोले गए सबसे हाल ही में जाना चाहता हूं।

एक ही कीस्ट्रोक के साथ हाल ही में खोला गया फ़ाइल (जो वर्तमान बफर में नहीं है) पर जाना बहुत अच्छा होगा। और उसके बाद फिर से कीस्ट्रोक का आह्वान करके अगली सबसे हाल ही में खोला गया फ़ाइल देखने में सक्षम हो जाएं, और इसी तरह।

ताकि उस कीस्ट्रोक को चार बार दबाकर (उदा। A-UP), मैं अपनी हाल की फाइल सूची में शीर्ष चार फ़ाइलों को स्वचालित रूप से खोल सकता हूं।

मैं C-x C-f UP RET दबाकर हाल ही की फ़ाइलों के माध्यम से ब्राउज़ करके पहले से ही ऐसा कर सकता हूं, लेकिन यह एक ही कीस्ट्रोक (उदा। A-UP) में ऐसा करना अच्छा होगा।

(require 'recentf) 
(defvar my-recentf-counter 0) 
(global-set-key (kbd "<M-up>") 
     (lambda() 
      (interactive) 
      (setq my-recentf-counter (1+ my-recentf-counter)) 
      (recentf-open-most-recent-file my-recentf-counter))) 

आप शायद समस्या "हाल का" सूची में फ़ाइलों को जो आप (अस्थायी सामान कि पर बचा लिया गया था में कोई दिलचस्पी नहीं कर रहे हैं देखते हैं कि का सामना करना पड़ेगा:

उत्तर

3

भवन,

(defun visit-most-recent-file() 
    "Visits the most recently open file in `recentf-list' that is not already being visited." 
    (interactive) 
    (let ((buffer-file-name-list (mapcar 'buffer-file-name (buffer-list))) 
     most-recent-filename) 
    (dolist (filename recentf-list) 
     (unless (memq filename buffer-file-name-list) 
     (setq most-recent-filename filename) 
     (return))) 
    (find-file most-recent-filename))) 

मैं बहुत ज्यादा यह परीक्षण नहीं किया।

+0

पवित्र गाय, यह काम करता है! धन्यवाद! – incandescentman

2

आप recentf पैकेज का उपयोग करके ऐसा कर सकते Emacs से बाहर निकलना)। हाल ही में खोले गए फाइलों की सूची से उन फ़ाइलों को बाहर करने के लिए हालिया-बहिष्कृत चर का उपयोग करें। pokita के जवाब के बंद

+0

धन्यवाद! इस तरह के कामों के अलावा हमें हालिया-एफ सूची को रीसेट करने के लिए एक तरीका चाहिए। यानी अगर मैं दबाता हूं, तो यह सफलतापूर्वक मेरी सबसे हाल की फाइल खोलता है। यदि मैं फिर आवश्यक परिवर्तन करता हूं, फ़ाइल को सहेजता हूं, बफर को मारता हूं, फिर मुझे दबाएं, जब मुझे इसे फिर से खोलना होगा, तो यह मेरी अगली फ़ाइल खोलता है, जिस फ़ाइल पर मैं काम कर रहा था उसे फिर से खोलने की बजाय भले ही फ़ाइल अब सबसे हालिया है। उपाय? – incandescentman

+1

आप कर सकते हैं (ऐड-हुक 'मार-बफर-हुक (लैम्ब्डा() (सेटक माय-हालिया-काउंटर 0)), लेकिन मेरे पास एक झटका है कि आप जल्द ही इसके साथ अन्य समस्याएं भी देखेंगे। मैं बस हाल ही में इंटरैक्टिव-पूर्ण का उपयोग कर रहा हूं और इससे खुश हूं। वैकल्पिक रूप से, चूंकि आप ido का उपयोग कर रहे हैं, नए Emacsen में ido-virtual-buffers चर पर एक नज़र डालें। – pokita

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