Derzeit arbeite ich an einem elisp Major-Modus, der Hash-Tabellen über Sitzungen hinweg verwendet. Jedes Mal, wenn der Hauptmodus initialisiert wird, werden die Tabellen in den Speicher geladen. Während und am Ende der Sitzung werden sie in eine Datei geschrieben. Meine aktuelle Implementierung schreibt die Daten auf folgende Weise:Idiomatische Art und Weise Serialisierung in Emacs lisp
(with-temp-buffer
(prin1 hash-table (current-buffer))
(write-file ("path/to/file.el"))))
die Daten zu Beginn der Sitzung Laden wird über Lesedurchgeführt und ist in etwa so:
(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))))))))
Es funktioniert, aber ich habe die Gefühl, dass dies nicht der schönste Weg ist, es zu tun. Mein Ziel ist: Ich möchte, dass dieser Hauptmodus zu einem schönen, sauberen Paket wird, das seine eigenen Daten in dem Ordner speichert, in dem die anderen Daten des Pakets gespeichert sind.
Setzen Sie den Initialisierer in den Lisp Code, den Sie auf jeden Fall die Bewertung sind? Speichert Sie beim Lesen von irgendwelchen komplizierten Sachen - dann können Sie einfach "eval-buffer" und der Code, den Sie beim Schreiben hinzufügen, einfach "setq variable" und der abschließende Buchstabe am Ende sein. – tripleee
sieht einfach und machbar aus. ^^ Ich werde sehen, wie das funktioniert und wenn es reibungslos geht werde ich Ihren Beitrag als Antwort taggen :) –
Keine Notwendigkeit, in eine Zeichenfolge zu konvertieren, tun Sie einfach '(lesen (current-buffer))' in den temporären Puffer. – Lindydancer