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).
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.
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.
Réponses:
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: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
: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.
la source