Bagaimana saya bisa mendapatkan mode terkini untuk bekerja dengan emacs server / klien?

9

Saya suka menggunakan recentf mode di Emacs yang menghasilkan daftar file yang baru saja saya buka. Daftar ini persisten di antara sesi, sehingga saya bisa mendapatkan file yang saya gunakan cukup lama.

Namun, saya baru-baru ini mulai menggunakan Emacsclient untuk terhubung ke server Emacs yang secara otomatis dihidupkan ketika saya login. Secara keseluruhan, ini merupakan peningkatan besar. Namun, recentfmode mulai kehilangan sebagian besar file yang saya buka setiap kali saya me-restart komputer saya. Itu mengingat beberapa dari mereka, dan saya tidak bisa melihat pola di mana file direkam.

Bagaimana saya bisa memperbaiki perilaku ini? Bagaimana saya bisa merekam semua file yang saya kunjungi dan mengingatnya di antara sesi?

Tikhon Jelvis
sumber
3
Saya memiliki masalah yang sama, akan lebih baik untuk melihat solusinya!
siswa
Saya mencoba menggunakan ini emacs -nw, memuat server dan latestf, kemudian menjalankan recentf-mode 1dan server-startdalam urutan itu dan tidak dapat mereproduksi masalah Anda. Bisakah Anda memposting file .emacs Anda di suatu tempat (seperti pastebin) bersama dengan contoh bagaimana Anda memulai emacs dan emacsclient?
jlp
Ini file .emacs saya . Saya menggunakan Fedora dan saya menginstal Emacs dengan Yum; itu menciptakan peluncur untuk Klien Emacs dan itulah yang saya gunakan. Peluncur baru saja berjalan emacsclient -c --alternate-editor="" %f. Masalahnya mungkin dengan saya tidak menutup Emacs sebelum mematikan komputer saya, tapi saya tidak yakin. Membunuh Emacs secara manual sebelum mematikan tampaknya membantu, tetapi itu bukan solusi yang bagus.
Tikhon Jelvis
Hmmm, saya tidak melihat server-mulai di .emacs Anda, saya menganggap itu memulai dengan --daemon ketika Anda login. Saya mencurigai beberapa jenis masalah pemesanan dengan mengaktifkan Recentf dan memulai server.
jlp

Jawaban:

8

Saya mengalami masalah yang sama persis, dan saya menyelesaikannya dengan membuat dua perubahan. Pertama kali setelah posting ini , saya membuat fungsi untuk secara otomatis memanggil recentf-save-listtimer. Maka setiap beberapa menit, kami secara otomatis menulis ulang file ~ / .recentf:

(run-at-time nil (* 5 60) 'recentf-save-list)

Hal lain yang saya lakukan adalah menambahkan skrip shutdown ke display manager (lightdm) saya yang dengan anggun menutup server emacs setiap kali saya logout atau shutdown. Cara Anda melakukan ini akan tergantung pada manajer tampilan Anda, tetapi skrip saya terlihat seperti itu

#!/bin/bash
emacsclient -e "(save-buffers-kill-emacs)"

Akan lebih baik jika memiliki kait yang secara otomatis dijalankan kembali recentf-save-listsetiap kali klien "terputus" dari server, tetapi saya tidak dapat menemukan kait yang tepat.

jarvisschultz
sumber
2
Ini server-done-hook. Secara pribadi saya menggunakanserver-visit-hook
tungd