Me gusta usar el recentf
modo en Emacs que produce una lista de archivos que he abierto recientemente. Esta lista es persistente entre sesiones, por lo que puedo acceder a los archivos que utilicé hace bastante tiempo.
Sin embargo, recientemente comencé a usar Emacsclient para conectarme a un servidor Emacs que se enciende automáticamente cuando lo registro. En general, esta fue una gran mejora. Sin embargo, el recentf
modo comenzó a perder la mayoría de los archivos que abría cada vez que reiniciaba mi computadora. Recuerda algunos de ellos, y no puedo ver un patrón en el que se graben los archivos.
¿Cómo puedo solucionar este comportamiento? ¿Cómo puedo hacer que grabe todos los archivos que visito y los recuerde entre sesiones?
emacs -nw
, cargando el servidor y recientef, luego ejecutérecentf-mode 1
yserver-start
en ese orden y no pude reproducir su problema. ¿Puede publicar su archivo .emacs en algún lugar (como un pastebin) junto con un ejemplo de cómo está iniciando emacs y emacsclient?emacsclient -c --alternate-editor="" %f
. El problema podría ser que no cierre Emacs antes de apagar mi computadora, pero no estoy seguro. Matar manualmente Emacs antes de apagarlo parece ayudar, pero esa no es una gran solución.Respuestas:
Estaba teniendo exactamente el mismo problema y lo resolví haciendo dos cambios. Primero siguiendo esta publicación , creé una función para invocar automáticamente
recentf-save-list
en un temporizador. Por lo tanto, cada pocos minutos, reescribimos automáticamente el archivo ~ / .recentf:La otra cosa que hice fue agregar un script de apagado a mi administrador de pantalla (lightdm) que cerraba con gracia el servidor de emacs cada vez que me desconectaba o apagaba. La forma en que haga esto dependerá de su administrador de pantalla, pero mi script simplemente se ve así
También sería bueno tener un gancho que se vuelva a ejecutar automáticamente
recentf-save-list
cada vez que un cliente se "desconecta" del servidor, pero no pude descubrir los ganchos adecuados.fuente
server-done-hook
. Personalmente usoserver-visit-hook