Emacs Lispでファイルを文字列として読み込んで加工ー、なんてことがしたいとする。
「Emacs ファイル 読み込み」でぐぐると GNU Emacs Lispリファレンスマニュアル: ファイル - 24.3 ファイルの読み込み が出てきて、試してみると「これ、ファイルの中身が直接バッファに出てきちゃうじゃーん」と絶望することになる。
愚直
だが待ってほしい、ここはEmacsの世界だ。郷に入っては郷を従へといふ名セリフを知らないのかよ。
(with-temp-buffer
(insert-file-contents "./input.txt")
(buffer-substring-no-properties (point-min) (point-max)))
with-temp-buffer
は実にべんりなマクロで、見えないところに一時的なバッファを作ってくれる。
Current Buffer - GNU Emacs Lisp Reference Manualを参照のこと。
(buffer-substring-no-properties (point-min) (point-max)
はバッファの中身を全部文字列として得られるいかしたイディオムだぞ!
f
の時代
f.el
はいかしたファイル操作ライブラリだよ。
(f-read-text "./input.txt")
この一行で済むのでした。ちゃんちゃん♪
El-Getを使ってるなら
(el-get 'sync 'f)
とかでインストールできるよ。タブンネ。(Pull Request #1595 · dimitri/el-getがマージされてれば…!)