Hvordan klokke raskt offline timer?

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 til C-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 til C-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:

  1. registrerer offline tider i en tekstfil, f.eks. på mobiltelefonen min
  2. synkroniser denne filen til PCen min
  3. på PCen, kjør org-offline-to-clock.pl BEFORE > AFTER
  4. valider med diff BEFORE AFTER
  5. hvis lykkelig, mv AFTER BEFORE
  6. flytter valgte linjer inn i min faktiske org-fil.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *