Ich habe ein Problem mit Emacs, die als Daemon mit Systemd gestartet wurden.
Bei jedem Herunterfahren / Neustart geht der Verlauf der zuletzt geöffneten Dateien in der aktuellen Sitzung verloren, wenn ich den Emacs-Daemon-Dienst nicht manuell beende. Ich denke, das liegt an der Systemd, die Emacs im Shutdown-Zustand nicht richtig töten kann.
Was kann ich tun, um dieses Problem zu lösen?
Meine aktuelle Konfiguration in init.el:
(use-package recentf
:config (progn (setq recentf-auto-cleanup 'never
recentf-max-menu-items 50
recentf-max-saved-items 400
recentf-save-file
(expand-file-name "temp/.recentf" user-emacs-directory))
(recentf-mode t)))
Systemd emacs service config:
[Unit]
Description=Emacs: the extensible, self-documenting text editor
[Service]
Type=forking
ExecStart=/usr/bin/emacs --daemon
ExecStop=/usr/bin/emacsclient --eval "(kill-emacs)"
Restart=always
User=%i
#WorkingDirectory=%h
[Install]
WantedBy=multi-user.target
emacsclient
linux
recentf
Maglight
quelle
quelle
use-package
Code funktioniert unter anderen Umständen (?), Dann scheint das einzige Problem darin zu bestehen, dasssystemd
IhrExecStop
Befehl nicht ausgeführt wird .Antworten:
Sie können die letzten Dateien kurz vor dem Herunterfahren speichern, indem Sie aufrufen
recentf-save-list
Dadurch werden Ihre letzten Dateien zum Verlauf der letzten Datei hinzugefügt.
Wenn Sie dies nicht manuell tun möchten, können Sie einen Timer hinzufügen, der dies alle 5 Minuten für Sie erledigt.
Fügen Sie dies Ihrer Konfiguration hinzu. Wenn Sie also Emacs öffnen, wird die Funktion aufgerufen und alle 5 Minuten (oder 300 Sekunden) wird diese Funktion weiter aufgerufen.
Quelle: https://emacs.stackexchange.com/a/15115/5187
quelle
Ich weiß, dass dieser Thread alt ist, aber ich bin auf dasselbe Problem in MS Windows gestoßen (dh Windows weiß, wie man den Emacs-Daemon ordnungsgemäß beendet). Ich löste das für mich durch Einhaken
recentf-save-list
interminal-delete-functions
. In meiner Init-Datei habe ich also die folgende Zeile:Dann wird die
recentf-list
aktuelle Sitzung gespeichert, wenn Sie den Emacs-Client schließen. Das hat mir gereicht, weil ich es gewohnt bin, Emacs vor dem Herunterfahren meines PCs zu schließen.quelle