Vim lint check - mostra apenas a mensagem se houver um erro

3

Eu tenho essa linha no meu .vimrc , que significa "quando eu salvar um arquivo .rb, execute-o através de ruby -c " (a verificação de erro do interpretador de ruby).

autocmd BufWritePost *.rb !ruby -c <afile>

Quando salvo esse arquivo, sempre vejo a saída na parte inferior da tela, então me acostumo e começo a ignorá-lo. O que eu quero é ver apenas a saída se houver erros.

Eu posso ver que quando há erros, depois que ele diz o que eles são, na parte inferior, ele diz "shell retornou 1".

Como posso modificar esta linha para que só mostre uma mensagem se o shell retornar 1? Existe uma maneira de, condicionalmente, suprimir a saída de um comando shell executado no vim?

    
por Nathan Long 08.02.2011 / 14:52

2 respostas

2

Você definitivamente deve procurar no plug-in Syntastic . Ele verifica automaticamente a sintaxe do arquivo no buffer atual ao salvar, suporta muitos tipos de arquivos (ruby, python, php, etc fora da caixa) e faz exatamente o que você precisa - mostra a saída somente em caso de erros.

    
por 08.02.2011 / 19:56
0

No momento em que o Vim vê o status de saída do comando, o comando já enviou sua saída, se houver, para o terminal, assim você não pode suprimir condicionalmente a saída do comando testando o status de saída.

A página man do ruby (1) diz que -c faz com que o ruby envie a mensagem "Syntax OK" para a saída padrão se não houver erros. Parece que os erros de sintaxe são reportados ao erro padrão. Portanto, você pode suprimir a mensagem "Sintaxe OK" redirecionando a saída padrão para / dev / null e suprimir o eco do comando usando :silent , desta forma.

autocmd BufWritePost *.rb silent! !ruby -c <afile> > /dev/null
    
por 08.02.2011 / 17:53

Tags