Ist es möglich, eine Funktion oder einen Befehl zu einem bestimmten Zeitpunkt auszuführen?

8

Ist es möglich, eine Funktion oder einen Befehl zu einem bestimmten Zeitpunkt auszuführen? Als explizites Beispiel ist es möglich, Emacs zu einem bestimmten Zeitpunkt (vom Betriebssystem festgelegte Zeit) zu töten.

Name
quelle
1
Siehe auch Mitternachtsmodus
Kindermädchen
Ich sehe, dass jemand harte Maßnahmen ergreift, um Emacs-Sucht zu verhindern :)
Biocyberman

Antworten:

14

Sie möchten run-at-timedie in Kapitel 38.10 des Emacs Lisp-Handbuchs beschriebene Funktion verwenden. In Ihrem Fall sollte so etwas den Trick machen:

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

Wenn die Funktion, die Sie aufrufen möchten, Parameter akzeptiert, können Sie diese als zusätzliche Parameter angeben, um run-at-time:

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

Beachten Sie, dass die absoluten Zeiten als heute angesehen werden, auch wenn sie in der Vergangenheit liegen. Daher wird das erste Beispiel oben sofort beendet, wenn es nach 20:30 Uhr ist.

jch
quelle
1
Ich habe Ihren Code in meine .emacs-Datei eingefügt. Es tötet Emacs zur gegebenen Zeit! Aber wenn ich Emacs neu starte, wird es sofort getötet. Irgendein Hinweis?
Name
1
@Name zur Verdeutlichung bearbeitet.
jch
LOL, Sie können mit dem Schalter -q beginnen, um die Init-Datei zu umgehen, die Ihre Emacs bis Mitternacht anstößt. Dann fällt der Glasschuh herunter und Sie können ihn bis morgen um dieselbe Zeit erneut bearbeiten.
Devon