Maneira correta de obter suporte a cores do emacs 16 dentro do tmux?

4

Estou tentando obter uma configuração personalizada de tema de cores (solarizada) para o meu emacs que utiliza uma paleta de 16 cores, que eu já configurei para o meu terminal (gnome-terminal).

Ao executar o emacs a partir de um terminal normal com TERM=xterm-256color , posso obter corretamente M-x list-colors-display para mostrar todas as 16 ansi cores, por ex. vermelho, verde, brilhante, preto, etc.

No entanto, ao executá-lo a partir de tmux e TERM=screen-256color , M-x list-colors-display apenas lista as 8 cores básicas e não possui as cores brilhantes estendidas. Nas duas configurações, a avaliação (display-color-cells) informa 256 cores. As únicas referências às cores brilhantes que eu posso encontrar estão em lisp / term / xterm.el e lisp / term / rxvt.el, então parece que o problema está na configuração TERM .

Para que o tmux funcione corretamente, o TERM deve ser configurado para tela ou tela-256 cores, portanto, a configuração do TERM é diferente. Eu tive alguma sorte usando um alias:

alias emacs='TERM=xterm-256color emacs'

Existe uma maneira melhor do que isso para forçar o emacs a permitir o uso de todas as 16 ansi cores?

    
por agrubb 08.01.2013 / 03:41

1 resposta

2

Como você descobriu, as cores adicionais são configuradas por um arquivo de biblioteca específico de TERM (por exemplo, term / lisp ). Versões mais recentes do GNU Emacs incluem um term / screen que reutiliza as definições de cores de term / xterm , mas parece que sua versão do Emacs não faz isso. / p>

Se você não quiser atualizar para um Emacs mais recente, provavelmente poderá usar o conteúdo de uma essência que inclui um term/screen.el e um pouco que você pode colocar no seu .emacs para ativá-lo; essa versão de term/screen.el também inclui algumas das principais definições que podem ser úteis se você ativar a opção xterm-keys do tmux .

Os bits principais do código são assim:

;;; .emacs addition
(add-to-list 'load-path "~/.emacs.d/lisp/")

;;; ~/.emacs.d/lisp/term/screen.el
(load "term/xterm") 
(defun terminal-init-screen ()
  (xterm-register-default-colors)
  (tty-set-up-initial-frame-faces))
    
por 08.01.2013 / 09:39