2009-07-18 07:32:32 -04:00
|
|
|
*syntastic.txt* Syntax checking on the fly has never been so pimp.
|
|
|
|
*syntastic*
|
|
|
|
|
|
|
|
|
|
|
|
It's a bird! It's a plane! ZOMG It's ... ~
|
|
|
|
|
|
|
|
_____ __ __ _ ~
|
|
|
|
/ ___/__ ______ / /_____ ______/ /_(_)____ ~
|
|
|
|
\__ \/ / / / __ \/ __/ __ `/ ___/ __/ / ___/ ~
|
|
|
|
___/ / /_/ / / / / /_/ /_/ (__ ) /_/ / /__ ~
|
|
|
|
/____/\__, /_/ /_/\__/\__,_/____/\__/_/\___/ ~
|
|
|
|
/____/ ~
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Reference Manual~
|
|
|
|
|
|
|
|
|
|
|
|
==============================================================================
|
|
|
|
CONTENTS *syntastic-contents*
|
|
|
|
|
|
|
|
1.Intro...................................|syntastic-intro|
|
|
|
|
2.Functionality provided..................|syntastic-functionality|
|
|
|
|
2.1.The statusline flag...............|syntastic-statusline-flag|
|
|
|
|
2.2.Error signs.......................|syntastic-error-signs|
|
|
|
|
2.3.Error window......................|syntastic-error-window|
|
2009-12-16 05:14:55 -05:00
|
|
|
3.Commands................................|syntastic-commands|
|
|
|
|
4.Options.................................|syntastic-options|
|
|
|
|
5.Writing syntax checkers.................|syntastic-syntax-checkers|
|
|
|
|
6.About...................................|syntastic-about|
|
2009-12-16 05:33:00 -05:00
|
|
|
7.Changelog...............................|syntastic-changelog|
|
|
|
|
8.Credits.................................|syntastic-credits|
|
|
|
|
9.License.................................|syntastic-license|
|
2009-07-18 07:32:32 -04:00
|
|
|
|
|
|
|
|
|
|
|
==============================================================================
|
|
|
|
1. Intro *syntastic-intro*
|
|
|
|
|
|
|
|
Syntastic is a syntax checking plugin that runs buffers through external syntax
|
2009-08-11 05:09:30 -04:00
|
|
|
checkers as they are saved and opened. If syntax errors are detected, the user
|
|
|
|
is notified and is happy because they didn't have to compile their code or
|
|
|
|
execute their script to find them.
|
|
|
|
|
|
|
|
Syntastic comes in two parts: the syntax checker plugins, and the core script
|
|
|
|
(i.e. syntastic.vim). The syntax checker plugins are defined on a per-filetype
|
|
|
|
basis where each one wraps up an external syntax checking program. The core
|
|
|
|
script delegates off to these plugins and uses their output to provide the
|
2010-11-04 19:33:59 -04:00
|
|
|
syntastic functionality. Currently, syntax checking plugins exist for c,
|
|
|
|
coffee, cpp, cucumber, eruby, haml, haskell, html, javascript, lua, perl, php,
|
|
|
|
python, ruby, sass, sh, tex and xhtml.
|
|
|
|
|
|
|
|
NOTE: This list is subject to change without notice. Please check the
|
|
|
|
syntax_checkers directory for a reliable list of syntax checkers.
|
2009-08-11 05:09:30 -04:00
|
|
|
|
|
|
|
If your language is not supported then see |syntastic-syntax-checkers| for
|
|
|
|
details on how to implement a syntax checking plugin, and be sure to send me a
|
|
|
|
patch ;-)
|
|
|
|
|
|
|
|
This plugin is currently only recommended for *nix users. It is functional on
|
|
|
|
Windows, but since the syntax checking plugins shell out, the command window
|
|
|
|
briefly appears whenever one is executed.
|
|
|
|
|
2009-07-18 07:32:32 -04:00
|
|
|
|
|
|
|
==============================================================================
|
|
|
|
2. Functionality provided *syntastic-functionality*
|
|
|
|
|
2009-07-29 02:54:49 -04:00
|
|
|
By default, the script does nothing. The following functionality is provided
|
2009-08-11 05:09:30 -04:00
|
|
|
and must be enabled/activated as indicated (see the sections below for more
|
|
|
|
in-depth descriptions):
|
2009-07-29 02:54:49 -04:00
|
|
|
* A statusline flag appears when syntax errors are detected
|
|
|
|
* |signs| are placed beside lines with syntax errors, where a different
|
|
|
|
sign is used for errors and warnings.
|
|
|
|
* The :Errors command is provided to open a |location-list| for
|
|
|
|
the syntax errors in the current buffer
|
2009-07-18 07:32:32 -04:00
|
|
|
|
|
|
|
Note: This functionality is only available if a syntax checker plugin is
|
|
|
|
present for the filetype of the buffer in question. See
|
|
|
|
|syntastic-syntax-checkers| for details.
|
|
|
|
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
2.1. The statusline flag *syntastic-statusline-flag*
|
|
|
|
|
2009-07-20 06:53:07 -04:00
|
|
|
To use the statusline flag, this must appear in your |'statusline'| setting >
|
2009-07-18 07:32:32 -04:00
|
|
|
%{SyntasticStatuslineFlag()}
|
|
|
|
<
|
|
|
|
Something like this could be more useful: >
|
|
|
|
set statusline+=%#warningmsg#
|
|
|
|
set statusline+=%{SyntasticStatuslineFlag()}
|
|
|
|
set statusline+=%*
|
|
|
|
<
|
2011-02-19 02:10:20 -05:00
|
|
|
When syntax errors are detected a flag will be shown. The content of the flag
|
|
|
|
is derived from the |syntastic_stl_format| option
|
2009-07-18 07:32:32 -04:00
|
|
|
------------------------------------------------------------------------------
|
|
|
|
2.2. Error signs *syntastic-error-signs*
|
|
|
|
|
2009-07-20 06:53:07 -04:00
|
|
|
Syntastic uses the |:sign| commands to mark lines with errors and warnings in
|
|
|
|
the sign column. To enable this feature, use the |'syntastic_enable_signs'|
|
|
|
|
option.
|
2009-07-18 07:32:32 -04:00
|
|
|
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
2.3. The error window *:Errors* *syntastic-error-window*
|
|
|
|
|
|
|
|
You can use the :Errors command to display the errors for the current buffer
|
|
|
|
in the |location-list|.
|
|
|
|
|
|
|
|
Note that when you use :Errors, the current location list is overwritten with
|
|
|
|
Syntastic's own location list.
|
|
|
|
|
2009-12-16 05:14:55 -05:00
|
|
|
|
2009-07-18 07:32:32 -04:00
|
|
|
==============================================================================
|
2009-12-16 05:14:55 -05:00
|
|
|
3. Commands *syntastic-commands*
|
|
|
|
|
|
|
|
:SyntasticDisable [filetype] *:SyntasticDisable*
|
|
|
|
Disables syntax checking for the the given filetype (if specified), or the
|
|
|
|
current filetype.
|
|
|
|
|
|
|
|
:SyntasticEnable [filetype] *:SyntasticEnable*
|
|
|
|
Enables syntax checking for the the given filetype (if specified), or the
|
|
|
|
current filetype.
|
|
|
|
|
|
|
|
|
|
|
|
==============================================================================
|
|
|
|
4. Options *syntastic-options*
|
2009-07-18 07:32:32 -04:00
|
|
|
|
|
|
|
*'syntastic_enable_signs'*
|
|
|
|
Use this option to tell syntastic to use the |:sign| interface to mark syntax
|
|
|
|
errors: >
|
|
|
|
let g:syntastic_enable_signs=1
|
|
|
|
<
|
|
|
|
|
2011-02-04 18:26:23 -05:00
|
|
|
*'syntastic_auto_jump'*
|
|
|
|
Enable this option if you want the cursor to jump to the first detected error
|
|
|
|
when saving or opening a file: >
|
|
|
|
let g:syntastic_auto_jump=1
|
|
|
|
<
|
|
|
|
|
2009-07-18 07:32:32 -04:00
|
|
|
*'syntastic_auto_loc_list'*
|
2011-02-16 01:39:51 -05:00
|
|
|
Use this option to tell syntastic to automatically open and/or close the
|
|
|
|
|location-list| (see |syntastic-error-window|).
|
|
|
|
|
|
|
|
When set to 1 the error window will be automatically opened when errors are
|
|
|
|
detected, and closed when none are detected. >
|
2009-07-18 07:32:32 -04:00
|
|
|
let g:syntastic_auto_loc_list=1
|
|
|
|
<
|
2011-02-16 01:39:51 -05:00
|
|
|
When set to 2 the error window will be automatically closed when no errors are
|
|
|
|
detected, but not opened automatically. >
|
|
|
|
let g:syntastic_auto_loc_list=2
|
|
|
|
<
|
2009-07-19 22:59:54 -04:00
|
|
|
|
|
|
|
*'syntastic_quiet_warnings'*
|
|
|
|
|
|
|
|
Use this option if you only care about syntax errors, not warnings. When set,
|
|
|
|
this option has the following effects:
|
|
|
|
* the statusline flag only counts syntax errors
|
|
|
|
* no |signs| appear unless there is at least one error, whereupon both
|
|
|
|
errors and warnings are displayed
|
|
|
|
* the |'syntastic_auto_loc_list'| option only pops up the error window if
|
|
|
|
there's at least one error, whereupon both errors and warnings are
|
|
|
|
displayed
|
|
|
|
>
|
|
|
|
let g:syntastic_quiet_warnings=1
|
|
|
|
<
|
2009-12-16 05:14:55 -05:00
|
|
|
|
2011-02-19 02:10:20 -05:00
|
|
|
*'syntastic_stl_format'*
|
|
|
|
|
|
|
|
Default: [Syntax: line:%F (%t)]
|
|
|
|
Use this option to control what the syntastic statusline text contains. Several
|
|
|
|
magic flags are availble to insert information:
|
|
|
|
%e - number of errors
|
|
|
|
%w - number of warnings
|
|
|
|
%t - total number of warnings and errors
|
|
|
|
%fe - line number of first error
|
|
|
|
%fw - line number of first warning
|
|
|
|
%F - line number of first warning or error
|
|
|
|
|
|
|
|
Several additional flags are available to hide text under certain conditions:
|
|
|
|
%E{...} - hide the text in the brackets unless there are errors
|
|
|
|
%W{...} - hide the text in the brackets unless there are warnings
|
|
|
|
%B{...} - hide the text in the brackets unless there are both warnings AND
|
|
|
|
errors
|
|
|
|
These flags cant be nested.
|
|
|
|
|
|
|
|
Example: >
|
|
|
|
let g:syntastic_stl_format = '[%E{Err: %fe #%e}%B{, }%W{Warn: %fw #%w}]'
|
|
|
|
<
|
|
|
|
If this format is used and the current buffer has 5 errors and 1 warning
|
|
|
|
starting on lines 20 and 10 respectively then this would appear on the
|
|
|
|
statusline: >
|
|
|
|
[Err: 20 #5, Warn: 10 #1]
|
|
|
|
<
|
|
|
|
If the buffer had 2 warnings, starting on line 5 then this would appear: >
|
|
|
|
[Warn: 5 #2]
|
|
|
|
<
|
|
|
|
|
2009-12-16 05:14:55 -05:00
|
|
|
*'syntastic_disabled_filetypes'*
|
|
|
|
Use this option to disable syntax checking on selected filetypes by default.
|
|
|
|
Should be set to a list of filetypes, e.g. >
|
|
|
|
let g:syntastic_disabled_filetypes = ['ruby', 'php']
|
|
|
|
<
|
|
|
|
Syntax checking can be enabled again via |:SyntasticEnable|.
|
|
|
|
|
2009-07-18 07:32:32 -04:00
|
|
|
==============================================================================
|
2009-12-16 05:14:55 -05:00
|
|
|
5. Writing syntax checkers *syntastic-syntax-checkers*
|
2009-07-18 07:32:32 -04:00
|
|
|
|
|
|
|
|
|
|
|
A syntax checker plugin is really nothing more than a single function. You
|
2009-07-20 06:53:07 -04:00
|
|
|
should define them in ~/.vim/syntax_checkers/<filetype>.vim, but this is
|
|
|
|
purely for convenience; Syntastic doesn't actually care where these functions
|
|
|
|
are defined.
|
2009-07-18 07:32:32 -04:00
|
|
|
|
|
|
|
A syntax checker plugin must define a function of the form:
|
|
|
|
>
|
|
|
|
SyntaxCheckers_<filetype>_GetLocList()
|
|
|
|
<
|
|
|
|
The output of this function must be of the same format as that returned by
|
|
|
|
the |getloclist()| function. See |getloclist()| and |getqflist()| for
|
|
|
|
details.
|
|
|
|
|
|
|
|
To achieve this, the function should call |SyntasticMake()| or shell out to a
|
|
|
|
syntax checker, parse the output and munge it into the format.
|
|
|
|
|
|
|
|
There are several syntax checker plugins provided with this plugin. The ruby
|
|
|
|
one is a good example of |SyntasticMake()|, while the haml one is a good
|
|
|
|
example of how to create the data structure manually.
|
|
|
|
|
|
|
|
|
|
|
|
SyntasticMake({options}) *SyntasticMake()*
|
|
|
|
{options} must be a dictionary. It can contain "makeprg" and "errorformat"
|
|
|
|
as keys (both optional).
|
|
|
|
|
|
|
|
SyntasticMake will run |:lmake| with the given |'makeprg'| and
|
|
|
|
|'errorformat'| (using the current settings if none are supplied). It will
|
|
|
|
store the resulting error list and use it to provide all of the
|
|
|
|
|syntastic-functionality|. The previous makeprg and errorformat settings
|
|
|
|
will then be restored, as well as the location list for the window. From
|
|
|
|
the user's perspective, it will be as though |:lmake| was never run.
|
|
|
|
|
|
|
|
Note that the given "makeprg" and "errorformat" will be set using |:let-&|,
|
|
|
|
so you should not escape spaces.
|
|
|
|
|
|
|
|
|
|
|
|
==============================================================================
|
2009-12-16 05:14:55 -05:00
|
|
|
6. About *syntastic-about*
|
2009-07-18 07:32:32 -04:00
|
|
|
|
|
|
|
The author of syntastic is a mighty wild stallion, hear him roar! >
|
|
|
|
_ _ _____ _____ ___ ___ ___ ____ _ _ _
|
|
|
|
| \ | | ____| ____|_ _|_ _|_ _/ ___| | | | |
|
|
|
|
| \| | _| | _| | | | | | | | _| |_| | |
|
|
|
|
| |\ | |___| |___ | | | | | | |_| | _ |_|
|
|
|
|
|_| \_|_____|_____|___|___|___\____|_| |_(_)
|
|
|
|
|
|
|
|
<
|
|
|
|
He likes to trot around in the back yard reading his emails and sipping a
|
2009-12-16 05:02:36 -05:00
|
|
|
scolding hot cup of Earl Grey. Email him at martin.grenfell at gmail dot com.
|
|
|
|
He can also be found trolling the #vim channel on the freenode IRC network as
|
2009-07-18 07:32:32 -04:00
|
|
|
scrooloose.
|
|
|
|
|
|
|
|
Bug reports, feedback, suggestions etc are welcomed.
|
|
|
|
|
|
|
|
|
|
|
|
The latest official releases will be on vim.org at some point.
|
|
|
|
|
|
|
|
The latest dev versions are on github
|
|
|
|
http://github.com/scrooloose/syntastic
|
|
|
|
|
|
|
|
==============================================================================
|
2009-12-16 05:33:00 -05:00
|
|
|
7. Changelog *syntastic-changelog*
|
|
|
|
|
2010-10-28 06:13:34 -04:00
|
|
|
1.2.0
|
|
|
|
- New syntax checkers from github:kongo2002
|
|
|
|
- c (thanks also to github:jperras)
|
|
|
|
- cpp
|
|
|
|
- lua
|
|
|
|
- sh (thanks also to github:jmcantrell)
|
|
|
|
- add coffee syntax checked by github:lstoll
|
|
|
|
- add tex syntax checker
|
|
|
|
- make html checker play nicer with html5, thanks to github:enaeseth
|
|
|
|
- escape filenames properly when invoking syntax checkers, thanks to
|
|
|
|
github:jmcantrell
|
|
|
|
- adjust the ruby syntax checker to avoid some common annoying warnings,
|
|
|
|
thanks to github:robertwahler
|
|
|
|
|
2009-12-16 05:33:00 -05:00
|
|
|
1.1.0 [codenamed: tpimp]
|
|
|
|
- Dont load rubygems for ruby/eruby syntax checkers. Thanks tpope.
|
|
|
|
- Improve the javascript syntax checker to catch some warnings that were
|
|
|
|
getting missed. Thanks tpope.
|
|
|
|
- Dont automatically focus the error window. Thanks tpope.
|
|
|
|
- Add support for cucumber [tpope], haskell & perl [Anthony Carapetis],
|
|
|
|
and xhtml
|
|
|
|
- Add commands to enable/disable syntax checking at runtime. See :help
|
|
|
|
syntastic-commands.
|
|
|
|
- Add an option to specifiy syntax checkers that should be disabled by
|
|
|
|
default. See :help syntastic_disabled_filetypes.
|
|
|
|
- Dont use :signs if vim wasnt compiled with support for them.
|
|
|
|
|
|
|
|
|
|
|
|
==============================================================================
|
|
|
|
8. Credits *syntastic-credits*
|
|
|
|
|
|
|
|
Thanks to the following people for testing, bug reports, patches etc. They own,
|
|
|
|
hard.
|
|
|
|
|
|
|
|
Tim Carey-Smith (halorgium)
|
|
|
|
Tim Pope (tpope)
|
|
|
|
Travis Jeffery
|
|
|
|
Anthony Carapetis
|
|
|
|
|
|
|
|
|
|
|
|
==============================================================================
|
|
|
|
9. License *syntastic-license*
|
2009-07-18 07:32:32 -04:00
|
|
|
|
|
|
|
Syntastic is released under the wtfpl.
|
|
|
|
See http://sam.zoy.org/wtfpl/COPYING.
|