2012-06-21 5 views
12

Korzystając z trybu emacs org przez około miesiąc, aby śledzić wszystkie moje projekty i zadania.Tryb Emacs org: jak wyregulować poprzedni zegar, jeśli zapomnę o wylogowaniu

Kontroluję wszystkie czynności przez cały dzień, nie tylko związane z pracą.

Moje pytanie brzmi: Często zapominam, aby wkroczyć w nową działalność (np. Biorąc obiad). Kiedy wracam i wracam do pracy, muszę najpierw wejść do lunchu, a następnie ustawić dla niego znacznik czasu rozpoczęcia. Jest to dobre w przypadku lunchu, ale nie dostosowuje poprzedniego zadania związanego z pracą, zanim wziąłem udział w lunchu, więc w sieci poprzednie zadanie nakłada się na lunch i jest niedokładne.

Czy istnieje sposób zmiany zachowania, aby dostosować poprzednią czynność? Nie chcę używać tej funkcji bezczynności; Wolałbym, żeby korekta odbywała się automatycznie.

+0

W tej chwili nie ma takiej funkcji, ale warto ją wprowadzić. – bzg

+1

Ma to sens, ponieważ dana osoba może być poświęcona tylko jednej aktywności w danym momencie, ci z nas, którzy i tak są jednowątkowi ;-) Na początku, gdy zapomniałem przejść do nowej aktywności, musiałem dostosować nowy zegar, przejdź do starego zegara, aby dokonać tej samej regulacji, a następnie wróć ponownie do nowego elementu. Dla mnie nudny, ponieważ mam dość duży dokument todo z wieloma przedmiotami pracy. Jeśli ta funkcja jest zaimplementowana, byłoby również bardzo przydatnym zezwolić na argument C-u poprzedzający C-c C-x C-i, który wymagałby kilku minut, aby rozpocząć taktowanie nowej aktywności. – user1472870

Odpowiedz

4

Jeśli dobrze rozumiem Twoje pytanie, chcesz dostosować sygnaturę czasową po wygaśnięciu. Jest na to polecenie; można sprawdzić funkcje:

org-timestamp-up

org-timestamp-down

Myślałem te były związane domyślnie, ale wydaje się, że nie są, więc będziemy chcieli, aby powiązać je do sekwencji klawiszy, może coś jak C-c T u i C-c T d, lub cokolwiek pływa na twojej łodzi. Sposób użycia jest prosty, po prostu przesuń kursor nad polem, w którym chcesz się dostosować, i biegnij w górę lub w dół. Działa tylko na sygnaturze czasowej, a obliczony czas trwania pojawia się po prawej stronie.

Można również sprawdzić

org-timestamp-change

których dwa najlepsze funkcje owijarki na. Można też trzeba dostosować zmienną

org-time-stamp-rounding-minutes

domyślnie będzie zaokrąglić znaczniki czasu do +/- 5 minut od rozpoczęcia oryginalnego zegara-in, a możesz być zaskoczony, gdy modyfikacja znacznika czasu.

