Optimization - reduce use of chronometrist-tasks-from-table
We now avoid running chronometrist-tasks-from-table for the chronometrist-sexp-new and the chronometrist-sexp-replace-last operations. Hurray. Clocking in/out is tangibly faster now.
This commit is contained in:
parent
5e4854272e
commit
dd7ec40da7
|
@ -72,18 +72,19 @@
|
|||
2. Variable - chronometrist-date-re
|
||||
3. Variable - chronometrist-time-re-ui
|
||||
4. Variable - chronometrist-task-list
|
||||
5. Internal Variable - chronometrist--fs-watch
|
||||
6. Function - chronometrist-current-task ()
|
||||
7. Function - chronometrist-format-time (seconds &optional (blank " "))
|
||||
5. Function - chronometrist-task-list-add (task)
|
||||
6. Internal Variable - chronometrist--fs-watch
|
||||
7. Function - chronometrist-current-task ()
|
||||
8. Function - chronometrist-format-time (seconds &optional (blank " "))
|
||||
* seconds -> "h:m:s"
|
||||
8. Function - chronometrist-common-file-empty-p (file)
|
||||
9. Function - chronometrist-common-clear-buffer (buffer)
|
||||
10. Function - chronometrist-format-keybinds (command map &optional firstonly)
|
||||
11. Function - chronometrist-events->ts-pairs (events)
|
||||
9. Function - chronometrist-common-file-empty-p (file)
|
||||
10. Function - chronometrist-common-clear-buffer (buffer)
|
||||
11. Function - chronometrist-format-keybinds (command map &optional firstonly)
|
||||
12. Function - chronometrist-events->ts-pairs (events)
|
||||
* (plist ...) -> ((ts . ts) ...)
|
||||
12. Function - chronometrist-ts-pairs->durations (ts-pairs)
|
||||
13. Function - chronometrist-ts-pairs->durations (ts-pairs)
|
||||
* ((ts . ts) ...) -> seconds
|
||||
13. Function - chronometrist-previous-week-start (ts)
|
||||
14. Function - chronometrist-previous-week-start (ts)
|
||||
* ts -> ts
|
||||
*** chronometrist-custom.el
|
||||
1. Custom variable - chronometrist-file
|
||||
|
|
|
@ -45,6 +45,13 @@ must correspond to the output from `chronometrist-format-time'.")
|
|||
(defvar chronometrist-task-list nil
|
||||
"List of tasks in `chronometrist-file', as returned by `chronometrist-tasks-from-table'.")
|
||||
|
||||
(defun chronometrist-task-list-add (task)
|
||||
"Add TASK to `chronometrist-task-list', if it is not already present."
|
||||
(unless (member task chronometrist-task-list)
|
||||
(--> (append chronometrist-task-list task)
|
||||
(sort it #'string-lessp)
|
||||
(setq chronometrist-task-list it))))
|
||||
|
||||
(defvar chronometrist--fs-watch nil
|
||||
"Filesystem watch object.
|
||||
|
||||
|
|
|
@ -88,7 +88,10 @@ were none."
|
|||
(unless (bobp) (insert "\n"))
|
||||
(unless (bolp) (insert "\n"))
|
||||
(chronometrist-plist-pp plist (current-buffer))
|
||||
;; update in-memory (`chronometrist-events', `chronometrist-task-list') too...
|
||||
(chronometrist-events-new plist)
|
||||
(chronometrist-task-list-add (plist-get plist :name))
|
||||
;; ...so we can skip some expensive operations.
|
||||
(setq chronometrist--inhibit-read-p t)
|
||||
(save-buffer)))
|
||||
|
||||
|
@ -108,6 +111,7 @@ were none."
|
|||
(chronometrist-sexp-delete-list)
|
||||
(chronometrist-plist-pp plist (current-buffer))
|
||||
(chronometrist-events-replace-last plist)
|
||||
;; We make an assumption here - that this function will always be used to replace something with the same :name. Thus, we don't update `chronometrist-task-list' here (unlike `chronometrist-sexp-new')
|
||||
(setq chronometrist--inhibit-read-p t)
|
||||
(save-buffer)))
|
||||
|
||||
|
|
|
@ -225,8 +225,8 @@ Argument _FS-EVENT is ignored."
|
|||
;; REVIEW - can we move most/all of this to the `chronometrist-file-change-hook'?
|
||||
(if chronometrist--inhibit-read-p
|
||||
(setq chronometrist--inhibit-read-p nil)
|
||||
(chronometrist-events-populate))
|
||||
(setq chronometrist-task-list (chronometrist-tasks-from-table))
|
||||
(chronometrist-events-populate)
|
||||
(setq chronometrist-task-list (chronometrist-tasks-from-table)))
|
||||
(chronometrist-tags-history-populate)
|
||||
(chronometrist-key-history-populate)
|
||||
(chronometrist-value-history-populate)
|
||||
|
|
Reference in New Issue