2010-09-14 20 views
5

que estoy tratando de conseguir makeprg y errorformat trabajar con VIM y JSLint, y parece que no puede obtener el derecho de formato de error para la vida de mí ... Estoy utilizando la versión de nodejs JSLint que produce resultados como:Vim errorformat y JSLint

1 116,9: The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype. 
    for (var k in o) 

básicamente quiero para que coincida con el número de línea y columna y el error y utilizar el archivo actual para el nombre de archivo. Alguien sabe cómo hacer esto?

Para ser claros, estoy buscando el errorformat para que funcione este comando. Actualmente mi archivo .vimrc tiene

augroup js 
    set makeprg=jslint\ % 
    set errorformat=%E%>%l,%c:%m,%Z 
augroup END 

la que no está funcionando (la JSLint funciona bien, pero el errorformat está mal) ...

Respuesta

2

, me acaba atrapado en mi JSLint hoy makeprg anterior, y, naturalmente, que necesitaba un poco de apoyo quickfix.

Creé una rama de node-jslint que genera los errores de JSLint en un formato similar a GCC. El efm es: %f:%l:%c:%m. Si puede usar node.js, le recomiendo usar node-jslint (especialmente si está trabajando en un proyecto node.js/CommonJS).

En cuanto a su problema original: No creo %> es necesario. Si la eliminación que no ayuda, trate simplemente el siguiente:

set efm=%l,%c: %m 
+0

no pude conseguir el formato de error para trabajar, pero me pasa a su tenedor de JSLint (en vez que Reid) y que funciona perfectamente ... Gracias –

1

No estoy seguro al 100% en esa versión. Usé uno que descargué y acabo de cambiar la fuente jslint.js para que salga bien para mí. Mi línea se ve algo así como

var i=0;i<JSLINT.errors.length;i+=1){var e=JSLINT.errors[i];if(e){print(a[0]+':'+e.line+':'+e.reason); 

Espero que pueda ayudarlo a acercarse a un formato de trabajo.

0

nunca he utilizado esta opción antes, pero los ejemplos de ayuda parecen indicar que debería ser un extra %m al final de su patrón, o tal vez lo que necesita para escapar de la coma:

set errorformat=%E%>%l\\,%c:%m,%Z%m 

actualización: en realidad parece que hay dos números en su cadena de error, 1 seguido de un espacio, luego 116. Tal vez esto funcionaría:

set errorformat=%E%>%n\\ %l\\,%c:%m,%Z%m 
+0

No, no funcionó ... –

+0

Todavía no hay suerte ... –

8

Un hilo viejo, pero para cualquiera que venga a través de ella, como yo:

Para la versión actual del nodo-JSLint instalado a través de la NGP (v0.1.2), la salida de error tiene el siguiente aspecto:

filename.js 
#1 Missing 'use strict' statement. 
    y = x // Line 2, Pos 3 
#2 Expected 'y' at column 5, not column 3. 
    y = x // Line 2, Pos 3 

estoy usando el siguiente EFM para analizar los errores:

autocmd FileType javascript set efm=%-P%f, 
        \%E%>\ #%n\ %m,%Z%.%#Line\ %l\\,\ Pos\ %c, 
        \%-G%f\ is\ OK.,%-Q 
+0

Gracias. ¡He estado luchando con esto de forma intermitente durante días! – Telemachus

+0

Este efm también funcionó para v0.1.4 –

+0

¡Funciona muy bien! ¿Cómo diablos se te ocurrió eso? ¡Yo segundo, Telémaco! – bluekeys

6

Un hilo muy antiguo, pero este es un seguimiento de @dule's excellent answer. No deja de ser un pellizco, pero puede ser útil para otros también (me llevó algún tiempo con TFM a trabajar hacia fuera, ¿por qué no compartir?):

setlocal makeprg=jslint\ % 
setlocal errorformat=%-P%f, 
        \%A%>%\\s%\\?#%*\\d\ %m,%Z%.%#Line\ %l\\,\ Pos\ %c, 
        \%-G%f\ is\ OK.,%-Q 

Hay dos diferencias, tanto en la tercera línea .Primero, reemplazo la coincidencia inicial codificada de un solo espacio con un patrón que coincide con cero o un espacio (es decir, hace que el espacio sea opcional). Tenía que hacerlo, por lo siguiente salida de jslint:

... First 8 errors trimmed 
#9 Expected '$' at column 9, not column 7. 
    $('img#placeholder').attr('src', pic); // Line 15, Pos 7 
#10 Expected '$' at column 9, not column 7. 
    $('img#placeholder').attr('alt', desc) // Line 16, Pos 7 

mira muy de cerca, y lo vas a ver. Para los errores del 1 al 9, hay un espacio al comienzo de la línea. Por 10 ... n, sin espacio. Una pequeña cosa, pero significa que la ventana de quickfix no funciona correctamente para los errores de 10 en adelante. Ugh. (Por cierto, consideré la respuesta "No hagas más de 9 errores en ningún archivo JS dado, pero eso también me pareció un poco" meneando al perro ". Además, ahora sé más de lo que sabía hace unas horas sobre scanf.)

la segunda diferencia es que he sustituido %E con %A y la matcher %n con un patrón de ignorar ese número. esto es esencialmente por razones estéticas. Hacerlo @ manera de dule, se obtiene este resultado en la ventana quickfix :

showPic.js|5 col 7 error 1| Expected 'event' at column 9, not column 7. 
showPic.js|9 col 7 error 2| Expected 'var' at column 9, not column 7. 

no quiero un recuento de errores allí, y no necesito el recordatorio de que son todos los errores - sé que tanto el uso de %A, yo. u obtener esta salida más simple:

showPic.js|5 col 7| Expected 'event' at column 9, not column 7. 
showPic.js|9 col 7| Expected 'var' at column 9, not column 7. 
+0

Estaba viendo el mismo problema (con errores> no se formateó correctamente la línea 9) y esta respuesta lo solucionó. Debe ser la respuesta aceptada. – rowanu