quebra intermitentemente (R, tmux, readline)

1

Costumo manter várias sessões interativas de linha de comando R em execução no meu desktop no trabalho, vinculadas ao vim com o vim-r-plugin (que é meio como o ESS). Eu uso o tmux para conectá-los remotamente, e também porque o vim-r-plugin depende disso. Às vezes, ao se conectar remotamente, no entanto, linhas longas no prompt R falharão ao finalizar corretamente: em vez de serem quebradas em várias linhas, o cursor apenas começará a sobrescrever as coisas no início da linha. O local de envolvimento não é (necessariamente) o mesmo que a borda do meu terminal atual. Todos os comandos parecem funcionar como esperado, por isso é apenas um problema com a exibição.

Outros detalhes que podem ajudar a diagnosticar o problema: Backspacing além do início da linha irá retornar uma linha, então coisas não relacionadas na linha anterior começarão a desaparecer / ser sobrescritas. As teclas de setas "envolverão" normalmente ao redor do final desta linha, mas serão desativadas em um: ir para a esquerda além do início da linha traz o cursor para a direita da linha anterior (não relacionada). Além disso, quando paginar de volta pelo histórico de comandos, qualquer um que seja muito longo será empacotado da mesma maneira imprópria, e paginar de volta subseqüentemente moverá o cursor para cima de uma linha.

O redimensionamento do terminal para ser mais estreito do que onde a quebra acontece causa mais problemas. O texto aparece para passar para a próxima linha corretamente, mas ainda há falhas estranhas: se eu voltar e editar a linha superior, tente ir para a linha inferior, o cursor não vai mais ficar além o lado direito da primeira linha. Voltar a percorrer a história parece ainda mais estranho: comandos longos são quebrados em várias linhas, mas faltam caracteres no meio e ainda há sobrescritos na linha inferior. É como se dois tipos de embrulhos estivessem acontecendo simultaneamente. A edição da linha superior causa atualizações de "redesenho" imprevisíveis que tornam o comando ilegível.

$ TERM é tela-256 cores. Eu estou usando o Terminator como um emulador de terminal e bash como meu shell. Versão R é 3.3.1.

Coisas que tentei: enviar "detach-client -a" e "set aggressive-resize" para o tmux; mudando a variável PS1 no meu .bashrc. Sem efeito. Sair e reentrar na sessão R funciona, mas é um problema, porque normalmente tenho grandes espaços de trabalho que levam minutos para serem salvos e restaurados.

Tenho certeza que R está usando a linha de leitura GNU para as sessões interativas de linha de comando, então eu adicionei isso como uma tag também.

Alguma correção / solução alternativa? Obrigado a todos!

    
por Patrick B. 05.01.2017 / 05:30

1 resposta

1

Isso foi corrigido / melhorado em R 3.3.2. Veja a parte relevante do arquivo NEWS e o reportou o bug :

INSTALLATION and INCLUDED SOFTWARE:

* Versions of the readline library >= 6.3 had been changed so that
  terminal window resizes were not signalled to readline: code has
  been added using a explicit signal handler to work around that
  (when R is compiled against readline >= 6.3).  (PR#16604)
    
por 05.01.2017 / 14:26