I don't leave Emacs often, but sometimes Emacs leaves me.
At moments like these, it's convenient to have a reasonably up to date state of recent files, bookmarks, history variables, etc. saved.
This package contains allows you to execute a function at a regular interval, and then waits for a few seconds of idleness to actually execute the function.
* Installation and usage
Clone the repository and put the package in your =load-path=.
#+begin_src elisp
(use-package persist-state
:ensure nil
:load-path "lisp/persist-state"
:init
(persist-state-enable))
#+end_src
Then, add functions to =persist-state-functions= which should be executed, e.g. to save bookmarks at regular intervals:
| persist-state-save-interval | Persist the Emacs state this amount of seconds. |
| persist-state-saving-functions | A list of functions that should be executed as part of saving the state of the current Emacs function. |
| persist-state-wait-idle | When it's time to save, wait for this amount of idle time (in seconds). |
** COMMENT Attribution
The code to generate the table of configuration items was inspired by an idea of [[https://xenodium.com/generating-elisp-org-docs/][Álvaro Ramírez]] (a.k.a. xenodium).