Bilgileri görüntülemek için boş bir yankı alanı kullanın


10

Eko alanı çoğu zaman boştur, bu da beni bazı bilgileri görüntülemek için kullanabileceğimi düşündürüyor. Örneğin org-clock, geçerli görevi, kalan süreyi ve modelde geçen toplam süreyi görüntüler. Bu bilgiler orada gerçekten okunabilir değil, (o bütün emacs oturumu için geçerlidir çünkü) her kipsatırında tekrarlanan ve değildir (kipsatırı oldukça kısa olabilir) o bunun için bazı değerli kipsatırı boşluk feda etmeye hazır olduğumu kullanışlı . Öte yandan, burada görüntülenecek başka bir şey olmadığında eko alanında görünebilir.

Bunu başarmanın kanonik bir yolu var mı? Bir ekleme işlevini hacklemeyi düşündüm minibuffer-inactive-mode-hook(ancak güvenilir bir şekilde çalışmıyor, örneğin yankı alanı tekrar kullanıldığında mesaj kayboluyor) veya günlüğe kaydedilmemiş iletileri spam yapıyor (ancak bu, diğer kullanımlarla karıştırılacak) yankı alanı ve minibuffer).

Bunun kötü adam sürümü boşta kalma zamanlayıcılarını kullanır, ancak yankı alanı emacs boşta olmadan boş olabilir (örneğin, bazı metinler girilirken).


