【发布时间】:2016-03-24 05:34:26
【问题描述】:
目前我正在研究一种 elisp 主要模式,该模式在会话中使用哈希表。所以每次初始化主模式时,表都会被加载到内存中。在会话期间和结束时,它们被写入文件。我当前的实现以以下方式写入数据:
(with-temp-buffer
(prin1 hash-table (current-buffer))
(write-file ("path/to/file.el"))))
在会话开始时加载数据是通过读取完成的,如下所示:
(setq name-of-table (car
(read-from-string
(with-temp-buffer
(insert-file-contents path-of-file)
(buffer-substring-no-properties
(point-min)
(point-max))))))))
它有效,但我觉得这不是最漂亮的方式。我的目标是:我希望这个主要模式变成一个漂亮的干净包,将它自己的数据存储在存储包的其他数据的文件夹中。
【问题讨论】:
-
将初始化程序放入您正在评估的 Lisp 代码中?让您在阅读时免于做任何复杂的事情 - 然后您只需
eval-buffer并且您在编写时添加的代码只需为(setq variable和最后的结束括号。 -
看起来简单可行。 ^^ 我会看看它是如何工作的,如果进展顺利,我会将您的帖子标记为答案。 :)
-
无需转成字符串,只需在临时缓冲区中做
(read (current-buffer))即可。