Commit Graph

58 Commits

Author SHA1 Message Date
LCD 47
dac07db617 Cleanup: shut up most vint warnings. 2015-03-25 18:44:34 +02:00
LCD 47
47eabae37d New global option: "shell".
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).
2015-03-12 19:20:06 +02:00
LCD 47
1ba96436c1 Cleanup: handling versions. Minor optimisation. 2015-01-23 11:39:42 +02:00
LCD 47
1d2f8d514a Formatting: folding. 2015-01-04 12:46:54 +02:00
LCD 47
57f1a0eb20 New user variables: syntastic_<filetype>_<checker>_sort. 2014-10-24 15:55:47 +03:00
LCD 47
83d0d7fef4 Pylint: remove leftovers from the logging patch. 2014-10-06 22:23:10 +03:00
LCD 47
ce89396808 Checker-specific logging.
New debug level 32, for logging tracing checkers.
New method checker.log().
Cleanup.
2014-10-06 22:19:24 +03:00
LCD 47
18a7a9ff59 Pylint checker: more versioning delirium. 2014-09-16 18:31:57 +03:00
LCD 47
4c5ff42723 New option for SyntasticMake(): env.
Setting environment variables by prefixing commands with 'VARIABLE=value'
doesn't work under csh.  Solution: let Vim set the environment variables.
2014-07-07 19:04:22 +03:00
LCD 47
4b00bf5b2e Python checkers: workaround for GNU readline brain damage.
On terms that support smm / rmm (f.i. xterm), initializing readline
prints the smm sequence, regardless of whether stdout is a terminal or
not, which in turn can make checkers' output unparseable.

Workaround: set TERM to dumb before calling the checkers.
2014-04-23 21:16:41 +03:00
LCD 47
68131a7679 Bug fix: error sorting.
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.
2014-04-16 22:16:40 +03:00
LCD 47
a781914a16 Yet more pylint versioning delirium. 2014-03-24 15:03:50 +02:00
LCD 47
b0191a144c Refactor of quiet_message filters.
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.
2014-02-24 01:10:33 +02:00
LCD 47
ffe3085a80 Pylint versioning strikes again. 2014-02-17 11:49:02 +02:00
LCD 47
f5a45095e2 Escape Festschrift: getExec() needs to be escaped before being used. 2014-02-06 16:50:27 +02:00
LCD 47
1bc5fee054 pylint: fix detection of column numbers. 2014-02-04 11:53:26 +02:00
LCD 47
44d7ffd7e0 makeprgBuild() refactor: add *_before and *_after options. 2014-01-28 21:44:44 +02:00
Buck Golemon
4636be0818 fix pylint messages when pythonrc specifies format=colorized 2014-01-23 16:13:43 -08:00
LCD 47
12b3c071a5 Pylint: use symbolic names in messages. Add column information. 2014-01-23 22:20:00 +02:00
LCD 47
b9accaa810 Minor cleanup: &cpo guards and formatting. 2014-01-03 11:29:08 +02:00
LCD 47
b5050a0264 Pylint: add exit code check. 2013-12-11 10:43:10 +02:00
LCD 47
7b36f9147f More detailed debugging.
Moved logging functions to autoload/syntastic/log.vim.
Cleanup debug functions.
Add a function to dump option variables.
2013-11-14 10:13:05 +02:00
LCD 47
71ad20e184 More typos. 2013-11-08 10:45:15 +02:00
LCD 47
fd5a52e0bd Cleanup. 2013-11-04 23:00:51 +02:00
LCD 47
6d81ac5dd0 Registry cleanup, stage 3.
Make syntastic#makeprg#build() a dictionary function.
Remove the mandatory checker argument to syntastic#makeprg#build().
2013-11-02 10:44:06 +02:00
LCD 47
3694908d05 Registry cleanup, stage 2.
(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.
2013-11-02 10:44:06 +02:00
LCD 47
28bce98a68 Registry cleanup, stage 1.
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).
2013-11-02 10:44:06 +02:00
LCD 47
cd1d1a2a55 Cleanup. 2013-11-01 11:51:04 +02:00
LCD 47
2fbd870a20 Deal with more pylint versioning creativity. 2013-10-08 18:24:14 +03:00
LCD 47
237ebeadb2 Fix pylint version parsing on Windows. 2013-09-25 13:08:50 +03:00
LCD 47
f79e9d2eda Minor cleanup. 2013-09-24 21:43:12 +03:00
LCD 47
bedf88c184 Cleanup parsing versions. 2013-09-24 08:39:07 +03:00
LCD 47
c0f349a4b2 Pylint checker again: calling syntastic#util#parseVersion() is wrong. 2013-09-23 23:29:10 +03:00
LCD 47
8965bd141b Safer version check for pylint. 2013-09-23 23:14:46 +03:00
LCD 47
3eb51f1e26 Cleaner error handling for pylint. 2013-09-20 07:49:19 +03:00
LCD 47
8805b83654 Add safety guard for pylint. 2013-09-20 01:16:36 +03:00
LCD 47
e4a966a517 Pylint: ignore informational messages. 2013-08-12 11:22:12 +03:00
LCD 47
755ecfe46b Catch up with the latest pylint contortions. 2013-08-07 12:01:45 +03:00
LCD 47
d3354f175c Make syntastic#makeprg#build() aware of filetypes. Fixes #667. 2013-05-31 21:05:45 +03:00
LCD 47
7319cb6a9e Postprocessing functions.
This patch adds an option 'postprocess' to SyntasticMake().  The value
of this option is a list of names.  Each name is translated to a
function syntastic#postprocess#name().  These functions are applied in
order to the list of errors just before SyntasticMake() returns.  They
take a single parameter, the list of errors, and are supposed to
returned the processed list.
2013-05-10 14:11:07 +03:00
LCD 47
408287de6f Cleanup.
Adds an option g:syntastic_xhtml_tidy_ignore_errors to xhtml/tidy.
Cosmetic code changes.
2013-04-15 11:21:52 +03:00
LCD 47
bd2d5e37ed Error format fix for pylint. 2013-04-10 11:48:17 +03:00
Martin Grenfell
16424e5761 add guards to all checkers
goddamn I love macros
2013-02-21 15:50:41 +00:00
LCD 47
b33e37470f Output from pylint should be sorted. 2013-02-06 16:27:49 +02:00
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
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