Joskus haluan tehdä töitä offline-tilassa. Voin ajastaa sen, kirjoittaa sen muistiin ja välttää tietokoneen käynnistämistä.
Haluan käyttää taulukkoa ja org-update-all-dblocks
laskemaan päivän tunnit. Se on minulle erittäin kätevää, koska voin viettää parittomia minuutteja päivässä tekemällä työtä asiakkaalle.
Jos haluan lisätä offline-aikani nopeasti ja päivittää taulukon, ei org-mode
sinulla on jo toiminto tähän? Tiedän, että voin org-clock-in
ja org-clock-out
luoda kellon ja kirjoita se sitten manuaalisesti ja käytä org-update-all-dblocks
-laskentaa uudelleen, mutta haluaisin mieluiten yhden toiminnon, johon voin soittaa ja joka kysyisi, kuinka monta minuuttia haluan syöttää. Sen pitäisi todennäköisesti käytä vain nykyistä aikaa ja päivämäärää aloituksena, vaikka se näennäisesti olisi ristiriidassa työn kanssa, jonka aloitan offline-ajan lisäämisen jälkeen.
Olisi vielä parempi, jos org-mode
: lla oli offline-aikojen käsite, joka ymmärsi, että voisin tietää päivämäärän, mutta en todennäköisesti tallentanut kellonaikaa, joten kellonaika voidaan jättää pois, mutta se voidaan kuitenkin laskea kellotaulukossa.
Jos minun täytyy kirjoittaa q uick and dirty elisp, mitkä toiminnot olisivat minulle hyödyllisiä edellä mainitun lisäksi? Minusta puuttuvat kappaleet on jotain napata viimeisin kello, jotain lisätä siihen minuutteja ja jotain pyytää useita minuutteja.
Vastaa
Seuraava komento lisää tyypillisen organisaation lokikirjamerkinnän, aikaväli alkaa N minuuttia sitten:
(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)))
Vastaus
mutbuergerin vastaus auttoi minua paljon. Se on ensimmäinen kerta, kun ohjelmoin muilla tavoin kuin kokoonpanolla. Hänen vastauksensa oli lähellä merkkiä, mutta halusin silti normaalin sisäänkirjautumisen ja kellonajan toiminnon lokikirjan löytämiseen tai luomiseen lähimpään otsikkoon ja huomautus.
Muutettu ratkaisuni oli seuraava:
(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 ))
Vastaa
Hallitsen offline-aikoja mukautettujen toimintojen työkalupakilla manipuloidaksesi kellolokeja Orgin omassa syntaksissa ja komentosarjassa muuntaaksesi lyhyen tekstimuodon Org: n syntaksiksi.
Toiminnot https://github.com/clange/emacs/blob/master/.emacs.d/init/org-clock.el :
-
org-clock-split-current-interval
(Sitoin tämän kohtaanC-c o s
): Jos nykyisellä rivillä on väli, jossa tosiasiallisesti tehtiin kaksi tehtävää, helpota sen jakamista kahteen jaksoon. -
org-clock-change-hh-mm
(sidottu ryhmäänC-c o :
): jättämällä päivä muuttumattomaksi, mukauta kellolokin tunteja / minuutteja. Tyypillinen käyttötapaus : kopioi kellolokiviiva muualta, sovita se offline-työskentelyn mukaan.
Skripti: https://github.com/clange/scripts/blob/master/org-offline-to-clock/org-offline-to-clock.pl
Oma työnkulkumallini sen käytöstä:
- tallentaa offline-ajat tekstitiedostoon esim. matkapuhelimellani
- synkronoi tämä tiedosto tietokoneelleni
- PC: llä, suorita
org-offline-to-clock.pl BEFORE > AFTER
- vahvista
diff BEFORE AFTER
- jos onnellinen,
mv AFTER BEFORE
- siirrä valitut rivit varsinaiseen org-tiedostooni.