JSHint has a secondary error format that includes a number related to the error message.
E.g. The normal error format is something like:
.\Foo.js: line 2, col 5, Missing semicolon. (W033)
But the secondary error format includes a number in parentheses:
.\Foo.js: line 3, col 4, Blocks are nested too deeply. (2) (W073)"
I've changed the errorformat to read the message until it hits a space, instead of a period, so that these errors are included.
pass `jshint` the `--verbose` option to get 'W' or 'E' indicating
whether something is a warning or an error.
NOTE: this was tested with jshint 1.1.0 installed with `npm install
jshint`
It now uses the correct path for the dart_analyzer, it uses the
machine readable format to provide more information.
The highlighter now highlights the exact span that the analyzer complains
about. Further, warnings are different from errors now.
The variable force_highlight_callback is gone.
Highlight functions are now consistently named
SyntaxCheckers_<filetype>_<checker>_GetHighlightRegex(), and they
take precedence over highlighting based on column.
RVM does not always provide an executable for specific ruby version
that is loaded (the "system" version).
RVM, or whatever else the user uses, should always setup "ruby" to point
to the correct version so this can always be used.
In today's html editing, almost nobody writes a "pure" html code
(complete, i mean), with body, title, etc... most of people uses CMS's
and similar things, which means that the html is just a "piece" of html
and not the entire structure, the changes on this branch are meant to
ignore those annoying warnings
The last line is for structures that includes the "&" character, like in
those kind of cases: < a href="http://foo.bar/something.php&value&something&foo" >
PHP mess detector expects the filename as the first argument, followed
by the output format and the rules. To fix this, use the 'post_args' to
provide the arguments.
Also change the subchecker to 'phpmd' instead of 'phpcs'.
Add 2 classes: SyntasticChecker and SyntasticRegistry.
SyntasticChecker represents a checker. It holds funcrefs to the checker
func, the highlight regex func and a new `isAvailable()` func (that
essentially just checks if the checker exe is installed)
SyntasticRegistry is responsible for:
* loading checkers
* storing checkers
* fetching the checkers to use according to availability and the users
settings
Motivation/benefits:
* in the current system only one checker can be loaded per filetype
* syntax checkers cant be "chained" together
* the system is hard to add features to since fundamental concepts like
syntax checkers and location lists arent represented explicitly
Things left to do:
* add a call to g:SyntasticRegistry.CreateAndRegisterChecker() to all
checkers
* add an `isAvailable` function to all checkers
* move all checkers into `syntax_checkers/filetype/checkername.vim` -
g:SyntasticRegistry assumes this layout, and its a good idea anyway
for consistency and it makes it easier for users to add their own
checkers
Things to do after all of the above:
* add a LocationList class and move all the filtering functions onto it
* possibly add an Error class that wraps up each item in a loc list
Random notes:
* with the new system you can select the checkers to use with e.g.
`let g:syntastic_python_checkers=['flake8', 'pylint']`
This will try flake8 first, and if no errors are detected it will move
onto pylint.
update makeprg builder:
* it now accepts `fname`, `tail`, and `post_args` params.
* add some doc above syntastic#makeprg#build
* update a bunch of checkers to use the new params
Still have quite a few checkers that arent using makeprg#build.
Including all c* and a few other c-like checkers. And PHP.
Not to worried about c* as these checkers are complicated and probably
justify having their own logic to build makeprgs.
Make all the easy updates. There are still quite a few to do, but in
doing these ones I can see that syntastic#makeprg#build() needs to
accept a few more options. Namely:
* "postargs" that appear after the filename
* "tail" that appears after everything - used for things like
redirecting output and piping to grep/sed/etc
* the filename itself - only the java checkers needed this since they
specify the directory of the file to check as well
There are still a few other things to do as well:
* remove the options from the checkers that are now provided by
syntastic#makeprg#build implicitly - i.e. the checker exe and args.
* also, we need to doc the above implicit checker options