各ターミナルタイプには、そのタイプのターミナルでEmacsが動作する際に読み込まれる独自のLispライブラリを持たせることができます。ライブラリ名は、変数term-file-prefixの値とターミナルタイプ(環境変数TERMで指定)を連結して構成されます。通常、term-file-prefixの値は"term/"となっており、これを変更することは推奨されません。term-file-aliasesの関連付けリストにTERMに一致するエントリがある場合、EmacsはTERMの代わりにその関連付けられた値を使用します。Emacsは、load-pathディレクトリを検索し、‘.elc’および‘.el’というサフィックスを試すという通常の手順でファイルを探します。
端末固有ライブラリの一般的な役割は、特殊キーによってEmacsが認識可能なシーケンスを送信できるようにすることです。また、TermcapやTerminfoのエントリに端末のファンクションキーがすべて指定されていない場合は、input-decode-mapを設定または追加する必要があることもあります。端末入力を参照してください。
ターミナルタイプの名前にハイフンまたはアンダースコアが含まれており、かつターミナル名と完全に一致するライブラリが見つからない場合、Emacsはターミナル名から末尾のハイフンまたはアンダースコアとそれに続くすべての文字を削除し、再度試行します。この処理は、Emacsが一致するライブラリを見つけるか、あるいは名前にハイフンやアンダースコアが一切残らなくなる(つまり、ターミナル固有のライブラリが存在しない)まで繰り返されます。例えば、ターミナル名が
‘xterm-256color’ で term/xterm-256color.el ライブラリが存在しない場合、Emacsは term/xterm.el のロードを試みます。必要に応じて、ターミナルライブラリは (getenv "TERM")
を評価してターミナルタイプの正式名称を特定することができます。
initファイルで変数 term-file-prefix に nil を設定することで、ターミナル固有のライブラリの読み込みを防ぐことができます。
また、tty-setup-hook
を使用することで、ターミナル固有のライブラリの一部の動作をオーバーライドするように設定することも可能です。これは、Emacs
が新しいテキストターミナルを初期化した後に実行する通常のフックです。このフックを利用して、独自のライブラリを持たないターミナルの初期化を定義できます。フックを参照してください。
この変数の値が nil 以外の場合、Emacs は次のように端末固有の初期化ファイルを読み込みます。
(load (concat term-file-prefix (getenv "TERM")))
ターミナル初期化ファイルを読み込みたくない場合は、initファイルでterm-file-prefix変数をnilに設定できます。
MS-DOS上では、Emacsは環境変数 TERM に ‘internal’ を設定します。
この変数は、端末タイプとそのエイリアスを対応付ける連想リストです。例えば、("vt102"
. "vt100") という形式の要素は、タイプ ‘vt102’ の端末をタイプ ‘vt100’ の端末として扱うことを意味します。
この変数は、Emacsが新しいテキストターミナルを初期化した後に実行する通常のフックです。(これは、Emacsがウィンドウなしモードで起動する場合や、tty
emacsclient
接続を行う場合に適用されます。)このフックは、initファイル(該当する場合)およびターミナル固有のLispファイルの読み込み後に実行されるため、それらのファイルで定義された内容を調整するために利用できます。
関連する機能については、window-setup-hookを参照してください。