Depure como o vim chama makeprg

Aug 26 2020

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

3 filbranden Aug 26 2020 at 04:01

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.

2 xaxa Aug 26 2020 at 03:37

(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