मैं बफ़र्स की सूची को ibuffer ऑटो-रिफ्रेश कैसे बना सकता हूं?


11
  1. M-x ibuffer
  2. एक बफर का चयन करें
  3. उस बफर को मार डालो

बफर के मारे जाने के बाद, आइबफ़र बफर फिर से प्रकट होता है, लेकिन यह अभी भी चरण 3 में मारे गए बफर नाम को दिखाता है।

क्या ibuffer ऑटो-रिफ़र को बफ़र्स की सूची में रखना संभव है?


यदि आप ibuffer में फिर से Ctrl-x Ctrl-b दबाते हैं, तो यह ऑटोरफ्रेश बनाता है।
अदरक

@ofenerci मेरे लिए (v25.2.2) Cx Cb एक अतिरिक्त विंडो * बफ़र सूची * को बफ़र्स की वर्तमान सूची के साथ खोलता है, लेकिन * इब्फ़र * को अपरिवर्तित छोड़ दिया जाता है
user2740

जवाबों:


13

ibuffer-auto-modeइब्फ़र बफर में कमांड चलाना प्रत्येक इंटरेक्टिव कमांड के बाद डिस्प्ले को रिफ्रेश करता है।

वहाँ इसे स्वचालित रूप से सक्रिय करने का एक सीधा तरीका प्रतीत नहीं होता है। आप इसे अपनी इनिट फ़ाइल में डाल सकते हैं:

(add-hook 'ibuffer-mode-hook (lambda () (ibuffer-auto-mode 1)))

1
यह स्वीकृत समाधान अन्य बफर में चयन को तोड़ता है। जब मैं उस हुक को सक्षम करता हूं, अगर मैं किसी भी बफर पर चयन करता हूं, तो आह्वान करें ibuffer, चयन खो गया है।
भतीजे

8

यह करने के लिए सही तरीके से समर्थन से परिचित कराना है ibufferके लिए auto-revert-mode। यह buffer-stale-functionउन बफ़र्स के लिए परिभाषित करके प्राप्त किया जा सकता है । यकीनन, चूंकि buffer-menuयह उस सुविधा का समर्थन करता है, इसलिए इसे अपस्ट्रीम के लिए ibufferभी रखना अच्छा होगा , लेकिन यह अभी के लिए ऐसा प्रतीत नहीं होता है।

वैसे भी, यहाँ यह करने का एक तरीका है:

(defun my-ibuffer-stale-p (&optional noconfirm)
  ;; let's reuse the variable that's used for 'ibuffer-auto-mode
  (frame-or-buffer-changed-p 'ibuffer-auto-buffers-changed))

(defun my-ibuffer-auto-revert-setup ()
  (set (make-local-variable 'buffer-stale-function)
       'my-ibuffer-stale-p)
  (set (make-local-variable 'auto-revert-verbose) nil)
  (auto-revert-mode 1))

(add-hook 'ibuffer-mode-hook 'my-ibuffer-auto-revert-setup)

नोट: सामान्य तौर पर, किसी को इसके लिए एक मूल्य को परिभाषित करने की आवश्यकता होगी revert-buffer-function, लेकिन ibufferपहले से ही ऐसा होता है (यह निर्धारित है ibuffer-update)


1
क्या इस पद्धति को पसंद करने का कोई कारण है ibuffer-auto-mode?
nispio

1
खैर auto-revert-modeटाइमर का उपयोग करता है, और ibuffer-auto-modeउपयोग करता है post-command-hook, इसलिए एक स्पष्ट अंतर है ; लेकिन अगर मैं एक दूसरे के लिए बेहतर था नहीं कह सकता।
फिल्स

4
मुझे लगता है कि मुझे लगता है कि मैं तदर्थ लोगों के लिए सामान्य समाधान पसंद करते हैं। तो उस अर्थ में, ibufferबफ़र्स दूसरों की तरह व्यवहार करते हैं जब पुरानी सामग्री को ताज़ा करने की बात आती है, तो मुझे क्लीनर लगता है। इसके अलावा, मैं आम तौर पर post-command-hookइस तरह से दुर्व्यवहार करना पसंद करता हूं : जब आप बफर में पूरी तरह से असंबंधित कुछ करने के लिए होते हैं तो यह वास्तव में ओवरकिल है। अंत में, यदि सामग्री को ताज़ा करने के लिए किसी प्रकार की कीस्ट्रोक की आवश्यकता होती है, तो यह अच्छी तरह से हो सकती है g, जो सामग्री को अपडेट करने का स्पष्ट तरीका है। लेकिन दी गई, यह संभवतः एक दार्शनिक मुद्दा है :)
सिग्मा

1
जब मैं इस पद्धति का उपयोग करता हूं, तो मुझे एक संदेश मिलता Reverting buffer `*Ibuffer*'. रहता है। संदेश घुसपैठ योग्य है क्योंकि यह मिनीबफ़र में काम करने के दौरान मुझे बाधित करता रहता है। संदेश दिखाई देता है कि ibufferबफर दिखाई दे रहा है या नहीं।
nispio

1
@nispio (setq auto-revert-verbose nil), संभावित रूप से स्थानीय रूप से
सिग्मा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.