activities.el
activities.el copied to clipboard
activities-list: resume and revert activity
Dear Adam, thank you for this awesome package!
I use activities-list as my "default" tab buffer. I would like a keybinding on the table that "resumes and reverts" an activity from the table. I tried to add this myself, but I couldn't make sense of the activities-list-command macro, and I can't tell if I can easily add my own keybindings to the vtable.
Do you know how I can add a keybinding to activities-list to resume and revert in one go?
Thanks, John
Hi John,
Thanks, I'm glad it's useful to you. Setting that as the default tab sounds like a nice idea.
See if this code works. Note the new binding "S-RET".
(defun activities-resume-reverted (activity)
(interactive)
(activities-resume activity :resetp t))
(defun activities-list ()
"List activities."
(interactive)
(unless activities-activities
(user-error (substitute-command-keys "No activities defined (to define one, type \"\\[activities-new]\")")))
(with-current-buffer (get-buffer-create "*Activities*")
(let ((inhibit-read-only t))
(read-only-mode)
(erase-buffer)
(make-vtable
:columns
`(( :name "Active" :primary descend
:getter (lambda (object _table)
(if (activities-activity-active-p object)
"*" " ")))
( :name "Name"
:getter (lambda (object _table)
(activities-activity-name object)))
( :name "Last saved"
:getter (lambda (activity _table)
(pcase-let (((cl-struct activities-activity last) activity))
(when last
(map-elt (activities-activity-state-etc last) 'time))))
:formatter activities-list--format-time)
( :name "Default saved"
:getter (lambda (activity _table)
(pcase-let (((cl-struct activities-activity default) activity))
(when default
(map-elt (activities-activity-state-etc default) 'time))))
:formatter activities-list--format-time))
:objects-function (lambda ()
(map-values activities-activities))
:sort-by '((2 . descend) (0 . descend))
:actions `("q" (lambda (&rest _) (bury-buffer))
"n" (lambda (&rest _) (forward-line 1))
"p" (lambda (&rest _) (forward-line -1))
"RET" ,(activities-list-command activities-resume)
"S-RET" ,(activities-list-command activities-resume-reverted)
"k" ,(activities-list-command activities-kill)
"s" ,(activities-list-command activities-suspend)
"D" ,(activities-list-command activities-discard)))
(pop-to-buffer (current-buffer)))))