Manchmal arbeite ich lieber offline. Ich kann es zeitlich festlegen und aufschreiben und vermeiden, meinen Computer zu starten.
Ich verwende gerne eine Tabelle und org-update-all-dblocks
, um meine Stunden für den Tag zu berechnen. Dies ist sehr praktisch für mich, da ich den ganzen Tag über ungerade Minuten für die Arbeit eines Kunden aufwenden kann.
Wenn ich meine Offline-Stunden schnell hinzufügen und die Tabelle aktualisieren möchte, wird org-mode
haben bereits eine Funktion dafür? Ich weiß, dass ich org-clock-in
und org-clock-out
eine Uhr erzeugen kann und geben Sie es dann manuell erneut ein und verwenden Sie org-update-all-dblocks
zum Neuberechnen. Idealerweise möchte ich jedoch eine einzelne Funktion, die ich aufrufen kann und die mich fragt, wie viele Minuten ich eingeben möchte. Dies sollte wahrscheinlich der Fall sein Verwenden Sie einfach die aktuelle Uhrzeit und das aktuelle Datum als Start, auch wenn dies anscheinend im Widerspruch zur Arbeit steht, die ich nach dem Hinzufügen der Offline-Stunden beginne.
Es wäre sogar noch besser, wenn org-mode
hatte ein Konzept von Offline-Stunden, das verstand, dass ich das Datum vielleicht kenne, aber wahrscheinlich die Tageszeit nicht aufzeichnete, sodass die Tageszeit weggelassen werden konnte, aber dennoch in einer Uhrentabelle berechnet wurde.
Wenn ich etwas q schreiben muss Schnelle und schmutzige Elisp, welche Funktionen wären für mich außer den oben genannten von Nutzen? Ich denke, die Teile, die mir fehlen, sind etwas, um die neueste Uhr zu erfassen, etwas, um Minuten hinzuzufügen, und etwas, um eine Anzahl von Minuten anzufordern.
Antwort
Der folgende Befehl fügt den typischen Eintrag im Organisationslogbuch ein, ein Zeitraum, der vor N Minuten beginnt:
(defun org-insert-clock-range (&optional n) (interactive "NTime Offset (in min): ") (let* ((ctime (cdr (decode-time (current-time)))) (min (car ctime)) (start (apply "encode-time 0 (- min n) (cdr ctime)))) (org-insert-time-stamp start t t "CLOCK: ") (insert "--") (org-insert-time-stamp (current-time) t t)))
Antwort
Die Antwort von mutbuerger hat mir sehr geholfen. Es ist mein erstes Mal, dass ich in einem anderen Elisp als der Konfiguration programmiere. Seine Antwort war nah an der Marke, aber ich wollte immer noch die normale Funktionalität des Ein- und Ausstempelns, um das Logbuch unter der nächstgelegenen Überschrift zu finden oder zu erstellen und ein hinzuzufügen Hinweis.
Meine geänderte Lösung war folgende:
(defun offset-current-time (n) (let* ((ctime (cdr (decode-time (current-time)))) (minutes (car ctime))) (apply "encode-time 0 (- minutes n) (cdr ctime)))) (defun org-insert-clock-range (&optional n) (interactive "NTime Offset (in min): ") (org-clock-in nil (offset-current-time n)) (org-clock-out)) (defadvice org-clock-out (after org-clock-out-after activate) (org-update-all-dblocks)) (add-hook "org-mode-hook (lambda () ; Keys for org mode ;snip (define-key evil-normal-state-map (kbd "gl") "org-insert-clock-range) ;snip ))
Antwort
Ich verwalte Offline-Zeiten mit einer Toolbox mit benutzerdefinierten Funktionen zum Bearbeiten von Uhrprotokollen in Orgs eigener Syntax und einem Skript zum Konvertieren einer Kurztextnotation in Orgs Syntax.
Funktionen in https://github.com/clange/emacs/blob/master/.emacs.d/init/org-clock.el :
-
org-clock-split-current-interval
(Ich habe dies anC-c o s
gebunden): Wenn die aktuelle Zeile ein Intervall enthält, in dem tatsächlich zwei Aufgaben ausgeführt wurden, erleichtern Sie die Aufteilung in zwei Intervalle. -
org-clock-change-hh-mm
(gebunden anC-c o :
): Lassen Sie den Tag unverändert und passen Sie die Stunden / Minuten eines Uhrprotokolls an. Typischer Anwendungsfall : Kopieren Sie eine Uhrprotokollzeile von einem anderen Ort und passen Sie sie an die offline geleistete Zeit an.
Skript: https://github.com/clange/scripts/blob/master/org-offline-to-clock/org-offline-to-clock.pl
Mein Arbeitsablauf bei der Verwendung:
- Offline-Zeiten in einer Textdatei aufzeichnen, z Führen Sie auf meinem Mobiltelefon
- diese Datei mit meinem PC
- auf dem PC aus, und führen Sie
org-offline-to-clock.pl BEFORE > AFTER
- validate with aus
diff BEFORE AFTER
- Wenn Sie zufrieden sind,
mv AFTER BEFORE
- verschieben Sie ausgewählte Zeilen in meine eigentliche Organisationsdatei.