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:44:04 +0000

This seems a good solution for my purpose. I'm also interested in Stefan's
implementation. I will try both.

Thanks Leo.

Leo Butler <leo.butler@umanitoba.ca> writes:

> miles christopher <numbchild@gmail.com> writes:
>
>> I want to store some variables' value into another minor mode temporary 
>> variable
>> for later restore.
>>
>> Here is my Elisp code, I don't know how to implement it in FIXME and TODO. 
>> Hope
>> some Elisp master help me.
>>
>> #+begin_src emacs-lisp
>> (defvar mu4e-marker-icons-marker-list
>>   '(mu4e-headers-seen-mark
>>     mu4e-headers-new-mark
>>     mu4e-headers-unread-mark
>>     mu4e-headers-signed-mark
>>     mu4e-headers-encrypted-mark
>>     mu4e-headers-draft-mark
>>     mu4e-headers-attach-mark
>>     mu4e-headers-passed-mark
>>     mu4e-headers-flagged-mark
>>     mu4e-headers-replied-mark
>>     mu4e-headers-trashed-mark
>>     ;; thread prefix marks
>>     mu4e-headers-default-prefix
>>     mu4e-headers-has-child-prefix
>>     mu4e-headers-empty-parent-prefix
>>     mu4e-headers-first-child-prefix
>>     mu4e-headers-duplicate-prefix)
>>   "A list of markers used in mu4e.")
>>
>> (defun mu4e-marker-icons--store ()
>>   "Store user old config."
>>   (mapcar
>>    (lambda (marker-variable)
>>      ;; FIXME:
>>      `(setq
>>        ,(intern (replace-regexp-in-string
>>                  "mu4e-headers-" "mu4e-marker-icons--"
>>                  (symbol-name marker-variable)))
>>        ,(symbol-value marker-variable))
>>      )
>>    mu4e-marker-icons-marker-list))
>>
>> (defun mu4e-marker-icons--restore ()
>>   "Restore user old config."
>>   ;; TODO:
>>   (mapcar
>>    (lambda (marker-variable)
>>      ;; FIXME:
>>      `(setq
>>        marker-variable
>>        ,(symbol-value (intern (replace-regexp-in-string
>>                                "mu4e-headers-" "mu4e-marker-icons--"
>>                                (symbol-name marker-variable))))))
>>    mu4e-marker-icons-marker-list))
>> #+end_src
>
> Since you are trying to rename the variables, why not start with a list
> of conses (old . new) rather than a list of variable names?
>
> #+begin_src emacs-lisp
> (defvar mu4e-marker-icons-marker-list
>   '((mu4e-headers-seen-mark . mu4e-saved-headers-seen-mark)
>     (mu4e-headers-new-mark . mu4e-saved-headers-new-mark)
>     (mu4e-headers-unread-mark . mu4e-saved-headers-unread-mark)
>     (mu4e-headers-signed-mark . mu4e-saved-headers-signed-mark)
>     (mu4e-headers-encrypted-mark . mu4e-saved-headers-encrypted-mark)
>     (mu4e-headers-draft-mark . mu4e-saved-headers-draft-mark)
>     (mu4e-headers-attach-mark . mu4e-saved-headers-attach-mark)
>     (mu4e-headers-passed-mark . mu4e-saved-headers-passed-mark)
>     (mu4e-headers-flagged-mark . mu4e-saved-headers-flagged-mark)
>     (mu4e-headers-replied-mark . mu4e-saved-headers-replied-mark)
>     (mu4e-headers-trashed-mark . mu4e-saved-headers-trashed-mark)
>     ;; thread prefix marks
>     (mu4e-headers-default-prefix . mu4e-saved-headers-default-prefix)
>     (mu4e-headers-has-child-prefix . mu4e-saved-headers-has-child-prefix)
>     (mu4e-headers-empty-parent-prefix . 
> mu4e-saved-headers-empty-parent-prefix)
>     (mu4e-headers-first-child-prefix . mu4e-saved-headers-first-child-prefix)
>     (mu4e-headers-duplicate-prefix . mu4e-saved-headers-duplicate-prefix))
>   "A list of markers used in mu4e.")
>
> #+end_src
>
> 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)))
>
> #+end_src
>
> Leo


-- 
[ 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]