В Emacs я обычно использую подчиненную оболочку, вызываемую M-x shell
. Мне часто нужно специально устанавливать его систему кодирования, что я делаю с C-x RET p
за которым следует utf-8
(дважды).
Я хочу сделать это раз и навсегда в моем файле .emacs. В документации говорится, что система кодирования по умолчанию для оболочек, запускаемых через M-x shell
происходит от process-coding-system-alist
. Посмотрев документацию по этой переменной, я попытался
(add-to-list 'process-coding-system-alist '("zsh" . utf-8))
... так как zsh
- моя оболочка по умолчанию. (Согласно документам, первый элемент добавленной пары интерпретируется как регулярное выражение, соответствующее имени программы оболочки, поэтому приведенная выше строка должна работать.)
Это, однако, не дает желаемого результата. (Например, некоторые символы неправильно отображаются в stdout во вновь запущенной *shell*
; тем не менее, эти символы отображаются правильно после выполнения C-x RET p
и т.д., Как описано выше. Это означает, что, что бы ни делала моя команда add-to-list
, она не делает то, что я хочу.)
Мой вопрос просто, почему нет
(add-to-list 'process-coding-system-alist '("zsh" . utf-8))
Работа?
NB: могут быть другие способы достижения того же результата, но здесь я особенно заинтересован в том, чтобы понять, почему то, что я пробовал, не работает, и исправить это.