2010-09-14 14 views
5

Próbuję uzyskać makeprg i errorformat pracy z VIM i jslint i nie mogę uzyskać formatu błędu właściwego dla mojego życia ... Używam nodejs wersji jslint, która produkuje wyniki takie jak:Vim errorformat i 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) 

Po prostu chcę dopasować numer wiersza, kolumny i błędu i użyć bieżącego pliku nazwy pliku. Czy ktoś wie, jak to zrobić?

Aby było jasne, szukam formatu błędu, aby uruchomić to polecenie. Obecnie mój .vimrc plik ma

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

które po prostu nie działa (the jslint działa dobrze, ale errorformat jest źle) ...

Odpowiedz

2

I właściwie tylko zatrzymany JSLint do mojego makeprg dzisiaj wcześniej, i naturalnie Potrzebowałem quickfix wsparcie.

Utworzono gałąź node-jslint, która wyprowadza błędy JSLint w formacie GCC-like. Numer efm to: %f:%l:%c:%m. Jeśli możesz użyć node.js, polecam używanie węzła jslint (szczególnie jeśli pracujesz nad projektem node.js/CommonJS).

Co do pierwotnego problemu: Nie sądzę, że konieczne jest użycie %>. Jeśli usunięcie to nie pomoże, spróbuj po prostu następuje:

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

nie mogłem dostać format error pracować, ale przeszedłem do rozwidlenia jslint (raczej niż reid's) i to działa idealnie ... Dzięki –

1

nie jestem w 100% pewien na tej wersji. Użyłem jednego, który pobrałem i właśnie zmieniłem źródło jslint.js, aby wyprowadzić je dla mnie. Moja linia wygląda trochę jak.

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

Mam nadzieję, że pomoże Ci to zbliżyć się do pracy z formatem.

0

nigdy nie używałem tej opcji wcześniej, ale przykłady w pomocy wydają się wskazywać powinna istnieć dodatkowa %m na końcu swojej strukturze, a może po prostu trzeba uciec przecinek:

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

Aktualizacja: Rzeczywiście wydaje się, że w twoim ciągu błędów znajdują się dwie liczby, 1, po których następuje spacja, a następnie 116. Być może to będzie działać:

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

Nie, nie działa ... –

+0

nadal nie ma szczęścia ... –

8

Stary wątek, ale dla każdego, kto przyjeżdża po nim, jak sobie:

Dla bieżącej wersji węzła-jslint zainstalowanego przez KMP (v0.1.2), wyjście błędu wygląda następująco:

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 

Używam następujący EFM do analizowania błędów:

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

Dziękuję. Walczyłem z tym przez kilka dni! – Telemachus

+0

Ten efm działał także dla v0.1.4 –

+0

Działa świetnie! Jak, na Boga, wymyśliłeś to? Po drugie Telemachus! – bluekeys

6

Bardzo stary wątek, ale jest to kontynuacja do @dule's excellent answer. To naprawdę tylko uszczypnąć, ale może to być przydatne dla innych także (zajęło mi trochę czasu z TFM, aby się dogadać, więc dlaczego nie podzielić?):

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

Są dwie różnice, zarówno w trzeciej linii .Najpierw zastępuję początkowo zakodowane dopasowanie pojedynczej spacji wzorem, który pasuje do zera lub jednej spacji (np. Czyni to miejsce opcjonalnym). Musiałem to zrobić, bo następnego wyjścia z 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 

wyglądają bardzo uważnie, a zobaczysz go. W przypadku błędów 1-9 na początku linii występuje spacja. Dla 10 ... n, bez spacji. Mała rzecz, ale oznacza to, że okno quickfix nie działa poprawnie dla błędów 10 i wyższych. Ugh. (Btw, brałem pod uwagę odpowiedź "Nie rób więcej niż 9 błędów w danym pliku JS, ale wydawało się to trochę zbyt" ogon merdający psem ". Ponadto, teraz wiem więcej niż kilka godzin temu scanf.)

Drugą różnicą jest to, że otrzymuje %E z %A i dopasowującego %n wzorkiem zignorować tę liczbę. jest to zasadniczo ze względów estetycznych. Robi to @ drodze Dulè za, masz to wyjście w quickfix oknie :

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. 

nie chcę licznik błędów tam, a ja nie potrzebuję przypomnienia, że ​​są one wszystkie błędy - wiem, że tak użyciu %A, yo. u get to prostsze wyjście:

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

Widziałem ten sam problem (z błędami> linia 9 nie była poprawnie sformatowana) i ta odpowiedź naprawiła to! To powinna być zaakceptowana odpowiedź. – rowanu