Commit Graph

25 Commits

Author SHA1 Message Date
LCD 47
8393a3c7a2 Cosmetic cleanup. 2017-09-15 21:04:16 +03:00
LCD 47
dac07db617 Cleanup: shut up most vint warnings. 2015-03-25 18:44:34 +02:00
LCD 47
1ba96436c1 Cleanup: handling versions. Minor optimisation. 2015-01-23 11:39:42 +02:00
LCD 47
5359f7f4e1 Python checker: new option g:syntastic_python_python_use_codec (@delfick).
The new option tells the checket to load the file in memory and look for
a comment line "# coding: <codec>".  If found, the named codec is used
to decode the file before checking.  This makes sense only if said codec
doesn't change the line numbers of the initial file.  An example of such
codec is "spec" provided by the "Nose of Yeti" library:

https://github.com/delfick/nose-of-yeti
2015-01-17 11:17:35 +02:00
LCD 47
1d2f8d514a Formatting: folding. 2015-01-04 12:46:54 +02:00
LCD 47
d1b401609b Bug fix: glob(), globpath(), and expand() should ignore wildignore. 2015-01-04 09:01:55 +02: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
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
daf74923b7 Escape Festschrift, vol. 2: add function getExecEscaped(). 2014-02-07 11:19:30 +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
4c2004d2e5 Bug fix: the result of expand('<sfile>:p:h') has to be escaped. 2014-02-06 11:58:30 +02:00
LCD 47
6c91e8d802 Rework of the python checker, fixing column reporting. 2014-01-05 08:39:14 +02:00
LCD 47
b9accaa810 Minor cleanup: &cpo guards and formatting. 2014-01-03 11:29:08 +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
6ba8e651cb Make shell escaping less produce fewer useless quotes.
Function inspired by tpope's vim-dispatch.
2013-07-04 21:04:20 +03:00
LCD 47
d3354f175c Make syntastic#makeprg#build() aware of filetypes. Fixes #667. 2013-05-31 21:05:45 +03:00
LCD 47
51001b66de Typo. 2013-04-12 13:29:47 +03:00
LCD 47
4604c97f06 Rework of the python checker. 2013-04-12 13:14:07 +03:00
Martin Grenfell
16424e5761 add guards to all checkers
goddamn I love macros
2013-02-21 15:50:41 +00: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
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