Puede obtener mediante programación la lista de errores con getqflist()
:
getqflist() *getqflist()*
Returns a list with all the current quickfix errors. Each
list item is a dictionary with these entries:
bufnr number of buffer that has the file name, use
bufname() to get the name
lnum line number in the buffer (first line is 1)
col column number (first column is 1)
vcol non-zero: "col" is visual column
zero: "col" is byte index
nr error number
pattern search pattern used to locate the error
text description of the error
type type of the error, 'E', '1', etc.
valid non-zero: recognized error message
When there is no error list or it's empty an empty list is
returned. Quickfix list entries with non-existing buffer
number are returned with "bufnr" set to zero.
Useful application: Find pattern matches in multiple files and
do something with them: >
:vimgrep /theword/jg *.c
:for d in getqflist()
: echo bufname(d.bufnr) ':' d.lnum '=' d.text
:endfor
Si lo que desea es el número total, utilice len(getqflist())
. por ejemplo:
:echo len(getqflist())
Si lo que desea es conocer de forma interactiva, :cw
abrirá la lista en una ventana si hay algún error (y lo cierra si ya está abierto y no hay errores). El número de líneas en ese búfer es el número de errores.
Si la ventana quickfix contiene texto no se reconoce como un error, la lista devuelta por 'getqflist()' contendrá entradas para cada uno de estos líneas. De modo que todavía podría tener cero errores con 'len (getqflist())' devolviendo un valor distinto de cero. Debe verificar el indicador 'válido' dentro de la lista resultante. Use la función 'filter()' para eso. – Ben
'len (filter (getqflist(), 'v: val.valid'))' le dará la cantidad de entradas válidas de quickfix. En muchos casos, será igual al número de entradas, pero no siempre. Buscar ': help filter()' hubiera sido un buen comienzo para resolverlo. ;-) – Ben
Gracias por responder. Acabo de actualizar algunos tutoriales y escribir una versión normal sin usar 'filter()', ver [mi esencia] (https://gist.github.com/ih4cku/fa5d57f9f1dc5c03b6c36155bf3e2904) si eres interesante. Obviamente, usar 'filter()' es más elegante. @Ben – nn0p