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

15

Estou usando o Emacs rodando em um urxvt, e não consigo fazer itálico funcionar no Emacs, embora o terminal o suporte.

Veja minha configuração atual:

  • Eu não defini $TERM , então é o padrão rxvt-unicode-256color .
  • Meu ~/.Xdefaults define URxvt.font: xft:Inconsolata:size=15 como a fonte do terminal.
  • A execução de echo '\e[3mitalics\e[m' no shell realmente gera italics , de modo que o itálico no terminal do funciona basicamente.

Ao personalizar a face "Itálico", não faz diferença se eu seleciono italic , oblique , normal ou roman como o valor para o atributo Slant , nem se eu não definir o atributo Slant . Eu também tentei isso em combinação com explicitamente definindo URxvt.italicFont no meu ~/.Xdefaults , mas sem sucesso.

Ousado funciona bem, o itálico não funciona de todo. Alguma idéia?

    
por igor 30.07.2011 / 18:42

3 respostas

10

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

História mais longa: o suporte para itálico é codificado no terminfo como os recursos sitm (digite itálico) e ritm (saída itálico) (também chamado ZH e ZR para compatibilidade termcap); você pode checar que o seu terminal os suporta via:

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

Se esses não estiverem presentes, o seu terminal rxvt-unicode-256color A descrição não fornece informações para a biblioteca ncurses sobre os recursos de itálico do terminal e você pode querer adicionar eles, caso contrário, nenhum aplicativo TTY pode usar itálico.

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

De fato, meu Emacs (versão 23.1 no Ubuntu 11.04 natty) mostra itálico faces (que são exibidas corretamente no X11) como sublinhadas em um TTY. (O que significa que, se você não se importa com o sublinhado, você pode simplesmente altere a descrição terminológica do seu terminal para usar a entrada / saída itálico escapar sequências em vez de entrar / sair sublinhado e obter itálico.)

    
por 11.08.2011 / 14:30
3

Considerando que o emacs não é capaz de utilizar itálico em emuladores de terminal que fornecem esta funcionalidade: Isto é emacs bug # 9652 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 .

    
por 18.06.2012 / 18:38
3

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

Este é o emacs 24.5 em execução em um terminal ( emacs -nw ). O terminal é uxvrt e a configuração no meu .Xdefaults é:

URxvt*termName: rxvt-unicode-256color
URxvt.font: xft:DejaVu Sans Mono:size=9
    
por 29.09.2015 / 22:25