Hur klockar man offline timmar snabbt?

Ibland föredrar jag att göra lite arbete offline. Jag kan göra tiden och skriva ner den och undvika att starta om min dator.

Jag gillar att använda en tabell och org-update-all-dblocks för att beräkna mina timmar för dagen. Det är väldigt bekvämt för mig, för jag kan tillbringa udda antal minuter hela dagen på att jobba för en klient.

Om jag snabbt vill lägga till mina offline-timmar och uppdatera tabellen, gör org-mode har redan en funktion för detta? Jag vet att jag kan org-clock-in och org-clock-out för att generera en klocka , och skriv sedan om det manuellt och använd org-update-all-dblocks för att beräkna om, men jag skulle helst vilja ha en enda funktion som jag kan ringa som kommer att fråga mig hur många minuter jag vill mata in. använd bara aktuell tid och datum som start, även om det verkar vara i konflikt med det arbete jag börjar göra efter att ha lagt till offline-timmarna.

Det skulle vara ännu bättre om org-mode hade ett koncept av offline-timmar som förstod att jag kanske kände datumet men jag antecknade antagligen inte tid på dagen, och så kunde tiden på dagen utelämnas, men ändå beräknas i en klocktabell.

Om jag måste skriva lite q uick och smutsig elisp, vilka funktioner skulle vara till nytta för mig förutom ovanstående? Jag tror att bitarna jag saknar är något att fånga den senaste klockan, något att lägga till minuter till den och något att begära ett antal minuter.

Svar

Följande kommando infogar den typiska org-loggboksposten, ett tidsintervall som började från N minuter sedan:

(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 hjälpte mig mycket. Det är min första gången jag programmerar i annat än konfiguration. Hans svar var nära märket, men jag ville ändå ha normal funktionalitet för in- och utklockning för att hitta eller skapa loggboken under den närmaste rubriken och lägga till en Obs.

Min ändrade lösning var den här:

(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

Jag hanterar offline-tider med en verktygslåda med anpassade funktioner för att manipulera klockloggar i Org: s egen syntax och ett skript för att konvertera en kortfattad text i vanlig text till Org: s syntax.

Funktioner i https://github.com/clange/emacs/blob/master/.emacs.d/init/org-clock.el :

  • org-clock-split-current-interval (Jag har bundit det till C-c o s): om det finns ett intervall i den aktuella raden, där faktiskt två uppgifter gjordes, underlätt uppdelningen i två intervall.
  • org-clock-change-hh-mm (bunden till C-c o :): lämnar dagen oförändrad, anpassa timmar / minuter för en klocklogg. Typiskt användningsfall : kopiera en klockloggslinje från någon annanstans, anpassa den efter arbetad tid offline.

Skript: https://github.com/clange/scripts/blob/master/org-offline-to-clock/org-offline-to-clock.pl

Mitt arbetsflöde att använda det:

  1. spela in offline-tider i en textfil t.ex. på min mobiltelefon
  2. synkronisera den här filen till min dator
  3. på datorn, kör org-offline-to-clock.pl BEFORE > AFTER
  4. validera med diff BEFORE AFTER
  5. om du är glad flyttar mv AFTER BEFORE
  6. valda rader till min faktiska organisationsfil.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *