2010-09-14 9 views
5

Ich versuche, makeprg und errorformat mit VIM und jslint arbeiten, und kann nicht scheinen, um das Fehlerformat richtig für das Leben von mir zu bekommen ... Ich benutze die Nodejs-Version von jslint, die produziert Ergebnisse mögen:Vim errorformat und 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) 

ich die Zeilennummer und Spalte und die Fehler grundsätzlich übereinstimmen soll und die aktuelle Datei für die Dateinamen verwenden. Weiß jemand, wie man das macht?

Um klar zu sein, suche ich nach dem Fehlerformat, um diesen Befehl zu erhalten. Derzeit ist meine .vimrc Datei hat

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

, die einfach nicht funktionieren (die JSLint funktioniert gut, aber das ist falsch errorformat) ...

Antwort

2

tatsächlich steckte ich gerade JSLint in meine makeprg heute früher, und natürlich brauchte ich einige quickfix Unterstützung.

Ich habe eine Verzweigung von node-jslint erstellt, die JSLint-Fehler in einem GCC-ähnlichen Format ausgibt. Die efm ist: %f:%l:%c:%m. Wenn Sie node.js verwenden können, empfehle ich die Verwendung von node-jslint (insbesondere wenn Sie an einem node.js/CommonJS-Projekt arbeiten).

Wie für Ihr ursprüngliches Problem: Ich glaube nicht, %> ist notwendig. Wenn das Entfernen nicht hilft, versuchen Sie einfach die folgenden:

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

ich nicht das Fehler-Format arbeiten könnte, aber ich wechselte zu der Gabel von JSLint (eher als Reids) und das funktioniert perfekt ... Danke –

1

Ich bin nicht 100% sicher auf dieser Version. Ich habe einen heruntergeladen, den ich heruntergeladen habe, und ich habe gerade die Quelle jslint.js geändert, um sie für mich richtig auszugeben. Meine Zeile sieht ungefähr so ​​aus.

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

Hoffnung, die Ihnen helfen kann, ein Format zu bekommen, das arbeitet.

0

Ich habe noch nie verwendet diese Option vor, aber die Beispiele in Hilfe scheint es, um anzuzeigen, sollte eine zusätzliche %m am Ende des Musters sein, oder vielleicht brauchen Sie nur das Komma zu entkommen:

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

Update: Eigentlich scheint es zwei Zahlen in Ihrem Fehler String, 1 gefolgt von einem Leerzeichen, dann 116. Vielleicht wäre diese Arbeit:

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

Nö, hat nicht funktioniert ... –

+0

noch kein Glück ... –

8

Ein alter Thread, aber für jemand über sie kommen, wie ich selbst:

für die aktuelle Version von Knoten-JSLint durch NPM installiert (v0.1.2), sieht der Fehlerausgang wie folgt aus:

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 

ich verwende den folgenden efm die Fehler zu analysieren:

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

Danke. Ich habe tagelang damit zu kämpfen gehabt! – Telemachus

+0

Dieser efm arbeitete auch für v0.1.4 –

+0

Funktioniert super! Wie um alles in der Welt bist du darauf gekommen? Ich zweiter Telemachus! – bluekeys

6

Ein sehr alter Thread, aber dies ist ein Follow-up zu @dule's excellent answer. Es ist wirklich nur ein zwicken, aber es kann auch für andere nützlich sein (habe mir einige Zeit mit TFM es zu arbeiten, also warum nicht teilen?):

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

Es gibt zwei Unterschiede, die beide in der dritten Zeile .Zuerst ersetze ich die anfänglich fest codierte Übereinstimmung eines einzelnen Platzes mit einem Muster, das mit null oder einem Leerzeichen übereinstimmt (dh, macht den Raum optional). Ich hatte dies zu tun, weil der folgenden Ausgabe von 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 

Blick sehr eng, und Sie werden es sehen. Für die Fehler 1-9 gibt es am Anfang der Zeile ein Leerzeichen. Für 10 ... n kein Platz. Eine kleine Sache, aber es bedeutet, dass das Quickfix-Fenster für Fehler 10 und höher nicht richtig funktioniert. Pfui. (Btw, ich dachte über die Antwort "Mach nicht mehr als 9 Fehler in einer gegebenen JS-Datei, aber das schien ein wenig zu" Schwanzwedeln mit dem Hund ". Außerdem weiß ich jetzt mehr, als ich vor ein paar Stunden über scanf.)

der zweite Unterschied ist, dass ich %E mit %A und dem Matcher %n mit einem Muster, diese Zahl zu ignorieren ersetzt. Dies ist im wesentlichen aus ästhetischen Gründen. it @ dul Weg tun, können Sie diese Ausgabe im quickfix Fenster bekommen :

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. 

ich nicht eine Anzahl von Fehlern dort wollen und ich, dass sie alle Fehler sind nicht die Erinnerung brauchen - ich weiß, dass %A So verwenden, yo. u erhält diese einfachere Ausgabe:

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

Ich sah das gleiche Problem (mit Fehlern> Zeile 9 nicht richtig formatiert) und diese Antwort behoben! Es sollte die akzeptierte Antwort sein. – rowanu