So, at work we use flexitime (flex hours, flexi hours...) which is nice but can be hard to keep track of. I'm currently using org-mode to keep track of my hours (org-clock-(out|in)
) but I'd like to extend that to automagically calculate if I've worked more than 8 hours (surplus time should be added to my flexitime 'account') or less (depending on how long lunch break I took etc), the balance on my flexitime 'account' and such.
Does anyone else use Emacs for this?
I'm currently using a very basic setup to track my time:
(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)))
current-buffer
with the buffer displayed in theselected-window
. Callingswitch-to-buffer
from Elisp is generally a sign of such problems. Instead of current-buffer+find-file+switch-to-buffer, you want to use(with-current-buffer (find-file-noselect ...) ...)
. One more note: don't bother callingconvert-standard-filename
since it probably doesn't really do what you think, and your code will work just as well without it. – Stefan