Automatische Taktung im Org-Modus beim Übergang in den Abschnitt

7

Kontext Wenn org-modeich an einem größeren Dokument in arbeite, möchte ich die gesamte Arbeitszeit ohne Lücken messen. Da ich normalerweise logbookin jedem Abschnitt eine habe, frage ich mich, ob es möglich ist, beim Bewegen des Cursors in einen Abschnitt automatisch einzusteigen und beim Verlassen auszusteigen.

Soweit ich weiß, gibt es nur Projekte, die beim Beenden von Aufgaben automatisch auslaufen und danach eine Standarduhr verwenden. Obwohl mir der Ansatz sehr gefällt, habe ich das Gefühl, dass es nicht angemessen ist, ein längeres Dokument zu schreiben, dessen Abschnitte normalerweise sehr spät in den fertigen Zustand gelangen und in dem manchmal zwischen Abschnitten gewechselt wird, beispielsweise in Zeiten, in denen nur kleine Probleme behoben werden.

Zumindest das erste Mal, dass ich eine solche automatische Taktung sah, war in Bernt Hansens Org-Modus-Konfiguration .

Frage: Wie kann eine automatische Taktung implementiert werden, so dass beim Einzug in einen Abschnitt ein Eintakten und beim Verlassen eines Abschnitts ein Ausstempeln erfolgt?

Christoph
quelle
Denken Sie, man könnte den Listener für Tastatureingabeereignisse verwenden, um zu überprüfen, ob der Tastendruck ein neues Zeichen in den Puffer eingefügt hat, und wenn ja, nur eintakten, wenn in diesem Abschnitt noch keine Uhr läuft?
Christoph

Antworten:

2

Das scheint ziemlich nah. Ich habe dies so eingerichtet, dass es Abschnitte mit einer AUTOCLOCK-Eigenschaft bearbeitet. Ich kenne keinen eleganteren Weg als den Post-Command-Hook.

#+BEGIN_SRC emacs-lisp
(defun action-1 ()
  "hook function to run in headings with a clock"
  (and (eq major-mode 'org-mode)
       (not (org-before-first-heading-p)))
  (if (org-entry-get (point) "AUTOCLOCK")
      (org-clock-in)
    (when (marker-buffer org-clock-marker) (org-clock-out))))

(add-hook 'post-command-hook 'action-1)
#+END_SRC
John Kitchin
quelle
Das ist großartig, ich werde es morgen ausprobieren!
Christoph