Para o OSX, isso se refere ao Emacs 22.1.1; O Fedora com o Emacs 24 tem o mesmo comportamento.
O ansi-termo do Emac suporta 8 cores . Isso é tudo o que o ANSI especificou e "ansi-term" é nomeado apropriadamente. A eterm-color
descrição do terminal em ncurses é usada para este tipo de terminal. O Emacs define TERM
para este valor ( veja a origem ) :
(defvar term-term-name "eterm-color"
"Name to use for TERM.
Using \"emacs\" loses, because bash disables editing if $TERM == emacs.")
Se você substituir TERM
, por exemplo, para informar aos aplicativos que tem mais cores, as cores extras não serão usadas. Da mesma forma, aplicativos codificados que ignoram o banco de dados de terminal também não podem usar cores extras.
Enquanto o Emacs pode usar mais de 8 cores em um terminal, ansi-term não. Lendo a fonte , procure term-ansi-current-color
e confira que existe apenas a lógica para 30-37, 39, 40-47 e 49 :
;; Foreground
((and (>= parameter 30) (<= parameter 37))
(setq term-ansi-current-color (- parameter 29)))
;; Reset foreground
((eq parameter 39)
(setq term-ansi-current-color 0))
;; Background
((and (>= parameter 40) (<= parameter 47))
(setq term-ansi-current-bg-color (- parameter 39)))
;; Reset background
((eq parameter 49)
(setq term-ansi-current-bg-color 0))
Você pode alterar a paleta de cores usada pelo terminal , mas não há como fazer com que ansi-term seja diferente disso (ele usará o 8 primeiras cores, mesmo que o Emacs possa usar 256).
Leitura adicional:
- AnsiTerm (wiki do Emacs)
- AnsiTermHints (wiki do Emacs)
Para Emacs diferente de ansi-term :
- Como fazer o terminal do Emacs cores iguais às cores da interface gráfica do Emacs?
- Como você aplica um Tema de cores personalizadas do Emacs no modo de console?
Além disso:
- term.el (código-fonte do Emacs para ansi-term )
- ansi-color.el (código-fonte do Emacs)
- term / tty-colors.el (fonte do Emacs código)
- term / xterm.el (código-fonte do Emacs)