どうすればemacsサーバー/クライアントでrecentf-modeを動作させることができますか?


9

recentf 最近開いたファイルのリストを生成するEmacsのモードを使用するのが好きです。このリストはセッション間で保持されるため、かなり前に使用したファイルにアクセスできます。

しかし、最近、Emacsclientを使用して、Emacsサーバーに接続し始めました。このサーバーは、ログに記録すると自動的にオンになります。全体として、これは大きな改善でした。しかし、コンピューターを再起動するたびに、開いたファイルのほとんどrecentfモードから欠落し始めました。それらのいくつかを覚えおり、ファイルが記録されるパターンを見ることができません。

この動作を修正するにはどうすればよいですか?アクセスしたすべてのファイルを記録、セッション間でそれらを覚えておくにはどうすればよいですか?


3
私は同じ問題を抱えています、解決策を見るのは素晴らしいことです!
学生、

私はを使用してこれを試しemacs -nw、サーバーとrecentfをロードしてから実行recentf-mode 1server-start、この順序で実行したところ、問題を再現できませんでした。emacsとemacsclientの起動方法の例とともに、.emacsファイル(ペーストビンなど)をどこかに投稿できますか?
jlp 2012

これが私の.emacsファイルです。私はFedoraを使用していて、EmacsをYumとともにインストールしました。Emacsクライアント用のランチャーを作成し、それを使用しています。ランチャーが実行されるだけemacsclient -c --alternate-editor="" %fです。問題は、コンピューターの電源を切る前にEmacsを閉じなかったことにある可能性がありますが、よくわかりません。シャットダウンする前に手動でEmacsを終了することは役立つようですが、それは素晴らしい解決策ではありません。
Tikhon Jelvis 2012

うーん、.emacsにserver-startが表示されませんでした。ログインすると--daemonで開始されると思います。recentfを有効にしてサーバーを起動すると、何らかの順序の問題が発生しているのではないかと思います。
jlp

回答:


8

私はこれとまったく同じ問題を抱えていましたが、2つの変更を加えることで解決しました。最初にこの投稿に続いrecentf-save-listて、タイマーを自動的に呼び出す関数を作成しました。したがって、数分ごとに〜/ .recentfファイルを自動的に書き換えます。

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

私が行ったもう1つのことは、ログアウトまたはシャットダウンするたびにemacsサーバーを正常に閉じるシャットダウンスクリプトをディスプレイマネージャー(lightdm)に追加することでした。これを行う方法はディスプレイマネージャーによって異なりますが、私のスクリプトは単純に次のようになります。

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

またrecentf-save-list、クライアントがサーバーから「切断」されるたびに自動的に再実行されるフックがあると便利ですが、適切なフックを理解できませんでした。


2
ですserver-done-hook。個人的に私の使用server-visit-hook
tungd
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.