J'ai un problème avec emacs démarré en tant que démon en utilisant Systemd.
À chaque arrêt / redémarrage, si je n'arrête pas le service démon emacs manuellement, l'historique des fichiers ouverts récents dans la session en cours est perdu. Je pense que c'est à cause de Systemd qui ne peut pas tuer correctement Emacs lorsqu'il est dans un état d'arrêt.
Que puis-je faire pour résoudre ce problème?
Ma config récente dans 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)))
Configuration du service emacs Systemd:
[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
la source
la source
use-package
code fonctionne dans d'autres circonstances (?), Il semblerait que le seul problème est quesystemd
laExecStop
commande ne s'exécute pas .Réponses:
Vous pouvez enregistrer les fichiers récents juste avant l'arrêt en appelant
recentf-save-list
Cela ajoute vos fichiers récents à l'historique recentf.
Si vous ne voulez pas le faire manuellement, vous pouvez ajouter une minuterie qui le fera pour vous toutes les 5 minutes.
Ajoutez ceci à votre configuration. Donc, chaque fois que vous ouvrez emacs, il appellera la fonction et toutes les 5 minutes (ou 300 secondes), il continuera d'appeler cette fonction.
Source: https://emacs.stackexchange.com/a/15115/5187
la source
Je sais que ce fil est ancien, mais j'ai rencontré le même problème dans MS Windows (c'est-à-dire que Windows sait comment quitter le démon Emacs avec élégance). Je résolu ce problème pour moi en accrochant
recentf-save-list
dansterminal-delete-functions
. Donc, dans mon fichier init, j'ai la ligne suivante:Ensuite, la
recentf-list
session en cours est enregistrée chaque fois que vous fermez le client Emacs. Cela m'a suffi, car j'ai l'habitude de fermer Emacs avant d'arrêter mon PC.la source
Une autre solution consiste à enregistrer la liste des fichiers recentf chaque fois que vous visitez un nouveau fichier. La ligne ci-dessous ajoutée au fichier init fera le travail:
la source