Est-il possible d'exécuter une fonction ou une commande à un moment précis?

8

Est-il possible d'exécuter une fonction ou une commande à un moment précis? À titre d'exemple explicite, est-il possible de tuer emacs à un moment précis (temps déterminé par le système d'exploitation).

Nom
la source
1
Voir aussi minuit-mode
nounou
Je vois que quelqu'un prend des mesures pour prévenir la dépendance à emacs :)
biocyberman

Réponses:

14

Vous souhaitez utiliser la fonction run-at-time, décrite au chapitre 38.10 du manuel Emacs Lisp. Dans votre cas, quelque chose comme ça devrait faire l'affaire:

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

Si la fonction que vous souhaitez appeler prend des paramètres, vous pouvez les spécifier comme paramètres supplémentaires pour run-at-time:

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

Notez que les heures absolues sont considérées comme étant aujourd'hui, même si elles sont dans le passé, donc le premier exemple ci-dessus se terminera immédiatement s'il est après 20h30.

jch
la source
1
J'ai mis votre code dans mon fichier .emacs. Il tue les emacs à un moment donné! Mais quand je redémarre emacs, il est immédiatement tué. Un indice?
Nom du
1
@Name modifié pour clarifier.
jch
LOL, vous pouvez commencer avec le commutateur -q pour contourner le fichier init qui grillera vos emacs jusqu'à minuit. Ensuite, la pantoufle de verre tombe et vous pouvez éditer à nouveau jusqu'à la même heure demain.
devon