Osobiście wolę (setq org-time-stamp-rounding-minutes '(0 1)), który uruchomi zegar w dokładnej chwili, w której wejdę (zero), i użyję ziarnistości 1 minuty (minut) dla zmian sygnatury czasowej. Możesz także użyć prefiksów, takich jak C-u 4 7 C-c T u, w części minutowej sygnatur czasowych, a tryb org zrobi wszystko, co trzeba - nawet zaokrąglając godzinę.

Podsumowanie:

(setq org-time-stamp-rounding-minutes '(0 1)) 
(add-hook 'org-mode-hook 
    '(lambda() 
    (local-set-key (kbd "C-c T u") 'org-timestamp-up) 
    (local-set-key (kbd "C-c T d") 'org-timestamp-down))) 
+2

Czy to nie jest to, co "Shift-arrow" na znaczniku czasu jest odwzorowany na końcu?Pomaga to w dostosowaniu znaczników czasu, ale jakkolwiek to robisz, nie rozwiązuje to problemu polegającego na tym, że w ogóle zapomniałeś wejść. –

+0

Nie zgadzam się, rozwiązuje problem spowodowany zapomnianiem wejścia lub wyjścia, ale nie atakuje źródła problemu (zapominania). – assem

+0

Obawiałem się, że moja oryginalna sugestia silnego reżimu ginkgo biloba, witaminy b i omega 3 byłaby niewłaściwa na stronie programowania :) – assem

6

ta jest obecnie realizowany (sprawdź http://orgmode.org/w/?p=org-mode.git;a=commit;h=3528fc).

w twoim .emacs.el i nowe zegary zaczną się od czasu ostatniego zamknięcia zegara.

C-u C-u C-u M-x org-clock-in RET i C-u C-u M-x org-clock-in-last RET również to zrobi, nawet jeśli org-clock-continuously jest ustawione na nil.

12

ETA: To także przyszedł ponownie na listę dyskusyjną i wydaje się, że niedawne zobowiązanie się do bazy kodu, który stanowi kolejną [] może lepiej sposób to zrobić. Zobacz the mailing list discussion (org-mode opiekunach) wejście Bastien za:

S-M- [góra/dół] na datownika zegara spróbuje zaktualizować poprzedniego/następnego zegara znacznik czasu też.

(Właściwie bzg's sugestia poniżej jest dokładny to coś ... to po prostu nie ma skrótu powyżej włączone, więc myślę, że jego odpowiedź wygląda twardsze/mniej atrakcyjne niż wymienione powyżej, który jest bardzo proste).


Można również użyć org-resolve-clocks. Zobacz Resolving idle time.

Zasadniczo masz jakiś nagłówek i są taktowane w:

* Work 
    :LOGBOOK: 
    CLOCK: [2012-07-25 Wed 8:26] 
    :END: 

Wracam z lunchu i uświadomić sobie, że zapomniałem zegar z pracy i na obiad.

biegnę M-x org-resolve-clocks i otrzymaj podpowiada:

Select a Clock Resolution Command: 

i/q/C-g Ignore this question; the same as keeping all the idle time. 

k/K  Keep X minutes of the idle time (default is all). If this 
     amount is less than the default, you will be clocked out 
     that many minutes after the time that idling began, and then 
     clocked back in at the present time. 
g/G  Indicate that you "got back" X minutes ago. This is quite 
     different from 'k': it clocks you out from the beginning of 
     the idle period and clock you back in X minutes ago. 
s/S  Subtract the idle time from the current clock. This is the 
     same as keeping 0 minutes. 
C  Cancel the open timer altogether. It will be as though you 
     never clocked in. 
j/J  Jump to the current clock, to make manual adjustments. 

For all these options, using uppercase makes your final state 
to be CLOCKED OUT. 

Ponieważ chcę K EEP X minut pracy, zegar na zewnątrz, a następnie zegar do lunchu, pędzę K, co skłania mnie (to ~ 1: 30p teraz):

Keep how many minutes? (default 303) 

Potrafię nacisnąć Enter, aby zatrzymać wszystkie, ale załóżmy, że jadłem obiad około 12 pensów. To około 3,5 godziny pracy, więc wprowadzę 210 RET.

Teraz zegar na lunch i dostać ten wiersz:

You stopped another clock 101 minutes ago; start this one from them? (y or n) 

wejdę y RET i lunch dostaje taktowany w godzinie 11: 56a. Jeśli jesteś z powrotem z lunchu i działa ponownie (lub rozpoczęły pracę i zapomniał), powtórzyć proces:

M-x org-resolve-clocks 
K 
____ RET ;; for how many minutes you at lunch 
C-c C-x C-i ;; to clock in on Work again 
y RET ;; clock in at when you stopped lunch 

Wynik końcowy:

* Work 
    :LOGBOOK: 
    CLOCK: [2012-07-25 Wed 12:41] 
    CLOCK: [2012-07-25 Wed 8:26]--[2012-07-25 Wed 11:56] => 3:30 
    :END: 

* Lunch 
    :LOGBOOK: 
    CLOCK: [2012-07-25 Wed 11:56]--[2012-07-25 Wed 12:41] => 0:45 
    :END: 

nadzieję, że to pomaga. Kreator taktowania trybu org, Bernt Hansen, wyjaśnił mi to jako via an org-mode mailing list thread.