計算物理屋の研究備忘録

Linux, Cygwin, Mac, zsh, emacs等の使い方、設定などのメモ

Emacsのrecentf関係の設定

目次

recentf

最近使ったファイルのリストを保存しておく機能。find-fileで開いたファイル履歴を保存する。デフォルトで入っているので設定だけ書けば使える。

ターミナルから普通にファイルをEmacsで開いたり、ディレクトリをdiredで開いたりする履歴はrecentfではとってくれない。
recentf-extを合わせて使うと上記すべての履歴を保存してくれる。これはパッケージをインストールする必要あり

recent-ext

ここを参考

人は俺を「recentfマスター」と呼ぶ - http://rubikitch.com/に移転しました

Emacsのパッケージ管理機能を使ってインストールするだけ。

自動保存

履歴はデフォルトでは~/.recentfに保存される。.recentfファイルが保存されるタイミングは、recent-modeをオフにしたときかEmacsを終了したとき。emacsclientを使っていると故意にEmacsを終了させない限り起動しっぱなしになって、.recentfが保存されるタイミングがない。Emacsが強制終了(PCの電源切ったときとか)すると.recentfが保存されないままになってしまう。

.recentfを自動保存する設定の参考サイト

エコーエリアに無駄な表示を出さない

2016年4月13日 追記

ここのサイトを参考にして丸パクリさせてもらう。

qiita.com

cleaning upしない

recentf-auto-cleanupが有効になっていると自動で存在しないファイル履歴を消してくれる。ただし外付けHDDやサーバーに繋がってない状態でそれをするとそのファイル履歴も消える。特に必要でもないのでオフにする。手動でもコマンドを実行できるし。

設定まとめ

ファイルの保存場所は~/.emacs.d/.recentfに変えてある。

(defmacro with-suppressed-message (&rest body)
  "Suppress new messages temporarily in the echo area and the `*Messages*' buffer while BODY is evaluated."
  (declare (indent 0))
  (let ((message-log-max nil))
    `(with-temp-message (or (current-message) "") ,@body)))

(require 'recentf)
(setq recentf-save-file "~/.emacs.d/.recentf")
(setq recentf-max-saved-items 1000)            ;; recentf に保存するファイルの数
(setq recentf-exclude '(".recentf"))           ;; .recentf自体は含まない
(setq recentf-auto-cleanup 'never)             ;; 保存する内容を整理
(run-with-idle-timer 30 t '(lambda ()          ;; 30秒ごとに .recentf を保存
   (with-suppressed-message (recentf-save-list))))
(require 'recentf-ext)