Quindi, al lavoro usiamo il flexitime (orario flessibile, orario flessibile ...) che è bello ma può essere difficile da tenere sotto controllo. Attualmente sto utilizzando la modalità org per tenere traccia dei miei orari (org-clock-(out|in)
) ma mi piacerebbe estenderlo per calcolare automaticamente se ho lavorato più di 8 ore (il tempo in più deve essere aggiunto al mio account 'flessibile') o meno (a seconda di quanto a lungo pausa pranzo ho preso, ecc), il saldo sul mio conto 'flessibile' e così via.Tracking flexitime usando Emacs (& org-mode)
Qualcun altro utilizza Emacs per questo?
Attualmente sto usando una configurazione molto semplice per monitorare il mio tempo:
(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)))
Il tuo codice confonde il 'buffer corrente 'con il buffer visualizzato nella' finestra selezionata'. Chiamare 'switch-to-buffer' da Elisp è generalmente un segno di tali problemi. Invece di current-buffer + find-file + switch-to-buffer, si vuole usare '(with-current-buffer (find-file-noselect ...) ...)'. Ancora una nota: non preoccupatevi di chiamare 'convert-standard-filename' dato che probabilmente non fa realmente quello che pensate, e il vostro codice funzionerà altrettanto bene senza di esso. – Stefan