help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to store list of variable values into another dynamically create


From: miles christopher
Subject: Re: How to store list of variable values into another dynamically created variables
Date: Wed, 6 Jan 2021 02:47:07 +0000

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> Your save and restore functions are then dead easy:
>>
>> #+begin_src emacs-lisp
>> (defun mu4e-save (l)
>>        (mapcar (lambda(x) (set (cdr x) (symbol-value (car x)))) l))
>>
>> (defun mu4e-restore (l)
>>  (let ((lrev (mapcar (lambda(x) (cons (cdr x) (car x))) l)))
>>        (mu4e-save lrev)))
>
> FWIW, in most of the minor modes where I've needed such a thing, I found
> it more convenient to use a single "save" variable, e.g. something like:
>
>     (defvar FOO--saved-vals nil)
>
>     (define-minor-mode FOO-mode
>       "blabla FOO blabla"
>       ;; Revert to original values.
>       (dolist (x (prog1 FOO--saved-vals (setq FOO--saved-vals nil)))
>         (if (consp x)
>             (set (car x) (cdr x))
>           (mkunbound x)))
>       ;; Set minor mode's values.
>       (when FOO-mode
>         (setq FOO--saved-vals
>               (mapcar (lambda (v)
>                         (if (boundp v) (cons v (symbol-value v)) v))
>                       '(mu4e-headers-seen-mark
>                         ...
>                         mu4e-headers-duplicate-prefix)))
>         ..etc..))
>
>
> -- Stefan

Maybe can provide a simple package for this purpose? And include it in Emacs /
GNU ELPA will be available for some package developers. WDYT?

Indeed, because some minor modes are based on another mode. As a minor mode,
should provide a mechanism to store and restore original settings. Of course,
not provided is also acceptable.

-- 
[ stardiviner ]
       I try to make every word tell the meaning that I want to express.

       Blog: https://stardiviner.github.io/
       IRC(freenode): stardiviner, Matrix: stardiviner
       GPG: F09F650D7D674819892591401B5DF1C95AE89AC3



reply via email to

[Prev in Thread] Current Thread [Next in Thread]