I use ansi-term for my normal terminal sessions. I tend to use unicode characters in my prompt to do things like set the trailing character based on the type of source control I’m using.
I use the character “±” as my prompt for git repositories.
In Emacs’ ansi-term, my prompt isn’t rendered as unicode, and shows as “\302\261”. Displaying the current coding system shows that it defaults to utf-8-unix for input to the process, but I get raw binary as the decoding output. I can hit C-c RET p to change the encoding and decoding coding systems. I’m drawing a blank as to how to set this automatically when I start a terminal? I’ve tried adding to term-mode-hook to set the buffer’s coding system to no avail. I think I’ve found what I’m looking for in term.el, but I don’t care to tweak the distribution elisp, and it appears the raw binary was added to fix a bug somewhere else.
EDIT: This was unclear originally. I’m having issues setting the default process coding system for ansi-term running under Cocoa-ized Emacs 23.3 on MacOS. Emacs itself isn’t running in a terminal, my terminal is running in Emacs.
After getting a better understanding of
term.el, the following works:Trying this with
term-mode-hookis broken because in term.el,term-mode-hookis called before switching to the terminal buffer, soset-buffer-process-coding-systembreaks due to the lack of a process associated with the buffer.