More
| author |
Steve Losh <steve@stevelosh.com> |
| date |
Thu, 16 Jul 2026 11:08:03 -0400 |
| parents |
(none) |
| children |
c76aecc93001 |
(in-package :stumpwm-user)
(defun parse-task-line (line)
(ppcre:register-groups-bind (id task) ("^([a-f0-9]+) - (.*)$" line)
(cons id task)))
(defun tasks/new% (task)
(sh `("t" ,task) :wait nil))
(defun tasks/list% ()
(mapcar #'parse-task-line (sh '("t") :result-type 'list)))
(defun tasks/finish% (id)
(sh `("t" "-f" ,id) :wait nil))
(defun tasks/menu% (prompt)
(second (select-from-menu
(current-screen)
(mapcar (juxt #'cdr #'car) (tasks/list%))
prompt)))
(defcommand tasks-new (task) ((:string "Task: "))
(tasks/new% task))
(defcommand tasks-list () ()
(message (format nil "~{~A~^~%~}"
(mapcar #'cdr (tasks/list%)))))
(defcommand tasks-finish () ()
(when-let ((id (tasks/menu% "Finish task: ")))
(tasks/finish% id)))