Yalnızca mod hattı ile yeni bir çerçeve oluşturun


13

Mod çizgisinden başka bir şey içermeyen yeni bir çerçeve oluşturmak istiyorum. Özellikle bir dosya arabelleği değil.

Neden buna ihtiyacım var? Kullandığım org-modun zamanlamanın zaman benim iş. Kuruluş modu, mod satırında üzerinde çalıştığım görev için zamanlayıcıyı görüntüler ve zamanlayıcıyı gerçek zamanlı olarak günceller. Emacs dışındaki uygulamaları kullanıyorum, bu yüzden bunlara geçiş yaptığımda (örn. Tarayıcı veya terminal kullanırken) hala çalışan zamanlayıcıya bakabilmek istiyorum. Yeni bir çerçeve oluşturabileceğimi düşündüm, ancak şimdi mod satırındaki zamanlayıcıya tıkladığımda .org dosyası yeni çerçevede açılıyor (zaten sadece mod satırını göstermek için yeniden boyutlandırıldı). ilk karede.

Mod satırımın görünümü (mavi çubuk) - yeni çerçevede istediğim bu:

resim açıklamasını buraya girin

(Sonunda yeni çerçevenin her zaman üstte görünmesini nasıl sağlayacağımı bulmam gerekecek, ancak bu sorunun kapsamı dışında)

İlgili ise OS X kullanıyorum.


1
Sadece bir kafa yukarı, bazı elisp ve OSX menü çubuğunda org modu satır bilgilerini gösterecek bir macruby komut dosyası üzerinde çalışıyorum. Benim için çalışıyor ama güzelce tamamlamaya çalışacağım.
Jordon Biondo

@JordonBiondo - mükemmel! çözümünüz burada yaptığımdan daha iyi olabilir. dört gözle bekliyorum. lütfen beni güncel tut.
Sridhar Ratnakumar

Eğer cevabınızı cevaplamak için " Mükemmel! " Dediğinizi düşünüyorsanız, sorunuzu tekrar yazmalı ve yeniden yazmalısınız . Bildiğim kadarıyla söyleyebilirim onlar Çünkü değil "bir çerçeve için isteğinizi cevap hiçbir şey ama bir mod hattı hiç (ve herhangi bir cevap olacak şüphe) -". IOW, isteğinizin orijinal formülasyonundan bu yana hedefinizi gevşetdiyseniz, lütfen soruyu buna göre güncellemeyi düşünün.
Drew

Katılıyorum, okuduktan sonra, OP'nin belirli bir problemi vardı, ama en iyi çözümü değil, sadece bir çözümü istiyor gibiydi.
Jordon Biondo

@Drew - Herhangi bir düzenleme yapılmasını öneriyor musunuz? PythonNut'un orijinal çözümü orijinal isteğime cevap veriyor. "Özellikle bir dosya arabelleği değil" demiştim ve çözümü - boş bir arabellek oluştursa da - yeni çerçevede dosya arabelleklerine yol açmıyor.
Sridhar Ratnakumar

Yanıtlar:


7

Uzatma Jorgen Schafer en cevabı ile Matthew Piziak en önerisi şu pasajı üretir:

(with-current-buffer (generate-new-buffer "*empty*")
  (make-frame '((minibuffer . nil)
                 (unsplittable . t)
                 (buffer-predicate . (lambda (x) nil))
                 (height . 2)
                 (left-fringe . 0)
                 (right-fringe . 0)
                 (tool-bar-lines . 0)
                 (menu-bar-lines . 0)))
  (set-window-dedicated-p
    (get-buffer-window (current-buffer) t) t))

Anlayabildiğim kadarıyla, bu pencereyi boş bir arabelleğe doğru bir şekilde kilitler. Farklı bir arabelleğe geçmeye çalışmak, arabelleği üst çerçevede var olan bir pencerede açacaktır.


