Noen ganger foretrekker jeg å gjøre noe uten nett. Jeg kan time det og skrive det ned og unngå å starte datamaskinen min.
Jeg liker å bruke en tabell og org-update-all-dblocks
for å beregne timene mine for dagen. Det er veldig praktisk for meg, fordi jeg kan bruke ulike minutter i løpet av dagen på å jobbe for en klient.
Hvis jeg raskt vil legge til timene uten nett og oppdatere tabellen, gjør org-mode
har allerede en funksjon for dette? Jeg vet at jeg kan org-clock-in
og org-clock-out
for å generere en klokke , og skriv den deretter inn manuelt og bruk org-update-all-dblocks
til å beregne på nytt, men jeg vil helst ha en enkelt funksjon jeg kan ringe som vil be meg om hvor mange minutter jeg vil legge inn. bare bruk gjeldende tid og dato som start, selv om det tilsynelatende ville være i konflikt med arbeidet jeg begynner å gjøre etter å ha lagt til frakoblede timer.
Det ville vært enda bedre hvis org-mode
hadde et konsept med frakoblede timer som forsto at jeg kanskje kjente datoen, men jeg registrerte sannsynligvis ikke tiden på dagen, og slik at tiden på dagen kunne bli utelatt, men likevel beregnet i en klokkebord.
Hvis jeg må skrive noen q uick and dirty elisp, hvilke funksjoner vil være til nytte for meg bortsett fra det ovennevnte? Jeg tror brikkene jeg mangler er noe å hente den siste klokken, noe å legge til minutter i den, og noe å be om et antall minutter.
Svar
Følgende kommando setter inn den typiske org-loggbokoppføringen, et tidsintervall som startet for N minutter siden:
(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)))
Svar
mutbuerger svar hjalp meg mye. Det er min første gang jeg programmerer i annet enn konfigurasjon. Svaret hans var nær merket, men jeg ville fremdeles ha den normale funksjonaliteten til inn- og tidsur for å finne eller lage loggboken under den nærmeste overskriften, og legge til en merknad.
Min endrede løsning var denne:
(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 ))
Svar
Jeg klarer offline-tider med en verktøykasse med egendefinerte funksjoner for å manipulere klokkelogger i Orgs egen syntaks og et skript for å konvertere en stenografisk ren tekstnotasjon til Orgs syntaks. https://github.com/clange/emacs/blob/master/.emacs.d/init/org-clock.el :
-
org-clock-split-current-interval
(Jeg bundet dette tilC-c o s
): Hvis det er et intervall i den nåværende linjen, der det faktisk ble gjort to oppgaver, gjør det lettere å dele det opp i to intervaller. -
org-clock-change-hh-mm
(bundet tilC-c o :
): lar dagen være uendret, tilpass timene / minuttene til en klokkelogg. Typisk brukstilfelle : kopier en klokkelogglinje fra et annet sted, tilpass den til tiden som er jobbet offline.
Skript: https://github.com/clange/scripts/blob/master/org-offline-to-clock/org-offline-to-clock.pl
Min arbeidsflyt for å bruke den:
- registrerer offline tider i en tekstfil, f.eks. på mobiltelefonen min
- synkroniser denne filen til PCen min
- på PCen, kjør
org-offline-to-clock.pl BEFORE > AFTER
- valider med
diff BEFORE AFTER
- hvis lykkelig,
mv AFTER BEFORE
- flytter valgte linjer inn i min faktiske org-fil.