stumpwm/tasks.lisp @ c76aecc93001 default tip
More
| author | Steve Losh <steve@stevelosh.com> |
|---|---|
| date | Thu, 16 Jul 2026 11:24:25 -0400 |
| parents | adb18a61e30f |
| children | (none) |
(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% () (_ (sh '("t") :result-type 'list) (mapcar #'parse-task-line _) (sort _ #'string-lessp :key #'cdr))) (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)))