Dlaczego warto korzystać z buforów pośrednich?

Odpowiedzi:

16

Aby zobaczyć i edytować wiele lokalizacji tego samego bufora. Nie musisz więc przewijać długiego bufora, ale po prostu przełączyć okno na widoczny region. Każdy sklonowany bufor ma także inne właściwości znaku, zwężenia i inne właściwości bufora. Jeśli nie używasz bufora pośredniego, ale tworzysz kolejne okno tego samego bufora, wtedy wszystko jest udostępniane i nie możesz wykonywać innych zaawansowanych funkcji poza przeglądaniem i edytowaniem różnych lokalizacji. Na przykład za pomocą bufora pośredniego można złożyć cały blok kodu, skutecznie utworzyć „drzewo znaczników” bez wpływu na oryginalny bufor. Za pomocą okna oba bufory w obu oknach są składane, ponieważ oba bufory są takie same.

Podsumowując, bufor pośredni to zupełnie inny bufor, który akurat współdzieli ten sam tekst i plik w oryginalnym buforze, więc kiedy zapisujesz sklonowany bufor, zapisuje on również oryginalny plik.

Do zrobienia
źródło
3
Zgadzam się, że bufory pośrednie mają zalety. Ale twój pierwszy punkt nie potrzebuje buforów pośrednich. Możesz zobaczyć i edytować wiele lokalizacji tego samego bufora, nawet jeśli ten sam bufor jest po prostu otwarty w dwóch oknach. Ale tak, moim zdaniem niezależne zawężanie, składanie itp. Są mocnymi cechami bufora pośredniego.
Kaushal Modi
5
Edytuj także ten sam bufor z wieloma trybami (połącz bufor pośredni z zawężaniem). Możesz edytować niektóre części bufora z trybami Markdown, inną część z trybami python, inną część z trybami json
freakhill
Możesz zobaczyć wiele lokalizacji przy użyciu wielu okien sam, ale ponieważ w tej sytuacji jest tylko jedna wartość punktu, przełączanie buforów nie zachowa lokalizacji w obu oknach, ale tylko w jednym.
politza
10

Jeden przypadek użycia polega na użyciu innego trybu głównego w jednej części pliku.

Na przykład kiedyś pracowałem z dokumentami XML z kodem wewnątrz niektórych elementów. Chciałem móc edytować cały dokument tak, jakby to był xml, ale nadal mam wszystkie funkcje trybu głównego dla języka programowania osadzone w niektórych elementach, więc zawęziłem się do treści tych elementów w buforze pośrednim, w którym działał odpowiedni tryb główny.

Oto funkcja z mojej konfiguracji, której używam do tego:

(defun indirect-region (start end)
  "Edit the current region in another indirect buffer.
    Prompt for a major mode to activate."
  (interactive "r")
  (let ((buffer-name (generate-new-buffer-name "*indirect*"))
        (mode (intern
               (completing-read
                "Mode: "
                (mapcar (lambda (e)
                          (list (symbol-name e)))
                        (apropos-internal "-mode$" 'commandp))
                nil t))))
    (pop-to-buffer (make-indirect-buffer (current-buffer) buffer-name))
    (funcall mode)
    (narrow-to-region start end)
    (goto-char (point-min))
    (shrink-window-if-larger-than-buffer)))

Uwaga: nie jest to idealne, takie jak blokowanie czcionek wymaga specjalnej dodatkowej pracy do użycia w tym scenariuszu.

Jordon Biondo
źródło
4

Bufory pośrednie dają wiele widoków tego samego bufora, w szczególności wiele zawężeń, z których każdy działa pod wieloma względami jak oddzielny bufor.

Jak narrow-indirect.elmówi komentarz do biblioteki :

Możesz użyć buforów pośrednich na więcej niż myślisz. Możesz użyć klonów pobranych z części buforów Dired, na przykład, aby uzyskać przydatne (aktywne) widoki do listy katalogów. Istnieje tylko kilka klawiszy / poleceń (takich jak gaktualizacja listy), które nie działają, ponieważ zależą od widoku całego bufora Dired. Eksperymentuj, a bez wątpienia znajdziesz ciekawe nowe zastosowania buforów pośrednich.

Rysował
źródło