diff --git a/manual.md b/manual.md index fe40719..613e339 100644 --- a/manual.md +++ b/manual.md @@ -13,7 +13,7 @@ 1. [chronometrist](#usage-chronometrist) 2. [chronometrist-report](#usage-chronometrist-report) 3. [chronometrist-statistics](#usage-chronometrist-statistics) - 4. [chronometrist-details](#orgef95536) + 4. [chronometrist-details](#orgd0baf02) 5. [common commands](#usage-common-commands) 6. [Time goals/targets](#time-goals) 6. [How-to](#how-to) @@ -21,14 +21,14 @@ 2. [How to load the program using literate-elisp](#how-to-literate-elisp) 3. [How to attach tags to time intervals](#how-to-tags) 4. [How to attach key-values to time intervals](#how-to-key-value-pairs) - 5. [How to skip running hooks/attaching tags and key values](#org91eaa24) + 5. [How to skip running hooks/attaching tags and key values](#org4fb8a60) 6. [How to open certain files when you start a task](#how-to-open-files-on-task-start) 7. [How to warn yourself about uncommitted changes](#how-to-warn-uncommitted-changes) 8. [How to display the current time interval in the activity indicator](#how-to-activity-indicator) 9. [How to back up your Chronometrist data](#how-to-backup) -7. [Explanation](#orgeaa52ca) +7. [Explanation](#org8c92b56) 1. [Literate Program](#explanation-literate-program) -8. [User's reference](#org3483ac6) +8. [User's reference](#org48f1512) 9. [Contributions and contact](#contributions-contact) 10. [License](#license) 11. [Thanks](#thanks) @@ -157,7 +157,7 @@ Run `M-x chronometrist-statistics` (or `chronometrist` with a prefix argument of Press `b` to look at past time ranges, and `f` for future ones. - + ## chronometrist-details @@ -232,7 +232,7 @@ Evaluate or add to your init.el the following - To exit the prompt, press the key it indicates for quitting - you can then edit the resulting key-values by hand if required. Press `C-c C-c` to accept the key-values, or `C-c C-k` to cancel. - + ## How to skip running hooks/attaching tags and key values @@ -298,27 +298,21 @@ Another one, prompting the user if they have uncommitted changes in a git reposi ## How to back up your Chronometrist data -I suggest backing up Chronometrist data on each save. Here's how you can do that. +I suggest backing up Chronometrist data on each save using the [async-backup](https://tildegit.org/contrapunctus/async-backup) package.3 Here's how you can do that. 1. Add the following to your init. - (setq backup-by-copying t - kept-new-versions 10 - kept-old-versions 10 - version-control t) - - (defun my-force-backup () - (setq buffer-backed-up nil)) -2. Open your Chronometrist file and add the function to `before-save-hook`. + (use-package async-backup) +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 'before-save-hook #'my-force-backup nil t) RET + 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. Adapted from this [StackOverflow answer](https://stackoverflow.com/questions/6916529/how-can-i-make-emacs-backup-every-time-i-save). - + # Explanation @@ -334,7 +328,7 @@ The Org file can also be loaded directly using the [literate-elisp](https://gi `chronometrist.org` is also included in MELPA installs, although not used directly by default, since doing so would interfere with automatic generation of autoloads. - + # User's reference @@ -412,3 +406,5 @@ fiete and wu-lee for testing and bug reports 1 but not `chronometrist-before-in-functions` 2 but not `chronometrist-before-in-functions` + +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. diff --git a/manual.org b/manual.org index 23ddea2..bff1ea5 100644 --- a/manual.org +++ b/manual.org @@ -172,7 +172,7 @@ Evaluate or add to your init.el the following - :CUSTOM_ID: how-to-tags :END: -1. Add =chronometrist-tags-add= to one or more of these hooks [fn:1] - +1. Add =chronometrist-tags-add= to one or more of these hooks [fn:2] - #+BEGIN_SRC emacs-lisp (add-to-list 'chronometrist-after-in-functions 'chronometrist-tags-add) @@ -183,14 +183,14 @@ Evaluate or add to your init.el the following - 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:1] but not =chronometrist-before-in-functions= +[fn:2] 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) @@ -200,7 +200,7 @@ Evaluate or add to your init.el the following - To exit the prompt, press the key it indicates for quitting - you can then edit the resulting key-values by hand if required. Press =C-c C-c= to accept the key-values, or =C-c C-k= to cancel. -[fn:2] but not =chronometrist-before-in-functions= +[fn:3] but not =chronometrist-before-in-functions= ** How to skip running hooks/attaching tags and key values Use =M-RET= (=chronometrist-toggle-task-no-hooks=) to clock in/out. @@ -270,25 +270,21 @@ 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. 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:1] Here's how you can do that. 1. Add the following to your init. #+BEGIN_SRC emacs-lisp -(setq backup-by-copying t - kept-new-versions 10 - kept-old-versions 10 - version-control t) - -(defun my-force-backup () - (setq buffer-backed-up nil)) +(use-package async-backup) #+END_SRC -2. Open your Chronometrist file and add the function to =before-save-hook=. +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 'before-save-hook #'my-force-backup nil t) RET + : 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. Adapted from this [[https://stackoverflow.com/questions/6916529/how-can-i-make-emacs-backup-every-time-i-save][StackOverflow answer]]. +[fn:1] 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. + * Explanation ** Literate Program :PROPERTIES: