Error sorting can't be done as a postprocess function called from
SyntasticMake(), since the final values of some relevant fields (f.i.
type) might not be known yet at that point. Solution: move sorting to
getLocListRaw(), after per-checker quiet_messages. New checker methods
getWantSort() / setWantSort() are needed.
Second problem: some checkers return screen columns mixed with byte
indices. Solution: compute screen columns as needed. Sadly, everything
about working with screen columns is fragile.
(1) Checkers now have an _exec attribute, and an accessor getExec().
(2) CreateAndRegisterChecker() initializes _exec from an optional argument
'exec'. If this argument is missing, 'name' is used instead.
(3) Functions SyntaxCheckers_*_IsAvailable() are now dictionary functions.
(4) Functions SyntaxCheckers_*_IsAvailable() are now optional. When
they are missing, they are assumed to return executable(expand(self.getExec())).
(5) Argument 'exe' of function syntastic#makeprg#build() is now optional.
If this argument is missing, expand(self.getExec()) is used to set checker
executables.
Make SyntaxCheckers_*_GetLocList() dictionary functions.
Pass a reference to the current checker to syntastic#makeprg#build().
Add an optional 'redirect' argument to CreateAndRegisterChecker().
Change the sh checker to use the new dictionary functions.
Add a new registry method getLocListRaw() (needed for the sh checker).
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`