Bir çerçevenin bölünmesini nasıl engelleyebilirim?


16

Şu anda yakut ve rspec ile çalışıyorum. Derleme arabelleğini gösteren başka bir monitörde ayrı bir kareye sahip olma fikrini gerçekten seviyorum. Geçerli kurulumumda (gerçek işi yaptığım) bir 'kod' çerçevesi ve (rspec sonuçlarını gördüğüm) bir 'test sonucu' çerçevesi kullanılıyor

Sorun 'derleme hatası' çerçevesinde bazı derleme hatası veya dosyayı açmaya çalıştığınızda, pencerenin o karede böler . Gerçekten ne yapmak istiyorum benim 'kod' çerçevesinde açmak için.

Bu seçeneği zaten kullanıyorum display-buffer-reuse-frames. Ayrıca derleme sonuçları penceresini ayarlamaya çalıştım dedicated, ancak emacs yeni bir pencere açmaya çalıştığında, yeni bir çerçeve oluşturulacaktı (Helm kullanıyorsanız özellikle korkunçtur).

Bunu başarmanın kolay bir yolu var mı?


1
Bir tamponun "sabitlenmesi" kolay olduğunda, bundan sonra her zaman aynı noktada görünmesi için emac'ları IDE olarak kullanmak çok daha uygun olacaktır. Emacs kullanırken en çok özlediğim Visual Studio özelliklerinden biri, pencereleri bölmenin, sabitlemenin, sabitlemenin, gizlemenin ve başka şekilde işlemenin basit ve sezgisel yoludur.
nispio

1
Evet. Ben de vs arka plandan geliyor ve emacs temiz-no-düğme-no-saçmalık arayüzü çoğu zaman daha iyi olduğunu hissediyorum rağmen bunu da özlüyorum.
Renan Ranelli

@ nispio VS kullanmıyorum bu yüzden "pin" ile ne demek istediğinizi belirtebilirsiniz. Emacs çerçeveleri genellikle özeldir ve onlarla etkileşime girmedikçe değişmez.
Vamsi

@vamsi: VS, çerçevenizin üst / alt / kenarlarına yapıştırabileceğiniz çok sayıda küçük pencere kullanır veya bunları açıp yeni bir çerçeve oluşturabilirsiniz. Bir pencereyi çerçevenin kenarlarına yaslayabilir ve otomatik gizlenecek şekilde ayarlayabilirsiniz. Örneğin, derleme çıktısı penceresi derleme başladığında sihirli bir şekilde alttan açılır ve derleme bittikten kısa bir süre sonra kendini gizler. Pencerenin otomatik olarak gizlenmesini istemiyorsanız, yerine sabitleyebilir ve referans vermeyi bitirdiğinizde tekrar sabitlemesini kaldırabilirsiniz.
nispio

@nispio Anlıyorum. popwin.elMELPA'dan pop-up derlemek ve C-gbasılana kadar devam eden tamponlara yardım etmek için kullanıyorum . Tam gün onlara ihtiyacım olursa, başka bir pencerede onlara geçiyorum. Pencereleri sabitlemeyi düşünmedim çünkü emacs yapar split-windows-sensibly.
Vamsi

Yanıtlar:


9

Bir tamponun nerede görüntüleneceğini display-buffer-alistnasıl display-bufferseçeceğini belirleyen 600 kiloluk gorili yapılandırmanız gerekir . Bu kılan display-buffer-reuse-framesyeni emacsen içinde eskimiş. İşte size yol göstermesi gereken bir yapılandırma (en az 24 emacs).

;; all buffers, try to reuse windows across all frames
(add-to-list 'display-buffer-alist
           '(".*". (display-buffer-reuse-window .
                                  ((reusable-frames . t)))))

;; except for compilation buffers where you want new and dedicated frames when necessary
(add-to-list 'display-buffer-alist
         '("^\\*Compile-Log\\*". ((display-buffer-reuse-window
                                   display-buffer-pop-up-frame) .
                                  ((reusable-frames . t)
                                  (inhibit-same-window . t)))))

Gördüğünüz gibi derleme günlüğü arabelleğini eşleştirmek için bir regexp kullanıyorum. Dokümantasyonu display-buffersize neler olduğuna dair bir fikir vermelidir. Şimdiye kadar okuyacağınız en eğlenceli dokümantasyon parçası değildir. Onları sırayla ekledim, böylece derleme günlüğü regexp genel regexp öncesinde eşleşecek. Normal ifadeyi ihtiyaçlarınıza göre uyarlayın.

DÜZENLE Herhangi bir kareyi bölünemez yapmak için M-: (set-frame-parameter nil 'unsplittable t)o kareyi değerlendirebilirsiniz. FRAMEElisp'den yapıyorsanız nil'i gerekli ile değiştirin . Bu iki ayar arasında, özellikle o karede bir dosya bulamazsanız, derleme çerçevesini özel yapmalıdır.


Mesele şu ki, her zaman yeni kareler açmak istemiyorum. Ne istiyorum her zaman 'test' çerçevesinde görüntülenmesi gereken 'compilation-log' arabellek dışında, tüm pencereleri 'kod' çerçeve ile sınırlamaktır. Tüm yeni pencereleri ana 'kod' çerçeveme yönlendirmenin bir yolunu bulamadım. Belki de soruda yeterince net değildim = (
Renan Ranelli

Bu yalnızca derleme günlüğü için yalnızca varolan bir çerçeve yoksa yeni bir çerçeve açmalıdır. Bana neyin yanlış gittiğini söyleyebilir misin? Herhangi bir çerçevenin nasıl bölünemez hale getirileceğiyle ilgili düzenlemeye bakın.
Vamsi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.