Apakah mungkin untuk menjalankan fungsi atau perintah pada waktu tertentu?

8

Apakah mungkin untuk menjalankan fungsi atau perintah pada waktu tertentu? Sebagai contoh eksplisit, apakah mungkin untuk membunuh emacs pada waktu tertentu (waktu ditentukan oleh OS).

Nama
sumber
1
Lihat juga mode tengah malam
pengasuh
Saya melihat seseorang mengambil tindakan keras untuk mencegah kecanduan emacs :)
biocyberman

Jawaban:

14

Anda ingin menggunakan fungsi run-at-time, yang dijelaskan dalam Bab 38.10 dari manual Emacs Lisp. Dalam kasus Anda, sesuatu seperti ini harus melakukan trik:

(run-at-time "20:30" nil #'kill-emacs)

Jika fungsi yang ingin Anda panggil membutuhkan parameter, Anda dapat menetapkannya sebagai parameter tambahan untuk run-at-time:

(run-at-time "5 sec" nil #'message "Tempus volat, hora fugit.")

Perhatikan bahwa waktu absolut dianggap hari ini, bahkan jika itu di masa lalu, jadi contoh pertama di atas akan segera keluar jika setelah 20:30.

jch
sumber
1
Saya memasukkan kode Anda dalam file .emacs saya. Itu membunuh emacs pada waktu tertentu! Tetapi ketika saya me-restart emacs, ia langsung terbunuh. Ada petunjuk?
Nama
1
@Nama diedit untuk memperjelas.
jch
LOL, Anda bisa mulai dengan saklar -q untuk mem-bypass file init yang akan memanggang emacs Anda sampai tengah malam. Kemudian sepatu kaca jatuh dan Anda dapat mengedit lagi sampai waktu yang sama besok.
devon