Vì vậy, tại nơi làm việc chúng tôi sử dụng flexitime (flex giờ, flexi giờ ...) mà là tốt đẹp nhưng có thể khó theo dõi. Tôi hiện đang sử dụng chế độ org để theo dõi số giờ của tôi (org-clock-(out|in)
) nhưng tôi muốn mở rộng để tính toán tự động nếu tôi đã làm việc hơn 8 giờ (thời gian dư thừa sẽ được thêm vào tài khoản 'flex' của tôi) hoặc ít hơn (tùy thuộc vào thời gian nghỉ trưa tôi đã lấy vv), số dư trên tài khoản 'flex' của tôi và như vậy.Theo dõi flexitime bằng Emacs (& org-mode)
Có ai khác sử dụng Emacs cho mục đích này không?
Tôi hiện đang sử dụng một thiết lập rất cơ bản để theo dõi thời gian của tôi:
(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)))
Mã của bạn gây nhầm lẫn với 'bộ đệm hiện tại' với bộ đệm được hiển thị trong' cửa sổ đã chọn'. Gọi 'switch-to-buffer' từ Elisp thường là dấu hiệu của những vấn đề như vậy. Thay vì bộ đệm hiện tại + find-file + switch-to-buffer, bạn muốn sử dụng '(với hiện tại-bộ đệm (find-file-noselect ...) ...)'. Một lưu ý nữa: đừng bận tâm gọi 'conversion-standard-filename' vì nó có thể không thực sự làm những gì bạn nghĩ, và mã của bạn sẽ hoạt động tốt mà không có nó. – Stefan