マルチバイト文字が有効になっていれば、Emacsのバッファではサポートされているすべての文字セットが利用可能であり、特定の言語の文字を表示するためにその言語を選択する必要はありません。ただし、各種デフォルト設定を行うには、言語環境を選択することが重要です。大まかに言えば、言語環境とは言語の選択というよりも、好ましい文字体系の選択を意味します。
言語環境は、テキストを読み込む際にどのコーディングシステムを認識するかを制御します(コーディングシステムの認識を参照)。これは、ファイルや受信メール、およびEmacsに読み込むその他のあらゆるテキストに適用されます。また、ファイルを作成する際に使用するデフォルトのコーディングシステムを指定することもあります。さらに、各言語環境ではデフォルトの入力メソッドも指定されます。
言語環境を選択するには、current-language-environment
をカスタマイズするか、コマンド M-x set-language-environment
を使用してください。このコマンドを使用する際、どのバッファがカレントであるかは関係ありません。その効果は Emacs
セッション全体に適用されるためです。サポートされている言語環境の一覧については変数 language-info-alist を参照し、言語環境 lang-env の詳細についてはコマンド C-h L lang-env RET (describe-language-environment)
を使用してください。サポートされている言語環境には以下が含まれます:
ASCII, アラビア語, ベラルーシ語, ベンガル語, ブラジル・ポルトガル語, ブルガリア語, ビルマ語, チャム語, 中国語-BIG5, 中国語-CNS, 中国語-EUC-TW, 中国語-GB, 中国語-GB18030, 中国語-GBK, クロアチア語, キリル文字-ALT, キリル文字-ISO, キリル文字-KOI8, チェコ語, デーヴァナーガリー文字, オランダ語, 英語, エスペラント語, エチオピア文字, フランス語, ジョージア語, ドイツ語, ギリシア語, グジャラート語, ヘブライ語, IPA, イタリア語, 日本語, カンナダ語, クメール語, 韓国語, ラオス語, Latin-1, Latin-2, Latin-3, Latin-4, Latin-5, Latin-6, Latin-7, Latin-8, Latin-9, ラトビア語, リトアニア語, マラヤーラム語, オリヤー語, ペルシア語, ポーランド語, パンジャーブ語, ルーマニア語, ロシア語, シンハラ語, スロバキア語, スロベニア語, スペイン語, スウェーデン語, タイ・ヴィエト語, タジク語, タミル語, テルグ語, タイ語, チベット語, トルコ語, UTF-8, ウクライナ語, ベトナム語, ウェールズ語, および Windows-1255.
言語環境で使用されるスクリプトをグラフィカルディスプレイに表示するには、適切なフォントが必要です。フォントの設定に関する詳細については、Fontsetsを参照してください。
一部のオペレーティングシステムでは、ロケール環境変数 LC_ALL、LC_CTYPE、または LANG
を設定することで、使用している文字セットロケールを指定できます。(これらが複数設定されている場合は、最初に空でない値が設定されたものが、本目的におけるロケールとして指定されます。)起動時、Emacs
はシステムロケールエイリアステーブルから文字セットロケールの名前を検索し、その正準名を変数 locale-charset-language-names および locale-language-names
の値(前者が後者を上書きします)のエントリと照合し、一致が見つかった場合は対応する言語環境を選択します。また、ロケールに応じて、表示テーブルとターミナルコーディングシステム、ロケールコーディングシステム、優先コーディングシステム、そして――最後に、しかし同様に重要な点として――キーボードから送信される非
ASCII 文字を Emacs がデコードする方法を調整します。
Emacsの実行中に(M-x setenvを使用して)環境変数 LC_ALL、LC_CTYPE、または LANG を変更した場合は、その後 set-locale-environment
コマンドを実行して、新しいロケールに合わせて言語環境を再設定するとよいでしょう。
set-locale-environment
関数は通常、言語環境によって定められた優先コーディングシステムを使用してシステムメッセージをデコードします。ただし、ロケールが変数 locale-preferred-coding-systems のエントリと一致する場合、Emacs
は代わりに対応するコーディングシステムを使用します。例えば、ロケール ‘ja_JP.PCK’ が locale-preferred-coding-systems の japanese-shift-jis と一致する場合、通常は utf-8 を使用するとしても、Emacs はそのエンコーディングを使用します。
起動時に選択された言語環境は、コマンド set-language-environment
を明示的に指定するか、init ファイルで current-language-environment
をカスタマイズすることで上書きできます。
特定の言語環境 lang-env の影響に関する情報を表示するには、コマンド C-h L lang-env RET (describe-language-environment)
を使用します。これにより、この言語環境がどの言語で有用であるかが分かり、併せて使用される文字セット、符号化方式、および入力メソッドが一覧表示されます。また、この言語環境で使用されるスクリプトを示すサンプルテキストも表示されます。lang-env に空の入力を指定した場合、このコマンドは選択された言語環境について説明します。
通常のフック set-language-environment-hook
を使えば、任意の言語環境をカスタマイズできます。コマンド set-language-environment
は、新しい言語環境をセットアップした後にそのフックを実行します。フック関数では、変数 current-language-environment
を確認することで、特定の言語環境を判定できます。キーボード入力やターミナル出力用の文字コード体系、デフォルトの入力メソッドなど、特定の言語環境向けのデフォルト以外の設定は、このフックに記述してください。
新しい言語環境のセットアップを開始する前に、set-language-environmentはまずフックexit-language-environment-hookを実行します。このフックは、set-language-environment-hookで行ったカスタマイズを元に戻す際に便利です。例えば、set-language-environment-hookを使用して特定の言語環境で特殊なキーバインドを設定した場合は、そのキーの通常のバインドを復元するためにexit-language-environment-hookを設定する必要があります。