Néha inkább offline munkát végzek. Időzíthetek és leírhatok, és elkerülhetem a számítógép beindítását.
Szeretnék egy táblázatot és org-update-all-dblocks
-et használni az aznapi órám kiszámításához. Ez nagyon kényelmes számomra, mert előfordulhat, hogy páratlan perceket töltenek a nap folyamán az ügyfelek munkájával.
Ha gyorsan hozzá szeretném adni az offline óráimat és frissíteni a táblázatot, akkor a org-mode
már rendelkezik funkcióval ehhez? Tudom, hogy org-clock-in
és org-clock-out
órát generálhatok , majd manuálisan írja be újra, és használja az org-update-all-dblocks
elemet az újraszámoláshoz, de ideális esetben egy olyan funkciót szeretnék, amelyet felhívhatnék, és azt kérdezné tőlem, hány percig szeretnék bevinni. Valószínűleg csak az aktuális időt és dátumot használja kezdetként, annak ellenére, hogy ez látszólag ellentmondana annak a munkának, amelyet az offline órák hozzáadása után kezdek el folytatni.
Még jobb lenne, ha org-mode
olyan offline órák fogalmával rendelkezett, amelyek megértették, hogy tudom, hogy tudom a dátumot, de valószínűleg nem rögzítettem a napszakot, így a napszakot el lehetett hagyni, de mégis egy óratáblázatban számolták ki.
Ha meg kell írnom néhány q-t Uick and dirty elisp, milyen funkciók lennének a számomra a fentieken kívül? Úgy gondolom, hogy azok a darabok, amik hiányoznak nekem, megragadják a legfrissebb órát, valamit hozzáadhatnak perceket hozzá, és amit néhány percig kérhetnek.
Válasz
A következő parancs beszúrja a tipikus org naplóbejegyzést, N perccel ezelőtti időtartamot:
(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)))
Válasz
mutbuerger válasza sokat segített nekem. Ez az első alkalom, hogy a konfiguráláson kívül más típusú programozást végzek. Válasza közel állt a ponthoz, de továbbra is az óra be- és kikapcsolás normál működését kívántam a napló megtalálásához vagy létrehozásához a legközelebbi címsor alatt, és egy megjegyzés.
A módosított megoldásom a következő volt:
(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 ))
Válasz
Az offline időket az egyéni függvények eszköztárával kezelem, hogy az Org saját szintaxisában található naplófájlokat és egy szkriptet kezeljek, hogy a rövid szöveges egyszerű jelölést Org szintaxissá konvertáljam.
Funkciók https://github.com/clange/emacs/blob/master/.emacs.d/init/org-clock.el :
-
org-clock-split-current-interval
(Ezt a következőhöz kötöttem:C-c o s
): ha az aktuális sorban van egy olyan intervallum, amelyben valójában két feladatot végeztek, akkor könnyítse meg a két intervallumra való felosztást. -
org-clock-change-hh-mm
(C-c o :
kötve): változatlanul hagyva a napot, állítsa be az óra naplójának óráit / perceit. Tipikus használati eset : másoljon egy óra naplósort valahonnan máshonnan, igazítsa az offline ledolgozott időnek megfelelően.
Szkript: https://github.com/clange/scripts/blob/master/org-offline-to-clock/org-offline-to-clock.pl
A munkafolyamatom a használatával:
- offline idő rögzítése egy szövegfájlba, pl. mobiltelefonomon
- szinkronizálja ezt a fájlt a számítógépemmel
- a PC-n futtassa az
org-offline-to-clock.pl BEFORE > AFTER
- érvényesítést a
diff BEFORE AFTER
- ha boldog,
mv AFTER BEFORE
- helyezze át a kijelölt sorokat a tényleges org fájlomba.