Depure como o vim chama makeprg
Estou tentando configurar o pylint para funcionar com o :makecomando no Vim 8.2.
Eu configurei, :compiler pylintmas a execução :makeme dá a mensagem de ajuda do pylint, então alguns argumentos parecem ter sido transmitidos incorretamente.
:set makeprg? é
makeprg=pylint --output-format=text --msg-template="{path}:{line}:{column}:{C}: [{symbol}] {msg}" --reports=no
Tentei executar este comando diretamente no terminal (anexando o nome do arquivo) e funcionou - a saída foi a lista de erros, não a mensagem de ajuda.
Infelizmente, não vejo qual comando exato o vim está tentando executar. Alguma dica sobre o que fiz de errado ou como depurar?
Eu gostaria de manter a funcionalidade padrão do vim o máximo possível e não usar plug-ins para isso.
Respostas
como depurar isso?
Você pode usar o :verbosecomando para aumentar a verbosidade de um comando específico.
Neste caso específico, você precisa de nível de detalhamento acima de 3 para ver o comando shell real executado pelo Vim , então isso deve funcionar:
:4verbose make
Calling shell to execute: "pylint --output-format=text --msg-template="{path}:{line}:{column}:{C}: [{symbol}] {msg}" --reports=no 2>&1| tee /tmp/abcde12/3"
Alguma dica sobre o que fiz de errado?
Como @D. Ben Knoble apontou que está faltando o nome do arquivo atual na execução do comando. Você pode corrigi-lo passando-o para o :makecomando, com :make %, ou pode realmente incorporar o %em makeprgsi mesmo, já que ele se expandirá %antes de executar o comando:
:let &makeprg = 'pylint --output-format=text --msg-template="{path}:{line}:{column}:{C}: [{symbol}] {msg}" --reports=no %'
Observe o %no final da linha de comando. Se você incorporar %ao makeprg, simplesmente executar :makefuncionará para executar o pylint em seu arquivo atual.
(Graças a @ d-ben-knoble)
makeprg não inclui o nome do arquivo, então
:make %
deve ser usado para lintar o arquivo atual