1
Görüntülenen yankı alanı, * * Yankı Alanı 0 * `veya` * Yankı Alanı 1 * `'dir ve bunlar" normal "tamponlardır. Emacs'i bu tamponlar "yıkandığında" (veya görüntülendiğinde ve boş bırakıldığında) belki bir kanca çalışması sağlayacak şekilde yamalamak mümkün olmalıdır, böylece bu işlevsellik etkili ve güvenilir bir şekilde uygulanabilir.
Stefan

Aklınızda tam olarak ne var ama Bastien Guerry, özellikle emlak başlığını çerçeve başlığında görüntüleyerek ekran mülkünü kurtarmak için bazı ilginç şeyler yaptı: bzg.fr/emacs-strip-tease.html
Dieter.Wilhelm

Yanıtlar:


4

Bu soruya yapılan bir yorum, symon adlı bir paketin böyle bir özelliği kullandığından bahseder .

Minibuffer etkin olmadığında günlüğe kaydedilmemiş iletileri spam yaparak ve bir komut her verildiğinde yeniden görüntülemeyi durdurarak elde edilir. Bunun için ısıtıcı levha oldukça kısa ve birkaç dakika kullanımdan sonra, bununla ilgili herhangi bir sorun fark edemedim: mesajlar ve minibuffer kullanımı yine de mesajlara göre önceliklidir.

Anahtar bileşenler:

  • Bir boşta zamanlayıcı üzerinde çalışan bir görüntüleme fonksiyonu, (ile mesaj çağırır message-log-maxiçin sette nilgörüntülenen dize almaz böylece, *Messages*tampon)
  • bir yeniden görüntüleme işlevi, bir zamanlayıcıda çalıştır
  • ekranı durdurmak için bir işlev pre-command-hook

Tek sorun ekran, bir komut çalıştırıldığında durur ve yazarken bunu içerir.

İlgilenenler için, ilgili kodu github'da bulunan bir kazan plakasına çıkardım .


1

Cevap, IMO hayır . Yankı alanı geçici mesajlar içindir . Ve birçok şey orada yankılanmış olabilecek her şeyi açıkça siler . Bu nedenle, ne istediğinizi makul bir şekilde anlamak sorunludur, IMO.

Özetle, bir alternatif kullanın. İşte bazıları:

  1. Başka bir tampon kullanın (örneğin, bu amaçla açık tuttuğunuz küçük bir çerçeve veya pencere). Yapması basit, onu hareket ettirebilir, düzenleyebilir, silebilir veya onunla ne istersen yapabilirsin.

  2. Mod satırının bir kısmını veya tamamını kullanın (görünüşte daha önce düşündüğünüz).

  3. Bir başlık satırı kullanın.

  4. Bir çerçeve başlığı kullanın.

Eğer ben olsaydım, muhtemelen # 1'i seçerdim. (Ama durum bilgisinin tam zamanlı olarak görüntülenmesini gerçekten istemiyorum / buna ihtiyacım yok. Bana istek üzerine bilgileri (hatta bir tarih / günlük) gösteren bir komut daha büyük olasılıkla tanımlayacağım.)


Yorumlarınızdan sonra güncellendi:

Sorunuzda, " eko alanı tekrar kullanılır kullanılmaz mesaj kaybolur " dediniz . Yani yankı alanı ihtiyaçlarınızı karşılamayacak gibi geçici bir alan kullanmak gibi geldi. Yorum yanıtlarınız bununla çelişiyor gibi görünüyor.

Yankı alanını gerçekten kullanmak istiyorsanız minibuffer-inactive-mode-hook, belirttiğiniz gibi kullanın veya zamanlayıcıyı messageyankı alanına başka bir şekilde aramak veya eklemek için bir zamanlayıcı kullanın . Ancak, bununla ilgili sorunları zaten not ettiniz. Bu sorunlar (üzerine yazma, silme) yankı alanının ( amaçlanan ) geçici doğasından kaynaklanmaktadır .

Özetle, kısa mesajlara yönelik bir alan kullanmak istiyorsunuz, ancak bu alan tekrar kullanıldığında mesajlarınızın kaybolmasını istemiyorsunuz.

(BTW - mod satırı bilgisinin her mod satırında tekrarlandığından bahsettiğinizde: Durum böyle değildir. Mod satırını belirli bir arabellek için özel yapabilirsiniz vb. IOW, her zaman bir mod satırı seçebilirsiniz (veya periyodik olarak) saatinizi veya istediğinizi gösterin.)


Önerileriniz için teşekkür ederiz! İlk olarak, tam olarak anlamıyorum, bu neden sorunlu? Yankı alanının başka herhangi bir kullanımını geçersiz kılmak için yankı alanı atmına gidecek şeyler istiyorum, bu yüzden silme tamam. Ek bilgiler yalnızca yankı alanı boş olduğunda görüntülenmelidir, bu nedenle silinecek hiçbir şey yoktur. Kulağa makul bir özellik gibi gelmiyor mu? Hakkında # 1, sorun ekran alanı boşa harcamak istemiyorum olmasıdır. Yankı alanı boş olsa bile daima oradadır. # 2 ile ilgili bazı sorunları listeledim ve # 3 ve # 4 bu sorunların çoğunu paylaşıyor.
T. Verron

Neden bilgilerin tam zamanlı görüntülenmesini istediğim hakkında, org-clockörneğin şu sorudan bir örnek alın: Zamanlayıcının bana ne yapmam gerektiğini hatırlatmak için işaretlemesini istiyorum ve bunu şu anda yapmam gerekiyordu , genellikle mümkün olduğunca.
T. Verron

"Eko alanı tekrar kullanılır kullanılmaz mesaj kaybolur" Tamam, bu belli değildi. Demek istediğim, minibuffer-inactive-mode-hookminibuffer'ı kullanır ve çıkarsam, mesajın gösterilmesiydi. Daha sonra başka bir komut yankı alanına bir şey yazdırırsa, bu yeni mesaj eklenir ve geçici mesaj geri gelmez (çünkü minibuffer bu kez dahil olmamıştır).
T. Verron

Modelin hakkında, asıl sorun orada mevcut küçük alan (sık sık yatay olarak bölünmüş çok fazla pencere var, bu yüzden çok kısa modelinler).
T. Verron

Yine - " Özetle, kısa mesajlar için tasarlanmış bir alan kullanmak istiyorsunuz, ancak bu alan tekrar kullanılır kullanılmaz mesajlarınızın kaybolmasını istemiyorsunuz. " İsterseniz messageveya ile bir zamanlayıcı kullanın post-command-hook. Ancak, kaybolma / üzerine yazma temel sorunu bazen kafasını geri çekecektir, çünkü geçici olmak istemediğiniz bir şey için geçici bir ekran alanı kullanmaya çalışıyorsunuz.
Drew
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.