Tak więc w pracy używamy elastycznego czasu pracy (flex hours, flexi hours ...), co jest miłe, ale może być trudne do śledzenia. Obecnie używam trybu org, aby śledzić moje godziny pracy (org-clock-(out|in)
), ale chciałbym je rozszerzyć, aby automagicznie obliczyć, czy przepracowałem więcej niż 8 godzin (nadwyżka czasu powinna zostać dodana do mojego "konta" elastycznego) lub mniej (w zależności od tego, jak długo trwała przerwa obiadowa itp.), saldo na moim "koncie" elastycznym i takie.Śledzenie elastycznego czasu pracy za pomocą Emacsa (tryb & org)
Czy ktoś jeszcze używa do tego Emacsa?
obecnie używam bardzo podstawową konfigurację, aby śledzić czas:
(defun check-in()
(interactive)
(let (pbuf (current-buffer))
(find-file (convert-standard-filename "whatnot"))
(goto-char (point-max))
(insert "\n")
(org-insert-heading)
(org-insert-time-stamp (current-time))
(org-clock-in)
(save-buffer)
(switch-to-buffer pbuf)))
(defun check-out()
(interactive)
(let (pbuf (current-buffer))
(find-file (convert-standard-filename "whatnot"))
(goto-char (point-max))
(org-clock-out)
(save-buffer)
(switch-to-buffer pbuf)))
Twój kod myli "bufor bieżący" z buforem wyświetlanym w "wybranym oknie". Wywołanie 'switch-to-buffer' od Elisp jest zazwyczaj oznaką takich problemów. Zamiast obecnego bufora + pliku-find + przełącznika na bufor, chcesz użyć '(with-current-buffer (find-file-noselect ...) ...)'. Jeszcze jedna uwaga: nie zawracaj sobie głowy wywoływaniem 'convert-standard-filename', ponieważ prawdopodobnie nie robi to, co myślisz, a twój kod będzie działał równie dobrze bez niego. – Stefan