Angenommen, ich habe eine Emacs-Sitzung ausgeführt und entferne mich beispielsweise 20 Minuten lang von meinem Computer. Wenn ich zu meiner Emacs-Sitzung zurückkehre, drücke ich irgendwann eine Taste, während das Emacs-Fenster den Fokus hat. Dies wäre ein Beispiel für die Art von Ereignis, das ich first-keypress-in-a-while
1 nenne .
Ich suche nach einer Möglichkeit, Emacs automatisch Code ausführen zu lassen, wenn ein solches Ereignis eintritt. IOW, ich suche so etwas wie ein first-keypress-in-a-while-hook
.
Wenn ich mir die Standardhaken von Emacs ansehe, kann ich keinen guten Kandidaten sofort identifizieren, aber vielleicht gibt es einen nicht offensichtlichen, der diesen Job machen könnte.
Gibt es eine andere Möglichkeit, die Funktionalität eines solchen Hakens zu simulieren / zu approximieren?
1in-a-while
Bezieht sich natürlich auf einen vom Benutzer einstellbaren Parameter, der einem minimalen Zeitintervall entspricht, z. B. 15 Minuten. Das Ereignis, an dem ich interessiert bin, ist der erste Tastendruck nach einer Zeit der Inaktivität, die länger als dieses Intervall ist. Mit "Inaktivität" meine ich den Zustand, in dem Emacs keine Benutzerinteraktion erkennt: keine Tastendrücke, keine Mausklicks usw.
quelle
pre-command-hook
? Ich denke, dies wird my-run-fkpiawh zu jedem Befehl hinzufügen, der nach der Leerlaufperiode aufgerufen wird, anstatt nur zum ersten?Ich denke, eine Lösung Ihres Problems besteht darin, ein Flag mit einem Leerlauf-Timer zu setzen, https://www.gnu.org/software/emacs/manual/html_node/elisp/Idle-Timers.html
und überprüfen / deaktivieren Sie es mit
post-self-insert-hook
oder einem ähnlichen Haken Ihrer Wahl.Folgendes funktioniert für mich:
quelle