2009-10-15 23 views
7

Bu nedenle, genellikle Emacs'te 3 arabelleğe sahibim.Pencere hareketi komutlarını belirli bir pencereyi yok saymayı nasıl sağlayabilirim?

  1. Yazdığım gerçek kod için bir arabellek.
  2. Söz konusu kod için birim sınaması için bir arabellek.
  3. Ünite testinin sonuçlarını gösteren üçüncü bir tampon. Bu arabellek, C-x SPACE birim testimi çalıştırdığımda diğer iki arabelleğin altında olarak geliyor. Bastığımda

ne, öyle ki bu, üçüncü bir tampon devre dışı bırakma Cı-X, O sadece tampon 1 ve 2 tampon arasında geçiş ben? Şu anda, tampon 1 arasında geçiş, daha sonra özel olarak belirtmek gerekirse, vb tampon 1 sonra 3 tampon, tampon 2, teşekkür tampon 1 ve

2 arasında tek anahtara C-X, O istiyoruz. Aşağıdaki gibi

+0

Size yardımcı olabilecek bir çözüm değil bir geçici çözüm: http://stackoverflow.com/questions/91071/emacs-switch-active-window –

+0

Bu, içerdiğinde bir * pencere * atlamasını istediğiniz gibi geliyor Değiştirmek istemediğiniz belirli bir arabellek. Doğru? –

+0

Stephen, arabellek yerine pencere koymak için başlığı ve soruyu güncellemenizi önerebilir miyim? buffer/window/frame'in emacs'ta belirli bir anlamı vardır: Frame, bir windows yöneticisinin bir pencere (genellikle etrafta dolaşabileceğiniz bir muhafaza) olarak adlandırdığı şeyin eşdeğeridir. pencereye atıfta bulunduğunuz şey: çerçevenin bazı metinlerini gösteren bir alt kümesidir. gösterilen gerçek içeriği gösteren bir arabellektir. Genelde modelinde gösterilen bir isim ile tanımlanır. Aynı arabelleği 2 pencerede, ör. – Bahbar

cevap

7

genel bu çözüm (bakabilirsiniz) bir şey:

(defvar ignore-windows-containing-buffers-matching-res '("\\*Help") 
     "List of regular expressions specifying windows to skip (if window contains buffer that matches, skip)") 

(defadvice other-window (before other-window-ignore-windows-containing activate) 
    "skip over windows containing buffers which match regular expressions in 'ignore-windows-containing-buffers-matching-res" 
    (if (and (= 1 (ad-get-arg 0)) (interactive-p)) 
     (let* ((win (next-window)) 
      (bname (buffer-name (window-buffer win)))) 
     (when (some 'identity (mapcar '(lambda (re) 
             (string-match re bname)) 
            ignore-windows-containing-buffers-matching-res)) 
      (ad-set-arg 0 2))))) 

değişken özelleştirme atlamak istediğiniz tampon eşleşen adları bir düzenli ifade olması.

+0

Bunu, .emacs dosyama kopyaladım. Daha sonra "* Ruby-Test *" ("Ruby-Test *") ile "* Help" i değiştirdim (bu, ruby ​​testinin içinde çalıştırıldığı tamponun adıydı). Şimdi arabellekleri değiştirdiğimde, sadece tampon 1 ve 2 arasında geçiş yapar. İyi bir çözüm gibi görünüyor. Teşekkürler. –

5

Trey'in cevabı tam olarak ne istediğinizi yapacağız (en azından öyle görünüyor, denemedim). Daha genel bir çözüm, swbuff-x veya kendi swbuff-advice ile swbuff kullanmak olacaktır. Her üç hakkında bilgi Emacs Wiki swbuff page'da bulunabilir.

İlgili konular