If there were an underappreciated web browser feature, it would be this: history.
On many browsers, history is invoked with C-h (Ctrl+h). Vivaldi shows history as a calendar. The user can choose from time intervals of Day, Week or Month and search for a keyword within that time interval.1
I tend to write about a topic after I've forgotten where I read about it. Suppose I recall reading about "nslookup" but can't remember when or where. Simple. Vivaldi remembered that I visited a page with "nslookup" on Windows Central on July 3 at 21:26. Being able to find such references helps.
History helped me track my hours when my employer required bi-weekly timesheets. I would combine browser history with Org's clock report to get a result I was actually proud to submit.
I still track my time with Org, which stores start and stop times in a drawer called LOGBOOK. But I tend to forget to start or stop the clock, so the times are unreliable. Sometimes a file's timestamp can help me reconstruct the LOGBOOK. But at times like these I'd wish that Emacs had a history feature.
Actually Emacs does have a few history-like features. One example
is savehist-mode,2 which "save[s] the values of
minibuffer history variables." Unfortunately, timestamps are not
included.
So I configured Emacs to write a timestamp to the *Messages* buffer
every time it loads or saves a file. This frees me from switching
to a file manager to check a file's timestamp. Using Customize, I
added functions to find-file-hook
and after-save-hook:3
(find-file-hook '(lambda nil (message "%s: Loaded %s" (format-time-string "%Y-%m-%d %H:%M:%S" (current-time)) (buffer-file-name)))) (after-save-hook '(lambda nil (message "%s: Saved %s" (format-time-string "%Y-%m-%d %H:%M:%S" (current-time)) (buffer-file-name))))
Whenever I realize I'm not clocked in, I visit the *Messages* buffer and look for the first occurrence of something like this:
2026-07-20 12:32:33: Saved c:/Users/RayZ/AppData/Roaming/HOME/blog.org
Then I clock in and change the start time to 12:33.4
Similarly, if I've been away from the computer and realize I'm still clocked in, I'll look for the last occurrence of the message, clock out, and change the time accordingly.
The *Messages* buffer is temporary; timestamps from an earlier Emacs session are lost. But this simple system does what I need.
What methods do you use to track project time?
1 The user also can view history as a simple list in reverse chronological order. And the search can span the entire history, if desired.
2 https://doc.endlessparentheses.com/Fun/savehist-mode.html
3 Note that these expressions are arguments to
custom-set-variables.
4 Timesheets required time entries in units of hours
rounded to one decimal. A tenth hour is 6 minutes. So I configured
Org to round clock times to 3 minutes by setting
org-clock-rounding-minutes to 3. This affords more granularity.
With several clock entries per heading, an even number of 0:03 clock entries would
produce the desired tenth hour accuracy.
No comments:
Post a Comment
Thank you for taking time to comment. Please note that comments may be deleted if they:
* Contain link(s) to a domain outside USA or Canada or to a commercial enterprise.
* Include non-English words or characters.
* Are irrelevant to the subject matter of the post.
For posts older than 14 days, comments are moderated and require approval.