Compare commits
4 Commits
73be9670b7
...
a1c79d8faa
Author | SHA1 | Date |
---|---|---|
contrapunctus | a1c79d8faa | |
contrapunctus | d63bc11c8a | |
contrapunctus | dcca2632fb | |
contrapunctus | bbf5a2e048 |
1
TODO.org
1
TODO.org
|
@ -1223,3 +1223,4 @@ tutorials
|
|||
how-to guides
|
||||
1. how to install (Git, MELPA, Quelpa, etc)
|
||||
2. how to attach tags and properties to time intervals (cover different commands)
|
||||
3. how to configure Emacs for Chronometrist development
|
||||
|
|
56
manual.org
56
manual.org
|
@ -24,11 +24,10 @@ Chronometrist is a friendly and powerful personal time tracker and analyzer. It
|
|||
:CUSTOM_ID: benefits
|
||||
:END:
|
||||
1. Extremely simple and efficient to use
|
||||
2. Displays useful information about your time usage
|
||||
2. Displays useful information about your time usage (including fancy graphs with the =chronometrist-spark= extension)
|
||||
3. Support for both mouse and keyboard
|
||||
4. Human errors in tracking are easily fixed by editing a plain text file
|
||||
5. Hooks to let you perform arbitrary actions when starting/stopping tasks
|
||||
6. Fancy graphs with the =chronometrist-spark= extension
|
||||
4. Human errors in tracking can be easily fixed by editing a plain text file
|
||||
5. Hooks to integrate time tracking into your workflow
|
||||
|
||||
** Limitations
|
||||
:PROPERTIES:
|
||||
|
@ -86,17 +85,33 @@ Currently, this port can -
|
|||
#+END_SRC
|
||||
2. display a (WIP) CLIM GUI - =(chronometrist.clim:run-chronometrist)=
|
||||
|
||||
The literate sources for the Common Lisp port may be found in =cl/chronometrist.org=.
|
||||
|
||||
[fn:1] McCLIM also has an incomplete ncurses backend - when completed, a CLIM frontend could provide a TUI "for free".
|
||||
|
||||
** Literate Program
|
||||
** Literate program
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: explanation-literate-program
|
||||
:END:
|
||||
Chronometrist is a literate program, made using Org - the canonical source is the =chronometrist.org= file, which contains source blocks. These are provided to users after /tangling/ (extracting the source into an Emacs Lisp file).
|
||||
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 Org file 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, within the context of the concerned documentation. See [[#how-to-literate-elisp][How to load the program using literate-elisp]].
|
||||
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]
|
||||
|
||||
=chronometrist.org= is also included in MELPA installs, although not used directly by default, since doing so would interfere with automatic generation of autoloads.
|
||||
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.
|
||||
|
||||
** Contributions and contact
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: contributions-contact
|
||||
:END:
|
||||
Feedback and MRs are very welcome. 🙂
|
||||
+ [[file:TODO.org]] has a long list of tasks
|
||||
+ [[file:elisp/chronometrist.org]] contains all developer-oriented documentation
|
||||
|
||||
If you have tried using Chronometrist, I'd love to hear your experiences! Get in touch with the author and other Emacs users in the Emacs channel on the Jabber network - [[https://conversations.im/j/emacs@salas.suchat.org][xmpp:emacs@salas.suchat.org?join]] ([[https://inverse.chat/#converse/room?jid=emacs@salas.suchat.org][web chat]])
|
||||
|
||||
(For help in getting started with Jabber, [[https://xmpp.org/getting-started/][click here]])
|
||||
|
||||
** License
|
||||
:PROPERTIES:
|
||||
|
@ -234,7 +249,7 @@ If you want it to be loaded with =literate-elisp-load= on Emacs startup, add the
|
|||
:PROPERTIES:
|
||||
:CUSTOM_ID: how-to-tags
|
||||
:END:
|
||||
1. Add =chronometrist-tags-add= to one or more of these hooks [fn:2] -
|
||||
1. Add =chronometrist-tags-add= to one or more of these hooks [fn:3] -
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(add-to-list 'chronometrist-after-in-functions 'chronometrist-tags-add)
|
||||
|
@ -245,13 +260,13 @@ If you want it to be loaded with =literate-elisp-load= on Emacs startup, add the
|
|||
|
||||
The prompt suggests past combinations you used for the current task, which you can browse with =M-p=/=M-n=. You can leave it blank by pressing =RET=.
|
||||
|
||||
[fn:2] but not =chronometrist-before-in-functions=
|
||||
[fn:3] but not =chronometrist-before-in-functions=
|
||||
|
||||
** How to attach key-values to time intervals
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: how-to-key-value-pairs
|
||||
:END:
|
||||
1. Add =chronometrist-kv-add= to one or more of these hooks [fn:2] -
|
||||
1. Add =chronometrist-kv-add= to one or more of these hooks [fn:3] -
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(add-to-list 'chronometrist-after-in-functions 'chronometrist-kv-add)
|
||||
|
@ -326,7 +341,7 @@ Return nil (and run `magit-status') if the user answers no."
|
|||
:PROPERTIES:
|
||||
:CUSTOM_ID: how-to-backup
|
||||
:END:
|
||||
I suggest backing up Chronometrist data on each save using the [[https://tildegit.org/contrapunctus/async-backup][async-backup]] package.[fn:3] Here's how you can do that.
|
||||
I suggest backing up Chronometrist data on each save using the [[https://tildegit.org/contrapunctus/async-backup][async-backup]] package.[fn:4] Here's how you can do that.
|
||||
|
||||
1. Add the following to your init.
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
|
@ -335,9 +350,10 @@ I suggest backing up Chronometrist data on each save using the [[https://tildegi
|
|||
2. Open your Chronometrist file and add =async-backup= to a buffer-local =after-save-hook=.
|
||||
: M-x chronometrist-open-log
|
||||
: M-x add-file-local-variable-prop-line RET eval RET (add-hook 'after-save-hook #'async-backup nil t) RET
|
||||
3. Optionally, configure =backup-directory-alist= to set a specific directory for the backups.
|
||||
3. Optionally, configure =async-backup-location= to set a specific directory for the backups -
|
||||
: (setq async-backup-location "/path/to/backup/dir/")
|
||||
|
||||
[fn:3] It is possible to use Emacs' built-in backup system to do it, but since it is synchronous, doing so will greatly slow down saving of the Chronometrist file.
|
||||
[fn:4] It is possible to use Emacs' built-in backup system to do it, but since it is synchronous, doing so will greatly slow down saving of the Chronometrist file.
|
||||
|
||||
** How to configure Vertico for use with Chronometrist
|
||||
:PROPERTIES:
|
||||
|
@ -388,18 +404,6 @@ Hooks
|
|||
8. =chronometrist-file-change-hook=
|
||||
9. =chronometrist-timer-hook=
|
||||
|
||||
* Contributions and contact
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: contributions-contact
|
||||
:END:
|
||||
Feedback and MRs are very welcome. 🙂
|
||||
+ [[file:TODO.org]] has a long list of tasks
|
||||
+ [[file:elisp/chronometrist.org]] contains all developer-oriented documentation
|
||||
|
||||
If you have tried using Chronometrist, I'd love to hear your experiences! Get in touch with the author and other Emacs users in the Emacs channel on the Jabber network - [[https://conversations.im/j/emacs@salas.suchat.org][xmpp:emacs@salas.suchat.org?join]] ([[https://inverse.chat/#converse/room?jid=emacs@salas.suchat.org][web chat]])
|
||||
|
||||
(For help in getting started with Jabber, [[https://xmpp.org/getting-started/][click here]])
|
||||
|
||||
* Local variables :noexport:
|
||||
# Local Variables:
|
||||
# my-org-src-default-lang: "emacs-lisp"
|
||||
|
|
Reference in New Issue