Emacsの標準機能が
「いつもどおり」の環境を作るのに
便利
(save-place-mode)

The 6 Emacs Settings Every User Should Consider」を見て、Emacsには、パッケージを何も入れなくても、快適に作業するための機能が最初から揃っていることにびっくりしました。

多くのソフトでは、新機能が追加されるとデフォルトでオンになり、「機能の押し付け」があります。
一方、Emacsでは、標準機能でも自分で見つけないと使えないんですね。

;; 作業の文脈を記憶
(recentf-mode 1)
(savehist-mode 1)
(save-place-mode 1)

;; 思考を止めない環境
(global-auto-revert-mode 1)
(setq auto-revert-remote-files t)
(setq global-auto-revert-non-file-buffers t)
(setq use-dialog-box nil)

;; 設定の分離
(setq custom-file (locate-user-emacs-file "custom-vars.el"))
(load custom-file 'noerror)
Code language: PHP (php)

関連記事

1. 作業の文脈を記憶させる

エディタを開くたびに「さっきどこまでやったっけ」と思い出す時間は、意外と負担になります。
Emacsにはこの問題を解決する3つの機能があります。

;; 作業の文脈を記憶する
(recentf-mode 1)
(savehist-mode 1)
(save-place-mode 1)

1.1. recentf-mode

recentf-modeは最近使ったファイルを記憶してくれます。
「あのファイル、どこだっけ」と探す手間が減るのは思った以上に快適です。

1.2. savehist-mode

savehist-modeを有効にすると、ミニバッファで打ったコマンドや検索ワードの履歴が次回も使えます。
何度も同じ単語を検索するときに、毎回タイプし直す必要がなくなります。

1.3. save-place-mode

そして、save-place-mode
これはファイルを開いたとき、前回閉じた場所にカーソルを戻してくれる機能です。
長い文章を編集しているときに、開くたびにファイルの先頭に戻されるストレスから解放されます。

2. 思考を止めない環境を作る

作業中に突然「このファイルが変更されました。
再読み込みしますか?」と聞かれると、集中が途切れます。
Gitで別のブランチに切り替えたときなど、こうした場面は頻繁に起こります。

2.1. global-auto-revert-mode

global-auto-revert-modeを有効にしておくと、ディスク上でファイルが変わったときに自動で再読み込みしてくれます。
確認のダイアログも出ません。

(global-auto-revert-mode 1)
(setq auto-revert-remote-files t)
(setq global-auto-revert-non-file-buffers t)
Code language: PHP (php)

2.2. auto-revert-remote-files

Auto Revertモードはリモートファイルのチェックやリバートは、通常は低速なので行いません。この挙動は変数auto-revert-remote-filesを非nilにセットして変更できます。

2.3. global-auto-revert-non-file-buffers

2行目の設定を加えると、Dired(ファイル管理画面)なども自動更新されます。
ディレクトリの中身が変わったのに表示が古いまま、という状況がなくなるわけです。

3. 設定ファイルを汚さない工夫

Emacsのカスタマイズ画面(M-x customize)を使うと、設定が自動的にinit.elに書き込まれます。
自分で書いたコードと混ざると、後で読み返したときに「これは何だったか」と混乱することがあります。

この問題にはcustom-fileという変数で対処できます。

(setq custom-file (locate-user-emacs-file "custom-vars.el"))
(load custom-file 'noerror)
Code language: PHP (php)

自動生成されたコードは別のファイルに保存され、init.elは自分が意図した設定だけが残ります。

4. 標準機能にある

これらは「エディタとの対話を減らす」設定です。

これらの機能はすべてEmacs本体に含まれています。
つまり、インターネットに接続できない環境でも、新しいPCでも、設定ファイルさえあればすぐに同じ環境を再現できます。

機能導入バージョンリリース年補足
recentf (最近使ったファイル)21.12001年GUI機能が大幅強化された際に追加
savehist (入力履歴保存)22.12007年以前は外部パッケージが主流でした
save-place (カーソル位置記憶)19.341996年機能自体は古く、25.1で使いやすく改善
custom-file (設定の分離)20.11997年Custom UIが導入された際から存在
auto-revert (自動更新)21.12001年global-auto-revert-mode として導入

標準機能はEmacsの歴史とともにメンテナンスされているため、10年後も同じコードが動く可能性が高いのです。

ファイルの状態を自動で同期する。
前回の作業状態を記憶しておく。
これらはすべて、「ユーザーが判断や操作を求められる場面」を減らす方向に働きます。

言い換えると、Emacsを「道具」から「環境」に変えるための設定だと捉えています。
道具は使うたびに準備が必要ですが、環境は入った瞬間から作業を始められます。