Move Overview from LP to manual
This commit is contained in:
parent
dbc7be41d2
commit
bb4b2121c9
|
@ -55,16 +55,6 @@ Chronometrist records /time intervals/ (earlier called "events") as plists. Each
|
||||||
|
|
||||||
See also [[#explanation-time-formats][Currently-Used Time Formats]]
|
See also [[#explanation-time-formats][Currently-Used Time Formats]]
|
||||||
|
|
||||||
** Overview
|
|
||||||
At its most basic, we read data from a [[#program-backend][backend]], store it in a [[#program-data-structures][hash table]], and [[#program-frontend-chronometrist][display it]] as a [[elisp:(find-library "tabulated-list-mode")][=tabulated-list-mode=]] buffer. When the file is changed—whether by the program or the user—we [[refresh-file][update the hash table]] and the [[#program-frontend-chronometrist-refresh][buffer]].
|
|
||||||
|
|
||||||
In addition, we implement a [[#program-pretty-printer][plist pretty-printer]] and some [[#program-migration][migration commands]].
|
|
||||||
|
|
||||||
Extensions exist for -
|
|
||||||
1. [[file:chronometrist-key-values.org][attaching arbitrary metadata]] to time intervals, and
|
|
||||||
2. support for the [[file:chronometrist-third.org][Third Time system]]
|
|
||||||
3. [[https://tildegit.org/contrapunctus/chronometrist-goal][time goals and alerts]]
|
|
||||||
|
|
||||||
** Optimization
|
** Optimization
|
||||||
It is of great importance that Chronometrist be responsive -
|
It is of great importance that Chronometrist be responsive -
|
||||||
+ A responsive program is more likely to be used; recall our design goal of 'incentivizing use'.
|
+ A responsive program is more likely to be used; recall our design goal of 'incentivizing use'.
|
||||||
|
|
28
manual.org
28
manual.org
|
@ -74,14 +74,14 @@ In March 2022, work began on the long-awaited Common Lisp port of Chronometrist,
|
||||||
|
|
||||||
The port was also driven by the desire to have access to Common Lisp's better performance, and features such as namespaces, a /de facto/ standard build system, multithreading, SQLite bindings, a more fully-featured implementation of CLOS and MOP, and type annotations, checking, and inference.
|
The port was also driven by the desire to have access to Common Lisp's better performance, and features such as namespaces, a /de facto/ standard build system, multithreading, SQLite bindings, a more fully-featured implementation of CLOS and MOP, and type annotations, checking, and inference.
|
||||||
|
|
||||||
The literate sources for the Common Lisp port may be found in =cl/chronometrist.org=. Currently, this port can -
|
The literate sources for the Common Lisp port may be found in [[file:cl/chronometrist.org][cl/chronometrist.org]]. Currently, this port can -
|
||||||
1. import from a plist-group file and export to an SQLite database
|
1. import from a plist-group file and export to an SQLite database
|
||||||
#+BEGIN_SRC lisp
|
#+BEGIN_SRC lisp
|
||||||
(chronometrist:to-file (chronometrist:to-hash-table
|
(chronometrist:to-file (chronometrist:to-hash-table
|
||||||
(make-instance 'chronometrist.plist-group:plist-group-backend
|
(make-instance 'chronometrist.plist-group:plist-group-backend
|
||||||
:file "/path/to/file.plg"))
|
:file "/path/to/file.plg"))
|
||||||
(make-instance 'chronometrist.sqlite:sqlite-backend)
|
(make-instance 'chronometrist.sqlite:sqlite-backend)
|
||||||
"/path/to/file.sqlite")
|
"/path/to/file.sqlite")
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
2. display a (WIP) CLIM GUI - =(chronometrist.clim:run-chronometrist)=
|
2. display a (WIP) CLIM GUI - =(chronometrist.clim:run-chronometrist)=
|
||||||
|
|
||||||
|
@ -95,11 +95,23 @@ The Emacs Lisp codebase will probably become an Emacs frontend to a future Commo
|
||||||
:END:
|
:END:
|
||||||
Chronometrist is written as an Org literate program, which makes it easy to obtain different views of the program source, thanks to tree- and source-block folding, tags, properties, and the =org-match= command.
|
Chronometrist is written as an Org literate program, which makes it easy to obtain different views of the program source, thanks to tree- and source-block folding, tags, properties, and the =org-match= command.
|
||||||
|
|
||||||
The canonical source is the =elisp/chronometrist.org= file, which contains source blocks. These are provided to users after /tangling/ (extracting the source into an Emacs Lisp file). [fn:2]
|
The canonical source file is [[file:elisp/chronometrist.org][elisp/chronometrist.org]], which contains source blocks. These are provided to users after /tangling/ (extracting the source into an Emacs Lisp file). [fn:2]
|
||||||
|
|
||||||
The Org literate program can also be loaded directly using the [[https://github.com/jingtaozf/literate-elisp][literate-elisp]] package, so that all source links (e.g. =xref=, =describe-function=) lead to the Org file. See [[#how-to-literate-elisp][How to load the program using literate-elisp]].
|
The Org literate program can also be loaded directly using the [[https://github.com/jingtaozf/literate-elisp][literate-elisp]] package, so that all source links (e.g. =xref=, =describe-function=) lead to the Org file. See [[#how-to-literate-elisp][How to load the program using literate-elisp]].
|
||||||
|
|
||||||
[fn:2] =chronometrist.org= is also included in MELPA installs, although not loaded through =literate-elisp-load= by default, since doing so would interfere with automatic generation of autoloads.
|
[fn:2] the literate source is also included in MELPA installs, although not loaded through =literate-elisp-load= by default, since doing so would interfere with automatic generation of autoloads.
|
||||||
|
|
||||||
|
** Source code overview
|
||||||
|
At its most basic, we read data from a [[file:elisp/chronometrist.org::#program-backend][backend]] and [[file:elisp/chronometrist.org::#program-frontend-chronometrist][display it]] as a [[elisp:(find-library "tabulated-list")][=tabulated-list-mode=]] buffer.
|
||||||
|
|
||||||
|
The plist and plist-group backends (collectively known as the s-expression backends) =read= a text file containing s-expressions into a [[file:elisp/chronometrist.org::#program-data-structures][hash table]], and query that. When the file is changed—whether by the program or the user—they [[file:elisp/chronometrist.org::refresh-file][update the hash table]] and the [[file:elisp/chronometrist.org::#program-frontend-chronometrist-refresh][buffer]]. The s-expression backends also make use of a [[file:elisp/chronometrist.org::#program-pretty-printer][plist pretty-printer]] of their own.
|
||||||
|
|
||||||
|
There are also some [[file:elisp/chronometrist.org::#program-migration][migration commands]].
|
||||||
|
|
||||||
|
Extensions exist for -
|
||||||
|
1. [[file:elisp/chronometrist-key-values.org][attaching arbitrary metadata]] to time intervals,
|
||||||
|
2. [[https://tildegit.org/contrapunctus/chronometrist-goal][time goals and alerts]], and
|
||||||
|
3. support for the [[file:elisp/chronometrist-third.org][Third Time system]]
|
||||||
|
|
||||||
** Contributions and contact
|
** Contributions and contact
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
|
|
Reference in New Issue