因此,在工作中我们使用弹性工作时间(弹性工时,弹性时间...),这很不错,但可能难以跟踪。我目前正在使用org-mode来记录我的工时(org-clock-(out|in)
),但我希望将其扩展到自动计算我是否工作超过8小时(多余的时间应添加到我的弹性工作时间“账户”中)或者更少(根据我休息的午餐时间等),我的弹性工作时间“账户”的余额等。
还有其他人使用Emacs来实现这个功能吗?
我目前正在使用一个非常基本的设置来跟踪我的时间:
(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
和在selected-window
中显示的缓冲区。从Elisp调用switch-to-buffer
通常是这些问题的信号。与其使用current-buffer+find-file+switch-to-buffer,你应该使用(with-current-buffer (find-file-noselect ...) ...)
。还有一点:不必打扰调用convert-standard-filename
,因为它很可能不会真正做你想要的事情,而且没有它你的代码也能正常工作。 - Stefan