Eseguire il debug di come vim chiama makeprg

Aug 26 2020

Sto cercando di impostare pylint per lavorare con il :makecomando in Vim 8.2.

Ho impostato :compiler pylintma l'esecuzione :makemi dà il messaggio di aiuto di pylint, quindi alcuni argomenti sembrano essere passati in modo errato.

:set makeprg? è

makeprg=pylint --output-format=text --msg-template="{path}:{line}:{column}:{C}: [{symbol}] {msg}" --reports=no

Ho provato a eseguire questo comando direttamente nel terminale (aggiungendo il nome del file) e ha funzionato: l'output era l'elenco degli errori, non il messaggio di aiuto.

Sfortunatamente, non vedo quale comando esatto vim sta cercando di eseguire. Qualche suggerimento su cosa ho sbagliato o su come eseguirne il debug?

Vorrei attenermi il più possibile alle funzionalità predefinite di vim e non utilizzare alcun plugin per questo.

Risposte

3 filbranden Aug 26 2020 at 04:01

come eseguirne il debug?

È possibile utilizzare il :verbosecomando per aumentare la verbosità di un comando specifico.

In questo caso particolare, è necessario un livello di verbosità superiore a 3 per vedere il comando di shell effettivo eseguito da Vim , quindi dovrebbe funzionare:

: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"

Qualche suggerimento su cosa ho sbagliato?

Come @D. Ben Knoble ha sottolineato, ti manca il nome del file corrente nell'esecuzione del comando. Puoi aggiustarlo passandolo al :makecomando, con :make %, oppure puoi effettivamente incorporarlo %in makeprgse stesso, poiché si espanderà %prima di eseguire il comando:

:let &makeprg = 'pylint --output-format=text --msg-template="{path}:{line}:{column}:{C}: [{symbol}] {msg}" --reports=no %'

Notare il %alla fine della riga di comando. Se incorpori %in makeprg, allora semplicemente in esecuzione :makefunzionerà per eseguire pylint sul tuo file corrente.

2 xaxa Aug 26 2020 at 03:37

(Grazie a @ d-ben-knoble)

makeprg non include il nome del file, quindi

:make %

dovrebbe essere usato per lintare il file corrente