Dolaylı arabellek kullanmanın faydaları nelerdir ? Hangi koşullarda faydalıdırlar?
Dolaylı arabellek kullanmanın faydaları nelerdir ? Hangi koşullarda faydalıdırlar?
Yanıtlar:
Aynı arabelleğin birden çok konumunu görmek ve düzenlemek için. Bu nedenle, uzun bir arabelleği kaydırmak zorunda değilsiniz, sadece pencereyi görünür bölgeye geçirin. Her klonlanmış tampon ayrıca farklı işaret halkası, daralma ve diğer tampon özelliklerine sahiptir. Dolaylı arabelleği kullanmaz ancak aynı arabelleğin başka bir penceresini oluşturursanız, her şey paylaşılır ve farklı konumları görüntüleme ve düzenlemenin ötesinde başka gelişmiş özellikler gerçekleştiremezsiniz. Örneğin, dolaylı bir tamponla, tüm kod bloğunu katlayabilir, orijinal tamponu etkilemeden etkili bir şekilde bir "etiket ağacı" oluşturabilirsiniz. Bir pencere kullanarak, her iki tampon da aynı olduğundan her iki pencerede de her iki tampon da katlanır.
Özetle, dolaylı arabellek aynı metni ve dosyayı orijinal ara belleğinizde paylaşan tamamen farklı bir arabellektir, bu nedenle klonlanmış arabelleği kaydettiğinizde orijinal dosyanızı da kaydeder.
Bir kullanım örneği, bir dosyanın bir bölümünde farklı bir ana mod kullanmaktır.
Örneğin, bir zamanlar belirli öğelerin içinde kod bulunan xml belgeleriyle çalışıyordum. Tüm belgeyi xml gibi düzenlemek istedim, ancak yine de belirli öğelere gömülü programlama dili için tüm büyük mod özelliklerine sahip olmak istedim, bu yüzden çalışmakta olan dolaylı bir arabellekteki bu öğelerin gövdesine daralttım. uygun ana mod.
İşte yapmak için kullandığım benim yapılandırma bir işlev:
(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)))
Not: bu mükemmel değildir, font kilidi gibi şeyler bu senaryoda kullanılmak üzere özel ek çalışmalar gerektirir.
Dolaylı tamponlar, aynı tamponun çoklu görüntülerini, özellikle de her biri birçok açıdan ayrı bir tampon gibi davranan çoklu daralmalar sağlar.
Kütüphane Şerhi'nin narrow-indirect.el
dediği gibi:
Dolaylı arabellekleri düşündüğünüzden daha fazla için kullanabilirsiniz. Örneğin, bir dizin listesine faydalı (etkin) görünümler vermek için Dired arabelleklerinin bölümlerinden alınan klonları kullanabilirsiniz.
g
Tüm Dired arabellek görünümüne bağlı olduklarından, çalışmayan yalnızca birkaç tuş / komut ( listeyi güncellemek gibi ) vardır. Denemek ve şüphesiz dolaylı tamponlar için ilginç yeni kullanımlar bulacaksınız.