Itálico no Emacs em um terminal de texto (rxvt-unicode)

15

Estou usando o Emacs executando em um urxvt e não consigo que o itálico funcione no Emacs, embora o terminal o suporte.

Aqui está minha configuração atual:

  • Eu não configurei $TERM, então é o padrão rxvt-unicode-256color.
  • Meu ~/.Xdefaultsdefine URxvt.font: xft:Inconsolata:size=15como a fonte do terminal.
  • Correndo echo '\e[3mitalics\e[m'no shell de fato rendimentos italics, de modo itálico no terminal de fazer o trabalho, basicamente.

Ao personalizar a face “itálico”, não faz qualquer diferença se eu selecionar italic, oblique, normal, ou romancomo o valor para o Slantatributo, nem se eu não definir o Slantatributo de todo. Eu também tentei isso em combinação com a definição explícita URxvt.italicFontno meu ~/.Xdefaults, mas sem sucesso.

Negrito funciona bem, itálico não funciona. Alguma ideia?

igor
fonte
Eu não sabia que era remotamente possível ter itálico em um terminal. Obrigado por isso.
Whaulk #

Respostas:

10

Resumindo: você não pode com a versão atual do Emacs (marcada com 23.2), mas veja abaixo uma possível solução alternativa.

História mais longa: o suporte a itálico é codificado no banco de dados terminfo como os recursos sitm(digite itálico) e ritm(sai em itálico) (também chamados ZHe ZRpara compatibilidade com termcap); você pode verificar se o seu terminal os suporta via:

infocmp $TERM | egrep '(sitm|ritm)'

Se eles não estiverem presentes, a rxvt-unicode-256colordescrição do seu terminal não fornecerá à biblioteca ncurses informações sobre os recursos em itálico do terminal e você poderá adicioná-los, caso contrário, nenhum aplicativo TTY poderá usar itálico.

No entanto, a função turn_on_face(nas fontes do Emacs, arquivo src/term.cna linha 1919--2012), que gerencia a exibição do terminal, não fornece suporte para itálico: verifica atributos em negrito / dim / piscando / sublinhado de uma face. Na verdade, não há nenhum atributo "itálico" codificado em struct face.

De fato, meu Emacs (versão 23.1 no Ubuntu 11.04 natty) mostra rostos em itálico (que são exibidos corretamente no X11), conforme sublinhado em um TTY. (O que significa que, se você não se importa com o sublinhado, basta alterar a descrição da terminof do seu terminal para usar as seqüências de escape de itálico de entrada / saída em vez das sublinhadas de entrada / saída e obter itálico.)

Riccardo Murri
fonte
Essa resposta parece boa, mas no momento não posso testá-la porque a única instalação do linux que tenho é como convidada em um host win7. Como resultado, estou tendo dificuldades para testar isso. Especificamente, não consigo inserir os códigos de escape ascii. Se alguém puder testar para confirmar ou explicar o que posso estar fazendo de errado com as seqüências de fuga, ficarei feliz em conceder a recompensa.
vschum 11/08/11
@ vschum Se você está tentando alterar seu banco de dados terminfo, esta resposta deve ajudar. Não podemos ajudar com suas dificuldades, a menos que você as explique; você pode fazer uma pergunta sobre eles.
Gilles 'SO- stop be evil'
@Gilles Na verdade, tem mais a ver com esta resposta . Não consigo descobrir como inserir as seqüências para testar se o itálico funciona ou não. Quando digito ESC [3 m, nada aparece no terminal.
vschum 12/08
2
@vschum Pressionar ESCnão insere um caractere de escape. Você pode pressionar Ctrl+V ESCpara inserir um, mas raramente precisa. Por exemplo, o caractere de escape é representado por \Ena fonte terminfo; em um terminal (com bash / ksh / zsh), tente echo $'\e[3mhello\e[0m'.
Gilles 'SO- stop be evil'
4

Estou adicionando esta resposta porque as outras estão desatualizadas. O Emacs 24.5 exibe corretamente faces em itálico nos terminais.

insira a descrição da imagem aqui

Este é o emacs 24.5 rodando em um terminal ( emacs -nw). O terminal é uxvrte a configuração em meu .Xdefaultsé:

URxvt*termName: rxvt-unicode-256color
URxvt.font: xft:DejaVu Sans Mono:size=9
Casey
fonte
3

Em relação ao emacs não capaz de utilizar itálico em emuladores de terminal que fornecem essa funcionalidade: Este é o bug # 9652 do emacs que foi corrigido por Chong Yidong em 10 de junho de 2012.

A correção não está em nenhuma versão lançada do emacs, mas, por exemplo, no pacote emacs-snapshot de emacs.naquadah.org .

Gregor Zattler
fonte
Esta informação é provavelmente desatualizado ....
Samuel Edwin Ward