Emacs'ın aktive olmasını, yaprak haline getirilmesini ve belirli durumlarda odaklanmayı 'zorlamak istiyorum. Bir org-Pomodoro'yu bitirdiğimde veya önemli bir randevu hatırlatıcısı sırasında.
Şimdi, sadece dış bağımlılıkları azaltmak için 'yerel' bir yol arıyorum. (sadece Linux benim için uygun, çapraz platform daha iyi olurdu).
Bu teknik olarak içeride emacs mümkün mü?
[değiştir] Çözüm:
GUI kullanıyorsanız, bu iyi çalışır:
(x-focus-frame nil)
[Tarihsel nedenlerle ...] Denedim:
Çerçeve görünürlüğü (çalışmıyor)
(make-frame-visible)
Ve ayrıca:
(make-frame-invisible)
(make-frame-visible)
Ancak bunlar yalnızca Emacs zaten etkinleştirilmişse işe yarar.
Çerçeve yükseltme (çalışmıyor)
İndirme çerçevesi aslında emac'ları gizliyor gibi görünüyor.
(lower-frame)
Ancak çerçeveyi bir zamanlayıcıdan kaldırmak değil. Yani, hiçbir şey olmuyor.
(raise-frame)
Kaldırmadan önce eksik bir 'etkinleştir-emac' var gibi görünüyor.
[Harici çözüm hakkında NOT]
Şu anda, (geçici çözüm / çözüm?) Ben biraz elisp kullanın:
(call-process "activateEmacs")
Ve ilgili bash betiği: (önce sisteminize xdotool yüklemeniz gerekebilir)
#!/bin/sh
sleep 0.5
xdotool search --onlyvisible --class emacs windowactivate
(defvar my-timer (run-with-idle-timer 5 t (lambda () (raise-frame))))
. Çerçeveyi ile askıya alın M-x (suspend-frame)
. 5 saniye içinde bu çerçeve yeniden görünür.
(suspend-frame)
ve başka bir pencereye tıklamadan orada beklerseniz. Ancak çerçeveyi askıya alır ve başka bir uygulamada çalışmaya devam ederseniz, emacs yeniden görünmez. En azından sistemimde değil (Mate masaüstü ile fedora 21). Basit bir örnek şudur: bunu : (run-at-time "5 sec" nil '(lambda () (interactive) (message "trying to raise frame") (raise-frame)))
çalıştırın ve alt-tab'ı başka bir uygulamaya yükleyin. Mesaj arabellekte görünecek, ancak emacs yükseltilmeyecek ... Düşünceler?
raise-frame
.