我如何才能使最近的模式与emacs服务器/客户端一起使用?


9

我喜欢recentf 在Emacs中使用mode来产生我最近打开的文件列表。该列表在会话之间是持久的,因此我可以访问相当长时间以前使用的文件。

但是,我最近开始使用Emacsclient连接到Emacs服务器,该服务器在登录时会自动打开。总体而言,这是一个很大的进步。但是,每当重新启动计算机时,recentfmode就会开始丢失我打开的大多数文件。它记得其中一些,而且我看不到记录文件的模式。

如何解决此问题?如何获取记录访问的所有文件并在会话之间记住它们的信息?


3
我有同样的问题,很高兴看到一个解决方案!
学生

我尝试使用emacs -nw,加载服务器和centralf,然后按此顺序运行recentf-mode 1server-start但无法重现您的问题。您可以将.emacs文件发布到某个地方(例如pastebin),以及如何启动emacs和emacsclient的示例吗?
jlp 2012年

这是我的.emacs文件。我正在使用Fedora,并在Yum中安装了Emacs;它为Emacs Client创建了启动器,这就是我使用的启动器。启动器刚刚运行emacsclient -c --alternate-editor="" %f。问题可能出在关闭计算机之前我没有关闭Emacs,但是我不确定。在关机之前手动杀死Emacs似乎有所帮助,但这不是一个很好的解决方案。
Tikhon Jelvis

嗯,我没有在您的.emacs中看到服务器启动,我认为它是在您登录时使用--daemon入门的。我怀疑启用了lastf和启动服务器时会出现某种排序问题。
jlp 2012年

Answers:


8

我遇到了完全相同的问题,并通过进行两项更改解决了该问题。首先,在这篇文章之后,我创建了一个自动recentf-save-list在计时器上调用的函数。因此,每隔几分钟,我们会自动重写〜/ .recentf文件:

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

我要做的另一件事是向我的显示管理器(lightdm)添加一个关闭脚本,该脚本在每次注销或关闭时都会正常关闭emacs服务器。您执行此操作的方式取决于您的显示管理器,但是我的脚本看起来像

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

recentf-save-list每次客户端与服务器“断开连接”时都自动重新运行一个钩子也是很好的选择,但是我找不到合适的钩子。


2
server-done-hook。我个人使用server-visit-hook
tungd 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.