4

В 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: могут быть другие способы достижения того же результата, но здесь я особенно заинтересован в том, чтобы понять, почему то, что я пробовал, не работает, и исправить это.

2 ответа2

0

В моей системе C-hv для переменной показал, что она была инициализирована следующим образом:("[pP] [lL] [iI] [nN] [kK]". # 1 =(undecided-dos. Undecided-dos))

Итак, чтобы заставить Cygwin Bash работать, я добавил:(добавить в список 'process-coding-system-alist'("[bB] [aA] [sS] [hH]". (Undecided-unix. Undecided-unix)))

По расширению я думаю, что это будет работать:(add-to-list 'process-coding-system-alist'("zsh". (Utf-8. Utf)))

0

Я не уверен в этом, и у меня действительно нет способа воспроизвести это, но вы не пропустили пару скобок вокруг utf-8?

(add-to-list 'process-coding-system-alist '("zsh" . (utf-8)))

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .