Někdy dávám přednost práci v režimu offline. Dokážu si to načasovat, zapsat a vyhnout se spuštění počítače.
Ráda používám tabulku a org-update-all-dblocks
k výpočtu hodin pro tento den. Je to pro mě velmi výhodné, protože bych mohl celý den trávit lichý počet minut prací pro klienta.
Pokud chci rychle přidat své offline hodiny a aktualizovat tabulku, provede org-mode
již pro to mám funkci? Vím, že můžu org-clock-in
a org-clock-out
vygenerovat hodiny , a poté jej ručně přepište a použijte org-update-all-dblocks
k přepočtu, ale v ideálním případě bych chtěl jedinou funkci, kterou mohu zavolat a která se mě zeptá, kolik minut chci zadat. Pravděpodobně by to mělo být jako začátek použijte aktuální čas a datum, i když by to bylo v rozporu s prací, kterou začnu dělat po přidání offline hodin.
Bylo by ještě lepší, kdyby org-mode
měl koncept offline hodin, který chápal, že mohu znát datum, ale pravděpodobně jsem nezaznamenal denní čas, a tak mohl být vynechán denní čas, ale stále počítán v hodinové tabulce.
Pokud musím napsat nějaké q uick a špinavý elisp, jaké funkce by pro mě byly užitečné, kromě výše uvedeného? Myslím, že kousky, které mi chybí, jsou něčím, co chytí nejnovější hodiny, něčím, co k tomu přidá minuty, a něčím, co vyžaduje několik minut.
Odpovědět
Následující příkaz vloží typický záznam deníku org, časové období začínající před N minutami:
(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)))
Odpověď
Mutbuergerova odpověď mi hodně pomohla. Je to moje první programování v elispu jiné než v konfiguraci. Jeho odpověď se blížila ke značce, ale přesto jsem chtěl normální funkčnost hodin a času pro vyhledání nebo vytvoření deníku pod nejbližším nadpisem a přidání poznámka.
Moje pozměněné řešení bylo toto:
(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 ))
Odpověď
Spravuji offline časy pomocí sady vlastních funkcí pro manipulaci s hodinovými protokoly ve vlastní syntaxi společnosti Org a skriptem pro převod zkrácené notace ve formátu prostého textu na syntaxi společnosti Org.
Funkce v https://github.com/clange/emacs/blob/master/.emacs.d/init/org-clock.el :
-
org-clock-split-current-interval
(Vázal jsem to naC-c o s
): pokud je v aktuálním řádku interval, ve kterém byly skutečně provedeny dva úkoly, usnadněte jeho rozdělení na dva intervaly. -
org-clock-change-hh-mm
(vázáno naC-c o :
): ponechání dne beze změny, přizpůsobení hodin / minut protokolu hodin. Typický případ použití : zkopírujte řádek protokolu hodin z jiného místa a upravte jej podle času odpracovaného offline.
Skript: https://github.com/clange/scripts/blob/master/org-offline-to-clock/org-offline-to-clock.pl
Můj pracovní postup při jeho používání:
- zaznamenává offline časy do textového souboru, např. na mobilním telefonu
- synchronizujte tento soubor s mým PC
- na PC spusťte
org-offline-to-clock.pl BEFORE > AFTER
- ověřit pomocí
diff BEFORE AFTER
- pokud jste šťastní,
mv AFTER BEFORE
- přesunout vybrané řádky do mého skutečného souboru org.