Я думаю, что ваша проблема в том, что ваш файл .emacs устанавливает что-то вроде local-function-key-map
или, input-decode-map
но эти переменные являются локальными терминалами, что означает, что каждый «терминал» (ваш графический интерфейс пользователя является одним «терминалом», и каждое соединение emacsclient через текстовый терминал будет другим «терминал») получает другое значение этой переменной.
Поэтому вам нужно перезапускать этот код для каждого нового терминала. Вы можете сделать это в соответствии с after-make-frame-functions
предложением reza.safiyat, так как он будет выполняться чаще, чем необходимо (один раз на кадр, а не один раз на терминал). Но так как это, вероятно, необходимо только для терминалов "xterm", другой хороший вариант - сделать это из terminal-init-xterm-hook
:
(defun my-text-terminal-keys () (define-key input-decode-map ...) (define-key local-function-key-map ...)) (add-hook 'terminal-init-xterm-hook #'my-text-terminal-keys)
Кстати, иногда альтернативой является использование function-key-map
, так как это глобальная переменная и применяется в равной степени ко всем терминалам.