Update custom IDs
This commit is contained in:
parent
339d5da1e7
commit
be32efd73b
|
@ -95,7 +95,7 @@ One of the earliest 'optimizations' of great importance turned out to simply be
|
|||
|
||||
*** Preserve hash table state for some commands
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: preserve-hash-table-state-for-some-commands
|
||||
:CUSTOM_ID: preserve-hash-table-state-some-commands
|
||||
:END:
|
||||
NOTE - this has been replaced with a more general optimization - see next section.
|
||||
|
||||
|
@ -153,14 +153,14 @@ There are a few different approaches of dealing with them. (Currently, Chronomet
|
|||
*** Check the code of the first event of the day (timeclock format)
|
||||
:PROPERTIES:
|
||||
:DESCRIPTION: When the code of the first event in the day is "o", it's a midnight-spanning event.
|
||||
:CUSTOM_ID: check-the-code-of-the-first-event-of-the-day-(timeclock-format)
|
||||
:CUSTOM_ID: check-code-of-first-event-of-day
|
||||
:END:
|
||||
+ Advantage - very simple to detect
|
||||
+ Disadvantage - "in" and "out" events must be represented separately
|
||||
|
||||
*** Split them at the file level
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: split-them-at-the-file-level
|
||||
:CUSTOM_ID: split-in-file
|
||||
:END:
|
||||
+ Advantage - operation is performed only once for each such event + simpler data-consuming code + reduced post-parsing load.
|
||||
+ What happens when the user changes their day-start-time? The split-up events are now split wrongly, and the second event may get split /again./
|
||||
|
@ -176,14 +176,14 @@ This strategy is implemented in the [[#program-backend-plist-group][plist-group]
|
|||
|
||||
*** Split them at the hash-table-level
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: split-them-at-the-hash-table-level
|
||||
:CUSTOM_ID: split-in-hash-table
|
||||
:END:
|
||||
Handled by ~sexp-events-populate~
|
||||
+ Advantage - simpler data-consuming code.
|
||||
|
||||
*** Split them at the data-consumer level (e.g. when calculating time for one day/getting events for one day)
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: split-them-at-the-data-consumer-level-(e.g.-when-calculating-time-for-one-day-getting-events-for-one-day)
|
||||
:CUSTOM_ID: split-at-data-consumer-level
|
||||
:END:
|
||||
+ Advantage - reduced repetitive post-parsing load.
|
||||
|
||||
|
@ -380,7 +380,7 @@ There are many operations which are file-oriented, whereas I have tried to treat
|
|||
|
||||
** generic loop interface for iterating over records
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: generic-loop-interface-for-iterating-over-records
|
||||
:CUSTOM_ID: generic-loop-interface-iterating-over-records
|
||||
:END:
|
||||
Of all the ways to work with Chronometrist data, both as part of the program and as part of my occasional "queries", my favorite was to use =cl-loop=.
|
||||
|
||||
|
@ -403,7 +403,7 @@ The macro still exists in its non-generic form as =loop-sexp-file=, providing a
|
|||
|
||||
* How-to guides for maintainers
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: how-to-guides-for-maintainers
|
||||
:CUSTOM_ID: how-to-guides-maintainers
|
||||
:END:
|
||||
** How to set up Emacs to contribute
|
||||
:PROPERTIES:
|
||||
|
@ -474,7 +474,7 @@ Use =org-babel= (=org-babel-tangle= / =org-babel-tangle-file=), /not/ =literate-
|
|||
|
||||
* The Program
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: the-program
|
||||
:CUSTOM_ID: program
|
||||
:END:
|
||||
** chronometrist :package:
|
||||
:PROPERTIES:
|
||||
|
@ -546,7 +546,7 @@ Use =org-babel= (=org-babel-tangle= / =org-babel-tangle-file=), /not/ =literate-
|
|||
|
||||
*** *user-configuration-file* :custom:variable:
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: *user-configuration-file*
|
||||
:CUSTOM_ID: user-configuration-file
|
||||
:END:
|
||||
#+BEGIN_SRC lisp
|
||||
(defvar *user-configuration-file*
|
||||
|
@ -555,7 +555,7 @@ Use =org-babel= (=org-babel-tangle= / =org-babel-tangle-file=), /not/ =literate-
|
|||
|
||||
*** *user-data-file* :custom:variable:
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: *user-data-file*
|
||||
:CUSTOM_ID: user-data-file
|
||||
:END:
|
||||
#+BEGIN_SRC lisp
|
||||
(defvar *user-data-file* (merge-pathnames "chronometrist" *xdg-data-dir*)
|
||||
|
@ -574,7 +574,7 @@ Use =org-babel= (=org-babel-tangle= / =org-babel-tangle-file=), /not/ =literate-
|
|||
|
||||
*** *day-start-time* :custom:variable:
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: *day-start-time*
|
||||
:CUSTOM_ID: day-start-time
|
||||
:END:
|
||||
=chronometrist-events-maybe-split= refers to this, but I'm not sure this has the desired effect at the moment—haven't even tried using it.
|
||||
#+BEGIN_SRC lisp
|
||||
|
@ -868,7 +868,7 @@ which span midnights."
|
|||
*** *task-list* :custom:variable:
|
||||
:PROPERTIES:
|
||||
:VALUE: list
|
||||
:CUSTOM_ID: *task-list*
|
||||
:CUSTOM_ID: task-list
|
||||
:END:
|
||||
#+BEGIN_SRC lisp
|
||||
(defvar *task-list* nil
|
||||
|
@ -1089,7 +1089,7 @@ The backend may use no files, a single file, or multiple files. Thus, =backend=
|
|||
|
||||
**** *backends-alist* :variable:
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: *backends-alist*
|
||||
:CUSTOM_ID: backends-alist
|
||||
:END:
|
||||
#+BEGIN_SRC lisp
|
||||
(defvar *backends-alist* nil
|
||||
|
@ -1101,7 +1101,7 @@ EIEIO object such as one returned by `make-instance'.")
|
|||
|
||||
**** *active-backend* :custom:variable:
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: *active-backend*
|
||||
:CUSTOM_ID: active-backend-variable
|
||||
:END:
|
||||
#+BEGIN_SRC lisp
|
||||
(defvar *active-backend* :sqlite
|
||||
|
@ -1112,7 +1112,7 @@ Value must be a keyword corresponding to a key in
|
|||
|
||||
**** active-backend :reader:
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: active-backend
|
||||
:CUSTOM_ID: active-backend-function
|
||||
:END:
|
||||
#+BEGIN_SRC lisp
|
||||
(defun active-backend ()
|
||||
|
@ -1137,7 +1137,7 @@ be replaced."
|
|||
|
||||
**** task-list :function:
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: task-list
|
||||
:CUSTOM_ID: task-list-1
|
||||
:END:
|
||||
#+BEGIN_SRC lisp
|
||||
(defun task-list ()
|
||||
|
@ -1361,7 +1361,7 @@ entire (unsplit) record must be returned."))
|
|||
|
||||
**** task-records-for-date :generic:function:
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: task-records-for-date
|
||||
:CUSTOM_ID: task-records-date
|
||||
:END:
|
||||
#+BEGIN_SRC lisp
|
||||
(declaim (ftype (function (chronometrist:backend
|
||||
|
@ -1383,7 +1383,7 @@ Return nil if BACKEND contains no records.")
|
|||
|
||||
***** task-records-for-date :before:method:
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: task-records-for-date-1
|
||||
:CUSTOM_ID: before-task-records-for-date
|
||||
:END:
|
||||
#+BEGIN_SRC lisp
|
||||
#+(or)
|
||||
|
@ -1571,7 +1571,7 @@ These can be implemented in terms of the minimal protocol above.
|
|||
|
||||
*** Common definitions for s-expression backends
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: common-definitions-for-s-expression-backends
|
||||
:CUSTOM_ID: common-definitions-sexp-backends
|
||||
:END:
|
||||
**** file-backend-mixin :mixin:class:
|
||||
:PROPERTIES:
|
||||
|
@ -1807,7 +1807,7 @@ expression first)."
|
|||
|
||||
**** indices and hashes
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: indices-and-hashes
|
||||
:CUSTOM_ID: indices-hashes
|
||||
:END:
|
||||
#+BEGIN_SRC lisp
|
||||
(defun rest-start (file)
|
||||
|
@ -2534,7 +2534,7 @@ Return value is either a list in the form
|
|||
|
||||
***** task-records-for-date :reader:method:
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: task-records-for-date-2
|
||||
:CUSTOM_ID: plist-group-task-records-for-date
|
||||
:END:
|
||||
#+BEGIN_SRC lisp
|
||||
(defmethod chronometrist:task-records-for-date
|
||||
|
|
Reference in New Issue