Saya mengatur indikator org-timer di baris mode dengan ini.
(setq-default
mode-line-format
(quote
(
;; org-timer
(:eval
(unless (not org-timer-countdown-timer)
(propertize (let* ((rtime (decode-time
(time-subtract
(timer--time org-timer-countdown-timer)
(current-time))))
(rmins (nth 1 rtime))
(rsecs (nth 0 rtime)))
(format "🕔 %d:%d" rmins rsecs))
'face '(:foreground "cyan" :weight bold)
'help-echo "org-timer")))
)))
Saya ingin indikator pengatur waktu ini hanya ditampilkan di baris mode aktif , bukan semua baris mode. Bagaimana cara melakukannya?
redisplay
mesin ini mampu memeriksa setiap jendela dalam keadaan tertentu (misalnya, ketika mode-line di-refresh secara alami, atau ketika dipaksa untuk menyegarkan). Ketikamode-line-format
berisi fungsi(selected-window)
, jendela yang berbeda akan dikembalikan saat menampilkan kembali mengunjungi berbagai jendela. Nilai itu dapat dibandingkan dengan nilai pra-rekam - misalnya,post-command-hook
dapat digunakan untuk mencatat yang terakhir diketahuiselected-window
dan nilai itu nantinya dapat dibandingkan dengan fungsi di dalammode-line-format
. Jadi, saya menggunakan PCH untuk merekam / menyimpanselected-window
.org-timer
. Apa yang harus saya lakukan? Saya harap cara yang lebih umum. Bahkan itu menginspirasi saya. Bisakah Anda memberi saya lebih tepatnya contoh kode? Karena saya merasa set berbeda'face
, Tapi saya perlu mengubah tampilan string.Jawaban:
Dalam contoh berikut, kata "AKTIF" akan muncul di baris mode dari jendela yang aktif, dan semua jendela lain akan menampilkan kata "TIDAK aktif" di baris mode.
Pastikan untuk mencoba contoh ini dengan
emacs -Q
memverifikasi bahwa itu berfungsi seperti yang diiklankan. Setelah itu, sesuaikan sesuai kebutuhan.Tambahkan kait tambahan sesuai kebutuhan untuk menelepon
ml-update-all
.sumber