save-sexp 

概要

この save-sexp.el は2つの側面があります。

  • 設定ファイルに現在の設定値のsetqを挿入する
  • 変数の値をファイルに書き出し 永続化 する

ユーザサイドにとって嬉しいのが前者、
elispプログラマにとって嬉しいのが後者です。

Emacsの設定ファイルをいじるとき、
多くの場合はsetqで変数を設定しますが、
わざわざsetqフォームを手入力するのは面倒です。

そこで本設定で定義した M-x insert-setq
カレントバッファに変数の現在値のsetqを挿入させます。

C-c C-iに割り当てているので、
サクッと設定を加えてしまいましょう。

20150508053331.png
Fig1: C-c C-iで変数名を入力

20150508053334.png
Fig2: 現在値のsetqが入力される!

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてsave-sexpを使う方は
以下のコマンドを実行します。

M-x package-install save-sexp

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name save-sexp

elispプログラマ向け

変数の値をファイルに書き出す save-sexp-save-setq 関数は
ファイル名と変数名を指定するだけでそのファイルに書き出されます。

たとえば、 minibuffer-history を書き出すには

(save-sexp-save-setq "~/.emacs.d/minibuffer-history.el" 'minibuffer-history)

と書くだけで ~/.emacs.d/minibuffer-history.el に保存されます。

内容は (setq minibuffer-history 〜) のみであり、
きれいに整形(pretty-print)されています。

後は

(load "~/.emacs.d/minibuffer-history.el")

と書けば復元できます。

永続化するライブラリには
stash.el(レビュー) がありますが、
こっちの方が1変数1ファイルとかなりシンプルです。

まさに1粒で2度おいしいelispプログラムです。

本サイト内の関連パッケージ


本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。