サポートされているすべての文字セットは、マルチバイト文字が利用可能なときは、Emacsバッファーの中でサポートされます。その文字を表示するために、特定の言語を選択する必要はありません。しかしさまざまなデフォルト値をセットするために、言語環境(language environment)を選択することは重要です。大まかに言うと、言語環境とは、言語の選択というよりも、好ましいスクリプト選択の提示です。
言語環境は、テキストを読み込むとき、それを認識するコーディングシステムを制御します(コーディングシステムの認識を参照してください)。これはファイル、到着メール、その他のEmacsで読む任意のテキストに適用されます。これは新しくファイルを作成するときに使う、デフォルトのコーディングシステムも指定します。それぞれの言語環境は、デフォルトのインプットメソッドも指定します。
言語環境を選択するには、current-language-environment
をカスタマイズするか、コマンドM-x
set-language-environmentを使います。このコマンドを使うとき、どのバッファーがカレントかで違いは生じません。なぜなら、その効果はEmacsセッションにグローバルで適用されるからです。サポートされている言語環境の一覧は、変数language-info-alist
を参照してください。コマンドC-h
L lang-env RET
(describe-language-environment
)を使うと、言語環境lang-envの、より詳細な情報が参照できます。サポートされる言語環境には、以下が含まれます:
ASCII、Arabic、 Belarusian、Bengali、 Brazilian Portuguese、Bulgarian、 Burmese、Cham、 Chinese-BIG5、Chinese-CNS、Chinese-EUC-TW、Chinese-GB、Chinese-GB18030、Chinese-GBK、 Croatian、Cyrillic-ALT、Cyrillic-ISO、Cyrillic-KOI8、 Czech、Devanagari、 Dutch、English、 Esperanto、Ethiopic、 French、Georgian、 German、Greek、Gujarati、 Hebrew、IPA、 Italian、 Japanese、Kannada、 Khmer、Korean、Lao、 Latin-1、Latin-2、Latin-3、Latin-4、Latin-5、Latin-6、Latin-7、Latin-8、Latin-9、 Latvian、Lithuanian、 Malayalam、Oriya、 Persian、Polish、 Punjabi、Romanian、 Russian、Sinhala、 Slovak、Slovenian、Spanish、 Swedish、TaiViet、 Tajik、Tamil、 Telugu、Thai、 Tibetan、Turkish、 UTF-8、Ukrainian、 Vietnamese、Welsh、 Windows-1255
グラフィカルなディスプレイでは、使用されている言語環境で使われているスクリプトを表示するために、適切なフォントをもっている必要があります。フォントのセットアップについては、フォントセットを参照してください。
環境変数LC_ALL
、LC_CTYPE
、LANG
をセットすることにより、使用する文字セットのlocaleを指定するオペレーティングシステムがいくつかあります(もしこれらの1つ以上がセットされている場合、特に1番目のものが空でない場合、それは正にこの目的のためにlocaleを指定しています)。起動の間、Emacsは文字セットのlocale名を、システムのlocaleエイリアステーブルから探して、その正規化された名前(canonical
name)を、変数locale-charset-language-names
およびlocale-language-names
(前者は後者をオーバーライドします)のエントリーにたいしてマッチし、マッチが見つかったら対応する言語環境を選択します。これはディスプレイテーブルと端末のコーディングシステム、localeコーディングシステム、localeに必要な好ましいコーディングシステム
— そして最後に重要なのは — Emacsがキーボードから送られた非ASCII文字をデコードする方法を調整します。
Emacs実行中に、(M-x
setenvを使って)環境変数LC_ALL
、LC_CTYPE
、LANG
を変更した場合、新しいlocaleにたいする言語環境を再調整するために、後でset-locale-environment
コマンドを呼び出したいと思うかもしれません。
set-locale-environment
関数は、通常はシステムメッセージをデコードするために、言語環境により確立された優先コーディングシステムを使用します。しかしlocaleが変数locale-preferred-coding-systems
のエントリーにマッチした場合には、Emacsはかわりに対応するコーディングシステムを使用します。たとえばlocaleの‘ja_JP.PCK’がlocale-preferred-coding-systems
のjapanese-shift-jis
にマッチすれば、通常ならutf-8
が使われるような場合でも、Emacsはエンコーディングにそのコーディングシステムを使用します。
initファイルで明示的にコマンドset-language-environment
を使うか、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
で通常のキーバインドに復元するべきです。