Bug fix: proper escaping of special characters in filenames.
Workaround for a bug in Vim: errorformat's "%f" doesn't properly detect
filenames if they are not delimited by characters that are illegal in
filenames, such as ":". Solution: switch to a preprocess function.
References: http://docs.basex.org/wiki/Commands#Valid_Names
Checkers pc_lint, javac, flow, C compilers: findfile() should start in
the current file's base directory rather than the current directory.
Elixir checker: use the more efficient findfile() instead of
syntastic#util#findInParent().
ghc-mod will always use UTF-8 encoding on output, regardless of the
current encoding. This is a problem for syntastic because it mangles
the filenames. The commit below is a (perhaps misguided) attempt to
fix that, by calling iconv() to re-encode output from ghc-mod to Vim's
encoding.
Undocumented option "bash_hack" is gone.
New function syntastic#util#system(), that sets up the environment and
is now used consistently everywhere.
Unrelated fix for the elixir checker (syntax).
When the python/prospector checker finds no issues in the file, the "messages" key is absent in the JSON output. Make sure we don't spew out a warning when that happens.
If a key in `quiet_messages` is prefixed by an exclamation mark "!", the
corresponding filter is negated.
Also, the "file" key may now be followed by filename modifiers.
The new function ensures line numbers in loclists are not beyond end of
buffer. The implementation is very inefficient, because it loads all
buffers in memory.
`eslint` and `lessc` checkers need this function.
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.
Optimisation: merge handling of global and per-checker filters.
Feature: allow [] and '' values for quiet_messages filter elements.
Feature: allow overrides for quiet_messages filters.
Feature: buffer-local auto_jump and quiet_messages.
Safety: add magic specifiers to catch regexps.
Cleanup: minor restructuring for the forthcoming foreign checkers
feature.
YCM has now its own navigation functions, so there is no longer any need
to call it from syntastic.
g:syntastic_delayed_redraws is also gone. Syntastic doesn't use popup
menus, and the only purpose of this variable was to provide a workaround
for a problem triggered by YCM.
References:
https://github.com/Valloric/YouCompleteMe/pull/763
New options: g:syntastic_quiet_messages, and a per-checker version
of it named g:syntastic_<filetype>_<checker>_quiet_messages.
Option g:syntastic_quiet_warnings is now deprecated.
Option g:syntastic_ignore_files now refers only to files that shouldn't
be checked.
New variables: g:syntastic_debug_file, the name of a file where to write
debugging messages, in addition to adding them to the message history.
The old g:syntastic_debug is now a sum of flags:
* 1 - trace checker calls
* 2 - dump loclists
* 4 - trace notifiers
* 8 - trace autocommands
* 16 - dump syntastic variables (not implemented yet)
(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).