कुछ बफ़र्स को अनदेखा करने के लिए `पिछला-बफर` और` अगला-बफर` बनाओ


10

पतवार में मैं का उपयोग करते समय प्रदर्शित होने से कुछ बफ़र्स उपेक्षा C-x b, मैं एक तरह से आदेशों बनाने के लिए की तलाश में हूँ previous-bufferऔर next-bufferकुछ बफ़र्स अनदेखी ही व्यवहार करते हैं।

जवाबों:


8

यहाँ दो तरीके हैं:

  1. यदि आप फ़ंक्शन switch-to-next-buffer(लाइब्रेरी में window.el) की परिभाषा पर एक नज़र डालते हैं, तो आप देखेंगे कि यह बफ़र्स को विधेय (यदि कोई हो) द्वारा फ़िल्टर करता है जो फ्रेम पैरामीटर का मान है buffer-predicate। उस फ़ंक्शन द्वारा उपयोग किया जाता है next-buffer

    आप उस फ़्रेम पैरामीटर को एक विधेय पर सेट कर सकते हैं जो आपके इच्छित तरीके को फ़िल्टर करता है।

  2. आप switch-to-next-bufferजिस तरह से चाहते हैं उसे फिल्टर करने के लिए बस फंक्शन को सलाह दे सकते हैं। आप मूल रूप से इसकी परिभाषा को लगभग उसी परिभाषा से बदल देंगे, लेकिन इसके अतिरिक्त जिस तरह से आप चाहते हैं, उसे फ़िल्टर करें।

इसी तरह के लिए switch-to-previous-buffer


7
(defvar my-skippable-buffers '("*Messages*" "*scratch*" "*Help*")
  "Buffer names ignored by `my-next-buffer' and `my-previous-buffer'.")

(defun my-change-buffer (change-buffer)
  "Call CHANGE-BUFFER until current buffer is not in `my-skippable-buffers'."
  (let ((initial (current-buffer)))
    (funcall change-buffer)
    (let ((first-change (current-buffer)))
      (catch 'loop
        (while (member (buffer-name) my-skippable-buffers)
          (funcall change-buffer)
          (when (eq (current-buffer) first-change)
            (switch-to-buffer initial)
            (throw 'loop t)))))))

(defun my-next-buffer ()
  "Variant of `next-buffer' that skips `my-skippable-buffers'."
  (interactive)
  (my-change-buffer 'next-buffer))

(defun my-previous-buffer ()
  "Variant of `previous-buffer' that skips `my-skippable-buffers'."
  (interactive)
  (my-change-buffer 'previous-buffer))

(global-set-key [remap next-buffer] 'my-next-buffer)
(global-set-key [remap previous-buffer] 'my-previous-buffer)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.