3.9 KiB
Emacs Persist State
Introduction
I don't leave Emacs often, but sometimes Emacs leaves me.
At moments like these it's convenient to start Emacs again with a reasonably up to date state from the previous session: history variables, bookmarks, open buffers, etc. Usually these items are saved at Emacs exit (as part of kill-emacs-hook
), but when Emacs exits unexpectedly due to a crash, these functions are not executed and you're left with an outdated state (if any).
This package saves your Emacs state regularly when idle for a brief moment, to minimize disturbance of executing all save functions in sequence. In case Emacs is idle for a longer time, no state is saved.
Supported packages
persist-state supports a number of packages out of the box. For some packages the save only takes place when the corresponding mode or variable is set accordingly. For example, saving history only takes place if savehist-mode
is active. Consult the package's documentation or source code for more info about auto-saving.
- bookmark
- desktop
- Eshell history
- Prescient.el
- recentf
- savehist
Installation and usage
At this moment, there is no MELPA package. Therefore, clone the repository and put the package in your load-path
, for example with use-package
:
git clone https://codeberg.org/bram85/emacs-persist-state.git
(use-package persist-state
:ensure nil
:load-path "/path/to/emacs-persist-state"
:config
(persist-state-mode))
Configuration
This table shows which variables can be customized.
Custom variable | Description |
---|---|
persist-state-save-interval | Interval (in seconds) to persist state. |
persist-state-saving-functions | A list of functions that should be executed as part of saving state. |
persist-state-wait-idle | When it's time to save, wait for this amount of idle time (in seconds). |
To add custom functions that should be executed, add functions to persist-state-functions
. E.g. to save bookmarks at regular intervals:
(add-to-list 'persist-state-functions #'bookmark-save)
Contact
- Issue reports: Codeberg
- Mastodon: @bram85@emacs.ch
- Mail: see
git log
.