You don't have to declare a new variable each time you want to remember an old value. You could, e.g., put a custom symbol property on the variable symbol with the old value (or list of old values) you wanted to store. Or maintain a single variable mapping all your variable symbols to their old values.
Emacs
A community for the timeless and infinitely powerful editor. Want to see what Emacs is capable of?!
Get Emacs
Rules
- Posts should be emacs related
- Be kind please
- Yes, we already know: Google results for "emacs" and "vi" link to each other. We good.
Emacs Resources
Emacs Tutorials
- Beginner’s Guide to Emacs
- Absolute Beginner's Guide to Emacs
- How to Learn Emacs: A Hand-drawn One-pager for Beginners
Useful Emacs configuration files and distributions
Quick pain-saver tip
The function add-variable-watcher
registers a callback that is invoked whenever the variable's value changes. You could use it to save old values in a list or other data structure.
There is no built-in automatic way; you will have to backup your old values any way you want; create a bunch of new symbols, put them into a hash table, a list, or whichever else strategy you prefer.
I think themes could be used for this.
Have a look at the approach taken by the logos.el
package. There's a section in the manual called Leverage logos-focus-mode-hook.
The idea there is that when you enable the logos-focus-mode
, you'll often want to change some other minor modes and variables too. But when you disable logos-focus-mode
, you'll want those other minor modes to revert to their previous value. The Logos package provides a few convenience functions to remember the previous values, and they are automatically restored when logos-focus-mode
is turned off.
Perhaps the code for that could be made generic, instead of being coupled to the logos-focus-mode
?
A variable watcher maybe.
(add-variable-watcher
'myvar
(lambda (sym val op buf)
(when (eq op 'set)
(push val (get sym 'prior-values)))))