Saya punya masalah dengan emacs yang dimulai sebagai daemon menggunakan Systemd.
Setiap shutdown / reboot jika saya tidak menghentikan layanan daemon emacs secara manual, riwayat file yang dibuka baru-baru ini di sesi saat ini hilang. Saya pikir ini karena Systemd yang tidak dapat membunuh Emacs dengan benar ketika dalam keadaan shutdown.
Apa yang bisa saya lakukan untuk mengatasi masalah ini?
Konfigurasi Recentf saya di 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)))
Konfigurasi layanan 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
sumber
sumber
use-package
kode Anda berfungsi dalam keadaan lain (?) Maka sepertinya satu-satunya masalah adalahsystemd
tidak menjalankanExecStop
perintah Anda .Jawaban:
Anda dapat menyimpan file terbaru sebelum dimatikan dengan menelepon
recentf-save-list
Ini menambahkan file terbaru Anda ke riwayat terkini.
Jika Anda tidak ingin melakukan ini secara manual, Anda dapat menambahkan timer yang akan melakukannya untuk Anda setiap 5 menit.
Tambahkan ini ke konfigurasi Anda. Jadi, setiap kali Anda membuka emacs, ia akan memanggil fungsi dan setiap 5 menit (atau 300 detik) ia akan memanggil fungsi itu.
Sumber: https://emacs.stackexchange.com/a/15115/5187
sumber
Saya tahu utas ini sudah lama, tetapi saya menemukan masalah yang sama di MS Windows (yaitu Windows tidak tahu cara keluar dari daemon Emacs dengan anggun). Saya memecahkan ini untuk saya dengan menghubungkan
recentf-save-list
keterminal-delete-functions
. Jadi dalam file init saya, saya memiliki baris berikut:Kemudian
recentf-list
sesi saat ini disimpan setiap kali Anda menutup klien Emacs. Ini cukup bagi saya, karena saya terbiasa menutup Emacs sebelum mematikan PC saya.sumber
Solusi lain adalah menyimpan daftar file terkini setiap kali Anda mengunjungi file baru. Baris di bawah ini ditambahkan ke file init akan melakukan pekerjaan:
sumber