GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/emacs/Find-Init.html ・ emacs-doc.conao3.com

51.4.4 EmacsがInitファイルを探す仕組み

Emacsは通常、ホームディレクトリ配下の場所からinitファイルを探します37。Emacs初期化ファイルを参照してください。

Emacsは、~/.emacs.el、~/.emacs、~/.emacs.d/init.elというファイル名の順にinitファイルを探します。これらの名前のいずれかを選択して使用できます。(なお、ホームディレクトリ直下の場所のみ、パスのベース名の先頭にドットが付く点にご注意ください。)

Emacsはまた、XDG準拠の場所からinit.elを探すこともでき、デフォルトは~/.config/emacsディレクトリです。これは環境変数にXDG_CONFIG_HOMEを設定することで上書きでき、その値がデフォルトのXDG初期化ファイルのファイル名にある~/.configを置き換えます。ただし、~/.emacs.d、~/.emacs、~/.emacs.elが存在する場合は常にこれらが優先されるため、XDGの場所を利用するにはこれらを削除するか名前を変更する必要があります。

また、XDGのロケーションも~/.emacs.dも存在しない場合、Emacsは~/.emacs.dを作成し(したがって、それ以降の起動時にそれを使用します)点にも注意してください。

Emacs will set user-emacs-directory to the directory it decides to use. This directory is subsequently used to look for your other user-specific Emacs files, such as custom-file (see Saving Customizations), the saved desktop (see Saving Emacs Sessions) and others. It is also used to compute the value of the native-comp-eln-load-path (see Libraries of Lisp Code for Emacs), which is where Emacs looks for natively-compiled Lisp code and where it deposits the newly-compiled Lisp code produced by asynchronous compilation of packages your init files and the subsequent Emacs session load. The --init-directory command-line option (see Initial Options) overrides the value of user-emacs-directory determined as side effect of the search for your user init file described above.

Emacsによって一度決定された user-emacs-directory は、その後の起動コードで他のファイルやディレクトリを特定するために使用されるため、initファイルでその値を変更することは推奨しません。これにより、Emacsセッションの正常な起動が妨げられたり、不具合が生じたりする恐れがあるためです。

これは旧バージョンのEmacsとの後方互換性はありますが、現代のPOSIXプラットフォームでは、初期化ファイルを~/.config配下に配置することが推奨されています。そうすることで、不適切な初期化ファイルに起因する可能性のある問題のトラブルシューティングや、初期化ファイル群のアーカイブ作成を、そのディレクトリ名を変更するだけで行うことができます。旧バージョンのEmacsが現在のデフォルトの場所から設定ファイルを見つけられるよう、以下のEmacs Lispコードを実行してください:

(make-symbolic-link ".config/emacs" "~/.emacs.d")

ただし、su で起動したシェルから Emacs を実行し、環境変数 XDG_CONFIG_HOME が設定されていない場合、Emacs は現在なりすましているユーザーの初期化ファイルではなく、あなた自身の初期化ファイルを探そうとします。これは、スーパーユーザーとして実行している場合でも、自分自身のエディタカスタマイズが適用されるようにするという意図によるものです。

より正確には、Emacsはまずどのユーザーのinitファイルを使用するかを決定します。環境変数LOGNAMEおよびUSERからユーザー名を取得し、どちらも存在しない場合は実効ユーザーIDを使用します。そのユーザー名が実際のユーザーIDと一致する場合、EmacsはHOMEを使用します。そうでない場合は、そのユーザー名に対応するホームディレクトリをシステムのユーザーデータベースから検索します。

簡潔にするため、Emacsドキュメントのその他の箇所では、一般的に初期化ファイルの指定に現在のデフォルトの場所 ~/.emacs.d/init.el のみが用いられています。


脚注

(37)

MS-Windowsでは、すべてのプログラムがユーザーの「ホームディレクトリ」として扱う単一のディレクトリは存在しません。Emacsは、該当するディレクトリのうちの一つをホームディレクトリ相当として使用します。詳細については、MS-WindowsにおけるHOMEと起動ディレクトリを参照してください。