Эта подпрограмма 'dump-vars-to-file
создаст некоторые выражения, которые можно прочитать, просто проанализировав выражения позже (с помощью команды 'load
или 'read
):
(defun dump-vars-to-file (varlist filename)
"simplistic dumping of variables in VARLIST to a file FILENAME"
(save-excursion
(let ((buf (find-file-noselect filename)))
(set-buffer buf)
(erase-buffer)
(dump varlist buf)
(save-buffer)
(kill-buffer))))
(defun dump (varlist buffer)
"insert into buffer the setq statement to recreate the variables in VARLIST"
(loop for var in varlist do
(print (list 'setq var (list 'quote (symbol-value var)))
buffer)))
Я уверен, что ямне не хватает какой-то встроенной подпрограммы, которая выполняет более приятную работу или является более гибкой.
Я проверил ее с помощью этой небольшой подпрограммы:
(defun checkit ()
(let ((a '(1 2 3 (4 5)))
(b '(a b c))
(c (make-vector 3 'a)))
(dump-vars-to-file '(a b c) "/some/path/to/file.el")))
, которая выдала результат:
(setq a (quote (1 2 3 (4 5))))
(setq b (quote (a b c)))
(setq c (quote [a a a]))
Подробнее см. На информационной странице чтение и печать объектов lisp