Mükemmel, çalışmak için bunu doğruladım. Yeni çerçeveyi ana çerçevenin yazı tipi boyutunu (ve yazı tipi adını) miras almanın herhangi bir yolu var mı? Ayrıca, mod satırının yedek arabelleğe özgü kısımları - *empty* All L1 (Fundamental)- kaldırılabilir mi? Benimki şöyle görünüyor: i.imgur.com/iOLw57c.png
Sridhar Ratnakumar

@SridharRatnakumar Neyse ki, ekstra mod satırı bilgilerini çıkarmak önemsizdir. Cevabımı buna dahil etmek için değiştirdim. Yazı tipini koruyarak ne demek istediğinizden emin değilim? Arabellek boş değil mi?
PythonNut

Mod satırında (boş arabellek) metnin font özelliğinden bahsediyordum.
Sridhar Ratnakumar

ah, sonraki kodunuz ana çerçevenin mod çizgisini de sildi! Bu mümkün değilse, bu değişikliği geri alalım ve cevabınızı kabul edeceğim (soruyu tatmin ediyor).
Sridhar Ratnakumar

Ben de fark ettim. Ben düzelttim. Mod satırı yazı tipi, yaptığımda değişmiyor, bu yüzden ne olduğundan emin değilim.
PythonNut

5

Bu ben gelip en iyisi:

(with-current-buffer (generate-new-buffer "*empty*")
  (make-frame '((minibuffer . nil)
                (unsplittable . t)
                (buffer-predicate . (lambda (x) nil))
                (height . 2)
                (left-fringe . 0)
                (right-fringe . 0)
                (tool-bar-lines . 0)
                (menu-bar-lines . 0))))

Orada bir arabellek ile en az bir pencere devre dışı bırakmak için bir yol görmüyorum, ancak bu snippet kullanılarak görüntülenen herhangi bir dosya ile ilişkili değil. buffer-predicateEğer bir ekstra boş satır ile başa çıkabilirim eğer öyleyse, bunu yapmak gerekir, herhangi bir (diğer) tamponlarını görüntülemeyi seçmiş olmaktan çerçeveyi orada engeller.


Beklendiği gibi çalışmıyor. Tamponlar hala yeni çerçevede etkinleştiriliyor. İşte göstermek için hareketli bir gif: i.imgur.com/07Q3tcW.gifv
Sridhar Ratnakumar

2
Kullanmak display-buffer-alistbunun çözümü olabilir.
Kaushal Modi

Kuruluşun burada kullanımının neden uymadığını bilmiyorum buffer-predicate. Kullanmak display-buffer-alistgerçekten bir fikir olabilir, ancak belirli bir çerçevenin kullanılmasını önlemek için nasıl kullanılacağını bilmiyorum.
Jorgen Schäfer

2
Bu sorun giderilebilir set-window-dedicated-pmi?
Matthew Piziak

1
Bilgiye buffer-predicategöre sadece other-bufferfonksiyon tarafından kullanılır , yani diğer fonksiyonların çerçevede herhangi bir tampon göstermesini engellemez.
politza


3

OSX menü çubuğunda kuruluş saati bilgilerini görüntüleme çözümü

Belirttiğiniz soruna alternatif bir çözüm:

Emacs dışındaki uygulamaları kullanıyorum, bu yüzden bunlara geçiş yaptığımda (örn. Tarayıcı veya terminal kullanırken) hala çalışan zamanlayıcıya bakabilmek istiyorum.

Neredeyse her zaman görebilmeniz gereken osx menubarındaki org-clock'dan bilgileri görüntülemek için bunu kullanabilirsiniz.

https://github.com/jordonbiondo/osx-org-clock-menubar MELPA sitesinde mevcut

Bunun macruby gerektirdiğini unutmayın.

Saat içinde nasıl görünüyor.

resim açıklamasını buraya girin


1
Macruby'a dayanmayan basit bir uygulama emacsclient -e "(org-clock-get-clocked-time)"ve bitbar ile yapılabilir : getbitbar.com
mankoff

Bir çözüm yazmanız harika!
Jordon Biondo
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.