43.1.3 Инициализация, специфичная для терминала

Каждый тип терминала может иметь свою собственную библиотеку Lisp, которую Emacs загружает при запуске в этом типе терминала. Имя этой библиотеки формируется путем конкатенации значения переменной term-file-prefix и типа терминала (указанного в переменной окружения TERM). Обычно term-file-prefix имеет значение "term/"; изменение этого не рекомендуется. Если существует запись, соответствующая TERM, в списке ассоциаций term-file-aliases, Emacs использует связанное значение вместо TERM. Emacs находит файл обычным способом, просматривая каталоги load-path и пробуя суффиксы ‘.elc’ и ‘.el’.

Обычная роль библиотеки, специфичной для терминала, заключается в том, чтобы позволить специальным клавишам отправлять последовательности, которые Emacs может распознать. Ей также может потребоваться установить или добавить в input-decode-map, если запись Termcap или Terminfo не указывает все функциональные клавиши терминала. См. Ввод терминала.

Когда имя типа терминала содержит дефис или подчеркивание, и не найдена библиотека, имя которой идентично имени терминала, Emacs удаляет из имени терминала последний дефис или подчеркивание и все, что следует за ним, и пробует снова. Этот процесс повторяется до тех пор, пока Emacs не найдет соответствующую библиотеку, или пока в имени не останется дефисов или подчеркиваний (то есть не будет библиотеки, специфичной для терминала). Например, если имя терминала — ‘xterm-256color’, и нет библиотеки term/xterm-256color.el, Emacs пытается загрузить term/xterm.el. При необходимости библиотека терминала может вызывать (getenv "TERM") для поиска полного имени типа терминала.

Ваш файл инициализации может предотвратить загрузку библиотеки, специфичной для терминала, установив переменную term-file-prefix в nil.

Вы также можете настроить переопределение некоторых действий библиотеки, специфичной для терминала, используя tty-setup-hook. Это обычный хук, который Emacs выполняет после инициализации нового текстового терминала. Вы можете использовать этот хук для определения инициализаций для терминалов, у которых нет собственных библиотек. См. Хуки.

Пользовательская опция: term-file-prefix

Если значение этой переменной не равно nil, Emacs загружает файл инициализации, специфичный для терминала, следующим образом:

(load (concat term-file-prefix (getenv "TERM")))

Вы можете установить переменную term-file-prefix в nil в вашем файле инициализации, если не хотите загружать файл инициализации терминала.

В MS-DOS Emacs устанавливает переменную окружения TERM в ‘internal’.

Пользовательская опция: term-file-aliases

Эта переменная является списком ассоциаций, сопоставляющим типы терминалов их псевдонимам. Например, элемент вида ("vt102" . "vt100") означает, что терминал типа ‘vt102’ следует рассматривать как терминал типа ‘vt100’.

Переменная: tty-setup-hook

Эта переменная — обычный хук, который Emacs выполняет после инициализации нового текстового терминала. (Это применимо, когда Emacs запускается в неграфическом режиме, и при установлении соединения emacsclient с tty.) Хук выполняется после загрузки вашего файла инициализации (если применимо) и файла Lisp, специфичного для терминала, поэтому вы можете использовать его для корректировки определений, сделанных этим файлом.

Для связанной функции см. window-setup-hook.