refactor: use chronometrist-command-helper

This commit is contained in:
contrapunctus 2021-06-12 21:18:44 +05:30
parent 69f2b1d5c4
commit 34fa77a173
2 changed files with 32 additions and 28 deletions

View File

@ -1442,13 +1442,14 @@ INHIBIT-HOOKS is non-nil or prefix argument is supplied.
Has no effect if no task is active."
(interactive "P")
(when (chronometrist-current-task)
(let* ((plist (plist-put (chronometrist-last) :start (chronometrist-format-time-iso8601)))
(task (plist-get plist :name)))
(unless inhibit-hooks
(run-hook-with-args 'chronometrist-before-in-functions task))
(chronometrist-sexp-replace-last plist)
(unless inhibit-hooks
(run-hook-with-args 'chronometrist-after-in-functions task)))))
(chronometrist-command-helper
:start (chronometrist-format-time-iso8601)
(lambda (task inhibit-hooks)
(unless inhibit-hooks
(run-hook-with-args 'chronometrist-before-in-functions task)))
(lambda (task inhibit-hooks)
(unless inhibit-hooks
(run-hook-with-args 'chronometrist-after-in-functions task))))))
(defun chronometrist-extend-task (&optional inhibit-hooks)
"Change the stop time of the last task to the current time.
@ -1459,13 +1460,14 @@ INHIBIT-HOOKS is non-nil or prefix argument is supplied.
Has no effect if a task is active."
(interactive "P")
(unless (chronometrist-current-task)
(let* ((plist (plist-put (chronometrist-last) :stop (chronometrist-format-time-iso8601)))
(task (plist-get plist :name)))
(unless inhibit-hooks
(run-hook-with-args-until-failure 'chronometrist-before-out-functions task))
(chronometrist-sexp-replace-last plist)
(unless inhibit-hooks
(run-hook-with-args 'chronometrist-after-out-functions task)))))
(chronometrist-command-helper
:stop (chronometrist-format-time-iso8601)
(lambda (task inhibit-hooks)
(unless inhibit-hooks
(run-hook-with-args-until-failure 'chronometrist-before-out-functions task)))
(lambda (task inhibit-hooks)
(unless inhibit-hooks
(run-hook-with-args 'chronometrist-after-out-functions task))))))
;;;###autoload
(defun chronometrist (&optional arg)

View File

@ -2512,13 +2512,14 @@ INHIBIT-HOOKS is non-nil or prefix argument is supplied.
Has no effect if no task is active."
(interactive "P")
(when (chronometrist-current-task)
(let* ((plist (plist-put (chronometrist-last) :start (chronometrist-format-time-iso8601)))
(task (plist-get plist :name)))
(unless inhibit-hooks
(run-hook-with-args 'chronometrist-before-in-functions task))
(chronometrist-sexp-replace-last plist)
(unless inhibit-hooks
(run-hook-with-args 'chronometrist-after-in-functions task)))))
(chronometrist-command-helper
:start (chronometrist-format-time-iso8601)
(lambda (task inhibit-hooks)
(unless inhibit-hooks
(run-hook-with-args 'chronometrist-before-in-functions task)))
(lambda (task inhibit-hooks)
(unless inhibit-hooks
(run-hook-with-args 'chronometrist-after-in-functions task))))))
#+END_SRC
**** extend-task :command:
#+BEGIN_SRC emacs-lisp
@ -2531,13 +2532,14 @@ INHIBIT-HOOKS is non-nil or prefix argument is supplied.
Has no effect if a task is active."
(interactive "P")
(unless (chronometrist-current-task)
(let* ((plist (plist-put (chronometrist-last) :stop (chronometrist-format-time-iso8601)))
(task (plist-get plist :name)))
(unless inhibit-hooks
(run-hook-with-args-until-failure 'chronometrist-before-out-functions task))
(chronometrist-sexp-replace-last plist)
(unless inhibit-hooks
(run-hook-with-args 'chronometrist-after-out-functions task)))))
(chronometrist-command-helper
:stop (chronometrist-format-time-iso8601)
(lambda (task inhibit-hooks)
(unless inhibit-hooks
(run-hook-with-args-until-failure 'chronometrist-before-out-functions task)))
(lambda (task inhibit-hooks)
(unless inhibit-hooks
(run-hook-with-args 'chronometrist-after-out-functions task))))))
#+END_SRC
**** chronometrist :command:
#+BEGIN_SRC emacs-lisp