.emacsなの? .emacs.elなの? init.elなの?

  • 13
    いいね
  • 0
    コメント

.emacs Advent Calendar 2016初日です! Emacs Advent Calendarではありません!


私は昨年Emacsを起動するといふ記事を書きましたが、みなさんもEmacsを起動しますよね。

初期化ファイルとは

Emacsの起動時に読み込まれるスクリプトのことです。

Emacsはコアの部分こそC言語ですが、テキストエディタとしての多くの機能はEmacs Lispで実装されてゐます。つまり初期化ファイルは単なる設定ではなく、ほかのEmacsの機能と同じようにテキストエディタを形作り一部分を実装することにほかならないのです──。

などとお題目はさておいて、公式マニュアルを読んでみます。

いまはayatakesiさんの最新版のEmacs日本語マニュアルがあるからべんりですね ヾ(〃><)ノ゙☆

Emacsを開始したとき、Emacsは通常、初期化ファイル(initialization file)、短くはinitファイルから、Lispプログラムのロードを試みます。このファイルは、もし存在する場合は、Emacsをどのように初期化するかを指定します。Emacsはファイル名~/.emacs~/.emacs.el~/.emacs.d/init.elを使用してinitファイルを探します。これら3つのファイル名から、使用するものを選択できます(Find Initを参照してください)。ここで~/は、ホームディレクトリーを意味します。

要は~.emacs~/.emacs.el~/.emacs.d/init.elの順番に検索されるってことですね。問題は、このうち複数のファイルがあったときはひとつしか読み込まれないので、どれかひとつに決めておく必要はあります。

昨年も書いたことではあるのですが、実はこのみっつのファイルのどれが推奨・非推奨といったことはマニュアルにもソースコード中にも書かれてません。

表記について

Emacs JPコミュニティで2014年から毎週土曜22:00から開催されてるinit.el読書会init.elの表記を採ってゐます。

「Emacsテクニックバイブル」などの著書やブログ「新生日刊Emacs」やメールマガジン「Emacsの鬼るびきちのココだけの話」で今なほ精力的に情報発信されてるるびきち(@rubikitch)さんは以下のような方針を採ってゐます。

Emacs起動時に読み込まれる初期設定ファイルは
~/.emacs~/.emacs.d/init.el などがありますが、
本メルマガでは伝統的に「.emacs」と表記しています。
初期設定ファイルに書き加えることを「設定を加える」
と表現しています。

どっちでも意味は同じなので、みなさま好きなように(ry

ちなみに私は、るびきちさんに近い方式の両併記で記述してます(例: auto-complete環境で補完の大文字小文字を区別する - Qiita)。

本文では`.emacs`と、コードブロックのファイル名には`.emacs.d/init.el`と書いてある

ヾ(〃><)ノ゙.。o( まったく気に留められてなささう… )

結局どれがいいのさ

ここまで「どっちでもいい」と引っ張っておいて、私は~/.emacs.d/init.el推しです。

その理由としてはdotfilesの管理しやすさですね。私の.emacs.d/init.elはEmacsを利用しはじめた頃からずっとGitHubに置いてあるのですが、.emacs.emacs.elはホームディレクトリに置かなければならないのでシンボリックリンクを貼ったとしてもgit commitするためにはディレクトリ移動の手間があって1管理が面倒くさいのです2。一方で.emacs.d/init.elを編集した状態でM-x magit-statusをすると、カレントディレクトリが~/.emacs.d/に移動した状態になってますので、そのままコミットができるので捗ります。

ちなみに私は~/local/dotfiles.emacs.dやら.zshrcやら.vimrcやらやらを含めたzonuexe/dotfiles: @zonuexe's dotfiles (.emacs, .zsh*, .profile... etc.)git cloneしてきて、rake symlinkでシンボリックリンクを自動生成する方式を採ってます。

ちなみにこのファイルはMacBook、会社の開発サーバー、個人のVPSなどすべてのUNIXログイン環境で同じものを利用してます。コミットログとか綺麗な編集単位に拘るとめんどくさいので、特に重要な変更でもしない限りは「Update」としか書きません。他人のためのプロジェクトではなく自分が複数マシンで共有することが最優先のリポジトリなので、このぐらゐの雑さで良いのです ヾ(〃><)ノ゙

あしたの.emacsアドベントカレンダーは?

おにぎりのアイコンでお馴染みの@g000001さんです! (#:g1には豊富なLisp情報がありますが、なかでも私の好きな記事は#:g1: MIT LOOPの紹介です。並走中のレトロ Lisp Advent Calendar 2016も楽しみ!)

ちなみにこのあとの私の.emacsアドベントカレンダー担当回では、もっとカジュアルな内容を書いていくつもりです ヾ(〃><)ノ゙

脚注


  1. ホームディレクトリ直下に.gitを置いて丸ごと管理しようとしない限り 

  2. ファイルを開いた時点でdefault-directoryを変更するとかの方法もあるけど、それはそれでめんどくさくない? 

この投稿は .emacs Advent Calendar 20161日目の記事です。