Ich verwende gerne den recentf
Modus in Emacs, der eine Liste der Dateien erstellt, die ich kürzlich geöffnet habe. Diese Liste bleibt zwischen den Sitzungen bestehen, sodass ich zu Dateien gelangen kann, die ich vor einiger Zeit verwendet habe.
Vor kurzem habe ich jedoch begonnen, Emacsclient zu verwenden, um eine Verbindung zu einem Emacs-Server herzustellen, der beim Protokollieren automatisch aktiviert wird. Insgesamt war dies eine große Verbesserung. Im recentf
Modus fehlten jedoch die meisten Dateien, die ich beim Neustart meines Computers geöffnet hatte. Es erinnert sich an einige von ihnen, und ich kann kein Muster sehen, in dem Dateien aufgezeichnet werden.
Wie kann ich dieses Verhalten beheben? Wie kann ich alle Dateien, die ich besuche , aufzeichnen und zwischen den Sitzungen speichern?
emacs -nw
Server und Recentf geladen, dann ausgeführtrecentf-mode 1
undserver-start
in dieser Reihenfolge ausgeführt habe und konnte Ihr Problem nicht reproduzieren. Können Sie Ihre .emacs-Datei irgendwo veröffentlichen (z. B. in einem Pastebin), zusammen mit einem Beispiel dafür, wie Sie Emacs und Emacsclient starten?emacsclient -c --alternate-editor="" %f
. Das Problem könnte sein, dass ich Emacs nicht schließe, bevor ich meinen Computer ausschalte, aber ich bin mir nicht sicher. Das manuelle Töten von Emacs vor dem Abschalten scheint zu helfen, aber das ist keine gute Lösung.Antworten:
Ich hatte genau das gleiche Problem und habe es durch zwei Änderungen gelöst. Als erstes habe ich nach diesem Beitrag eine Funktion erstellt, die automatisch
recentf-save-list
für einen Timer aufgerufen wird. Daher schreiben wir alle paar Minuten die ~ / .recentf-Datei automatisch neu:Das andere, was ich getan habe, war, meinem Display-Manager (lightdm) ein Skript zum Herunterfahren hinzuzufügen, das den Emacs-Server bei jedem Abmelden oder Herunterfahren ordnungsgemäß schloss. Wie Sie dies tun, hängt von Ihrem Display-Manager ab, aber mein Skript sieht einfach so aus
Es wäre auch schön, einen Hook zu haben, der
recentf-save-list
jedes Mal automatisch neu ausgeführt wird, wenn ein Client vom Server "getrennt" wird, aber ich konnte die richtigen Hooks nicht herausfinden.quelle
server-done-hook
. Persönlich benutze ichserver-visit-hook