目前我正在研究一種elisp主要模式,它使跨會話使用哈希表。所以每次主模式被初始化時,表格都被加載到內存中。在會議期間和會議結束時,他們被寫入一個文件。通過讀emacs lisp中的習慣性方式序列化
(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變量)和最後的結束符。「 – tripleee
看起來簡單而可行。 ^^我會看看它是如何工作的,如果順利的話我會將你的文章標記爲答案:) –
不需要轉換爲字符串,只需在臨時緩衝區中執行'(read(current-buffer))'。 – Lindydancer