Commit Graph

123 Commits

Author SHA1 Message Date
LCD 47
f5dc5b1ad4 Off by one error, sorry. :( 2013-02-06 15:48:58 +02:00
LCD 47
b53072bee0 Munge the output of pylint in Vim rather than relying on sed(1). 2013-02-06 15:29:56 +02:00
Martin Grenfell
e0b8e87c93 refactor all the syntax checkers to use the new API and dir layout 2013-01-27 20:08:30 +00:00
Martin Grenfell
58ba8d3161 refactor how we represent and store checkers using python as a demo
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.
2013-01-24 00:19:13 +00:00
Chaz Lever
50561a87f7 Fix flake8 error/warning checking
Error/warning checking did not correctly parse output from flake8. This
resulted in Syntastic incorrectly displaying some warnings as errors.
2013-01-22 15:19:28 -05:00
Martin Grenfell
5b31495af2 update makeprg builder and update some checkers to use it
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.
2013-01-20 12:27:19 +00:00
Martin Grenfell
6a184f0e37 update checkers to use the new syntastic#makeprg#build()
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
2013-01-20 11:13:01 +00:00
Martin Grenfell
10c845d1f5 add a makeprg builder
The problem
---

Some people want to change the syntax checker args and/or executable.
Currently they have to create their own checker to do this.

Solution
---

Create a standard API for building a makeprg that allows users to set
global variables to override the exe or args.

This API is in use in the coffee and python/flake8 checkers - as
proofs of concept.

So, if the user wanted to change the args that get passed to `flake8`
they can now set `let g:syntastic_python_flake8_args="--foo --bar"` in
their vimrc. Similarly they could set `let
g:syntastic_python_flake8_exe='python foo.py'`
2013-01-02 13:05:27 +00:00
Artem Nezvigin
4126760bca Add python checker that uses python itself
The advantage to this is that no 3rd party modules are required. People
new to Python probably won't have flake8/pyflakes/pylint installed. This
will get them basic syntax checking (no linting) out of the box.
2012-12-01 12:17:46 -08:00
Jose Jiménez
9504f526d4 The warnings were shown as errors when using flake8 2012-10-26 13:27:03 +02:00
Adam Coddington
89e22ba2d4 Modifying pylint checker such that it displays both the original pylint error code as well as translating said error codes into syntastic-compatible Error and Warning messages. 2012-06-27 10:21:43 -07:00
Lee Packham
02e510eec4 Don't shoe horn 'syntax error' everywhere
It hides the actual warning/error from Syntastic - so don't do that.
2012-04-12 06:48:17 +01:00
Martin Grenfell
b4e85a8762 python/flake8: assume all outputs are errors - not warnings
The output of flake8 is ambiguous as to whether results should be
interpreted as warnings or errors. I have changed it to assume errors to
match the python/pyflakes checker.

In future we may want to change this or add items to the errorformat for
some specific warnings if they are annoying.

This fixes #203.
2012-03-27 10:41:37 +01:00
James Polley
7cd8efec70 Fixes #202 - redict stderr in a way that doesn't break on versions of
bash <4.0
2012-03-24 19:18:08 +11:00
Martin Grenfell
5be83cdcc7 Merge pull request #201 from bukzor/master
redirect pylint stderr
2012-03-20 04:27:52 -07:00
Li He
a9383527d6 python/pylint: add g:syntastic_python_checker_args
I borrow this from flake8.
2012-03-20 11:21:08 +00:00
Buck Golemon
1a91488451 prevent stderr from messing up the terminal, in the (usual) case of no pylintrc found 2012-03-12 12:15:51 -07:00
Buck Golemon
c039b0f128 fix pylint parsing 2012-03-11 22:04:47 -07:00
Parantapa Bhattacharya
760d84588e Fix pylint error format string
Used the error format string from sashahart/pylint.vim which seems
to be much more comprehensive.
2012-03-04 13:03:09 +05:30
Martin Grenfell
892cc2c232 refactor the error highlighting system
* remove the public SyntasticHighlightErrors() function
* shift the above code into s:HighlightErrors(). This is called
  automatically if g:syntastic_enable_highlighting is set
* to get the highlight regex we just look for a function called
  Syntastic_<filetype>_GetHighlightRegex
* to force this function to be called, each error item must have the
  'force_highlight_callback' key set

This code has one important functional change: now errors are *always*
highlighted if possible whereas previously they were only highlighted if
a call to SyntasticHighlightErrors was made.
2012-03-02 10:05:15 +00:00
Martin Grenfell
637182c181 python/pyflakes: report errors by default
The error messages that pyflakes outputs dont contain enough information
to classify them as errors or warnings. Apart from checking for all
known warning outputs and classifying the rest as errors (or vice versa)
there is no way classify.

Make the syntax checker class all results as errors. Individual warning
formats can be checked for later if they become a problem.

This addresses #189.
2012-02-28 15:19:32 +00:00
Martin Grenfell
bcfdab6a02 python: bugfix to pyflakes checker
dont refer to g:syntastic_python_checker since - due to a previous
commit - this is not guaranteed to exist any more.

This change should have been done in the aforementioned commit - but I
failed.
2012-02-23 13:24:34 +00:00
Martin Grenfell
d454a00615 split python checker out into 3 files
previously there were 3 checkers in the one file
2012-02-20 10:20:48 +00:00