@ -46,37 +46,38 @@
## 1\. Introduction
Syntastic is a syntax checking plugin for [Vim][13 ] that runs files through
Syntastic is a syntax checking plugin for [Vim][vim ] that runs files through
external syntax checkers and displays any resulting errors to the user. This
can be done on demand, or automatically as files are saved. 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.
At the time of this writing, syntastic has checking plugins for ActionScript,
Ada, Ansible configurations, API Blueprint, AppleScript, AsciiDoc, ASM,
BEMHTML, Bro, Bourne shell, C, C++, C#, Cabal, Chef, CoffeeScript, Coco ,
Coq, CSS, Cucumber, CUDA, D, Dart, DocBook, Dockerfile, Dust, Elixir,
Ada, Ansible configurations, API Blueprint, AppleScript, AsciiDoc, Assembly
languages, BEMHTML, Bro, Bourne shell, C, C++, C#, Cabal, Chef, CoffeeScript,
Coco, Co q, CSS, Cucumber, CUDA, D, Dart, DocBook, Dockerfile, Dust, Elixir,
Erlang, eRuby, Fortran, Gentoo metadata, GLSL, Go, Haml, Haskell, Haxe,
Handlebars, HSS, HTML, Java, JavaScript, JSON, JSX, LESS, Lex, Limbo, LISP,
LLVM intermediate language, Lua, Markdown, MATLAB, Mercury, NASM, Nix,
Objective-C, Objective-C++, OCaml, Perl, Perl POD, PHP, gettext Portable
Object, OS X and iOS property lists, Pug (formerly Jade), Puppet, Python, QML,
R, Racket, RDF TriG, RDF Turtle, Relax NG, reStructuredText, RPM spec, Ruby,
SASS/SCSS, Scala, Slim, SML, Sphinx, SQL, Stylus, Tcl, TeX, Texinfo, Twig,
TypeScript, Vala, Verilog, VHDL, VimL, xHtml, XML, XSLT, XQuery, YACC, YAML,
YANG data models, z80, Zope page templates, and zsh. See the [wiki][3] for
details about the corresponding supported checkers.
Object, OS X and iOS property lists, Pug (formerly Jade), Puppet, Python,
QML, R, Racket, RDF TriG, RDF Turtle, Relax NG, reStructuredText, RPM spec,
Ruby, SASS/SCSS, Scala, Slim, SML, Sphinx, SQL, Stylus, Tcl, TeX, Texinfo,
Twig, TypeScript, Vala, Verilog, VHDL, VimL, xHtml, XML, XSLT, XQuery,
YACC, YAML, YANG data models, z80, Zope page templates, and Zsh. See the
[manual][checkers] for details about the corresponding supported checkers
(`:help syntastic-checkers` in Vim).
A number of third-party Vim plugins also provide checkers for syntastic,
for example: [merlin][30], [omnisharp-vim][25], [rust.vim][12 ],
[syntastic-extras][26], [syntastic-more][27], [vim-crystal][29 ],
[vim-eastwood][28], and [vim-swift][24 ].
for example: [merlin][merlin], [omnisharp-vim][omnisharp], [rust.vim][rust ],
[syntastic-extras][myint], [syntastic-more][roktas], [vim-crystal][crystal ],
[vim-eastwood][eastwood], and [vim-swift][swift ].
Below is a screenshot showing the methods that Syntastic uses to display syntax
errors. Note that, in practise, you will only have a subset of these methods
enabled.
![Screenshot 1][0 ]
![Screenshot 1][screenshot ]
1. Errors are loaded into the location list for the corresponding window.
2. When the cursor is on a line containing an error, the error message is echoed in the command window.
@ -94,7 +95,7 @@ enabled.
### 2.1\. Requirements
Syntastic itself has rather relaxed requirements: it doesn't have any external
dependencies, and it needs a version of [Vim][13 ] compiled with a few common
dependencies, and it needs a version of [Vim][vim ] compiled with a few common
features: `autocmd` , `eval` , `file_in_path` , `modify_fname` , `quickfix` ,
`reltime` , and `user_commands` . Not all possible combinations of features that
include the ones above make equal sense on all operating systems, but Vim
@ -102,8 +103,8 @@ version 7 or later with the "normal", "big", or "huge" feature sets should be
fine.
Syntastic should work with any modern plugin managers for Vim, such as
[NeoBundle][14], [Pathogen][1], [Vim-Addon-Manager][15], [Vim-Plug][16 ], or
[Vundle][17]. Instructions for installing syntastic with [Pathogen][1 ] are
[NeoBundle][neobundle], [Pathogen][pathogen], [Vim-Addon-Manager][vam], [Vim-Plug][plug ], or
[Vundle][vundle]. Instructions for installing syntastic with [Pathogen][pathogen ] are
included below for completeness.
Starting with Vim version 7.4.1486 you can also load syntastic using the
@ -115,20 +116,21 @@ syntastic is present only in versions 7.4.1486 and later.
Last but not least: syntastic doesn't know how to do any syntax checks by
itself. In order to get meaningful results you need to install external
checkers corresponding to the types of files you use. Please consult the
[wiki][3] for a list of supported checkers.
[manual][checkers] (`:help syntastic-checkers` in Vim) for a list of supported
checkers.
< a name = "installpathogen" > < / a >
### 2.2\. Installing syntastic with Pathogen
If you already have [Pathogen][1 ] working then skip [Step 1 ](#step1 ) and go to
If you already have [Pathogen][pathogen ] working then skip [Step 1 ](#step1 ) and go to
[Step 2 ](#step2 ).
< a name = "step1" > < / a >
#### 2.2.1\. Step 1: Install pathogen.vim
First I'll show you how to install Tim Pope's [Pathogen][1 ] so that it's easy to
First I'll show you how to install Tim Pope's [Pathogen][pathogen ] so that it's easy to
install syntastic. Do this in your terminal so that you get the `pathogen.vim`
file and the directories it needs:
```sh
@ -155,7 +157,7 @@ Quit vim and start it back up to reload it, then type:
:Helptags
```
If you get an error when you do this, then you probably didn't install
[Pathogen][1 ] right. Go back to [Step 1 ](#step1 ) and make sure you did the
[Pathogen][pathogen ] right. Go back to [Step 1 ](#step1 ) and make sure you did the
following:
1. Created both the `~/.vim/autoload` and `~/.vim/bundle` directories.
@ -192,10 +194,11 @@ __4.1. Q. I installed syntastic but it isn't reporting any errors...__
A. The most likely reason is that none of the syntax checkers that it requires
are installed. For example: by default, python requires either `flake8` or
`pylint` to be installed and in your `$PATH` . To see which executables are
supported, look at the [wiki][3]. Note that aliases do not work; the actual
executables must be available in your `$PATH` . Symbolic links are okay though.
You can see syntastic's idea of available checkers by running `:SyntasticInfo` .
`pylint` to be installed and in your `$PATH` . Read the [manual][checkers]
(`:help syntastic-checkers` in Vim) to find out what executables are
supported. Note that aliases do not work; the actual executables must be
available in your `$PATH` . Symbolic links are okay though. You can see
syntastic's idea of available checkers by running `:SyntasticInfo` .
A second probable reason is that none of the available checkers are
enabled. Syntastic comes preconfigured with a default list of enabled checkers
@ -222,7 +225,7 @@ on Windows.
Finally, another reason it could fail is that either the command line options
or the error output for a syntax checker may have changed. In this case, make
sure you have the latest version of the syntax checker installed. If it still
fails then post an [issue][4 ] - or better yet, create a pull request.
fails then post an [issue][bug_tracker ] - or better yet, create a pull request.
< a name = "faqpython3" > < / a >
@ -238,18 +241,18 @@ let g:syntastic_python_python_exec = '/path/to/python3'
__4.3. Q. Are there any local checkers for HTML5 that I can use with syntastic?__
[HTML Tidy][18] has a fork named [HTML Tidy for HTML5][19 ]. It's a drop
[HTML Tidy][tidy_old] has a fork named [HTML Tidy for HTML5][tidy ]. It's a drop
in replacement, and syntastic can use it without changes. Just install it
somewhere and point `g:syntastic_html_tidy_exec` to its executable:
```vim
let g:syntastic_html_tidy_exec = 'tidy5'
```
Alternatively, you can install [vnu.jar][21] from the [validator.nu][20 ]
project and run it as a [HTTP server][23 ]:
Alternatively, you can install [vnu.jar][vnu_jar] from the [validator.nu][vnu ]
project and run it as a [HTTP server][vnu_server ]:
```sh
$ java -Xss512k -cp /path/to/vnu.jar nu.validator.servlet.Main 8888
```
Then you can [ configure][22] syntastic to use it:
Then you can configure syntastic to use it:
```vim
let g:syntastic_html_validator_api = 'http://localhost:8888/'
```
@ -260,7 +263,7 @@ __4.4. Q. The `perl` checker has stopped working...__
A. The `perl` checker runs `perl -c` against your file, which in turn
__executes__ any `BEGIN` , `UNITCHECK` , and `CHECK` blocks, and any `use`
statements in your file (cf. [perlrun][10 ]). This is probably fine if you
statements in your file (cf. [perlrun][perlrun ]). This is probably fine if you
wrote the file yourself, but it's a security problem if you're checking
third-party files. Since there is currently no way to disable this behaviour
while still producing useful results, the checker is now disabled by default.
@ -274,7 +277,7 @@ let g:syntastic_enable_perl_checker = 1
__4.5. Q. What happened to the `rustc` checker?__
A. It is now part of the [rust.vim][12 ] plugin. If you install this plugin the
A. It is now part of the [rust.vim][rust ] plugin. If you install this plugin the
checker should be picked up automatically by syntastic.
< a name = "faqxcrun" > < / a >
@ -282,7 +285,7 @@ checker should be picked up automatically by syntastic.
__4.6. Q. What happened to the `xcrun` checker?__
A. The `xcrun` checker used to have a security problem and it has been removed.
A better checker for __Swift__ is part of the [vim-swift][24 ] plugin. If you
A better checker for __Swift__ is part of the [vim-swift][swift ] plugin. If you
install this plugin the checker should be picked up automatically by syntastic.
< a name = "faqloclist" > < / a >
@ -324,8 +327,8 @@ A. Stick a line like this in your `vimrc`:
let g:syntastic_< filetype > _checkers = ['< checker-name > ']
```
To see the list of supported checkers for your filetype look at the
[wiki][3] .
To see the list of supported checkers for your filetype read the
[manual][checkers] (`:help syntastic-checkers` in Vim) .
e.g. Python has the following checkers, among others: `flake8` , `pyflakes` ,
`pylint` and a native `python` checker.
@ -406,7 +409,7 @@ A. Vim provides several built-in commands for this. See `:help :lnext` and
`:help :lprevious` .
If you use these commands a lot then you may want to add shortcut mappings to
your `vimrc` , or install something like [unimpaired][2 ], which provides such
your `vimrc` , or install something like [unimpaired][unimpaired ], which provides such
mappings (among other things).
< a name = "faqbdelete" > < / a >
@ -427,50 +430,50 @@ cabbrev <silent> bd <C-r>=(getcmdtype()==#':' && getcmdpos()==1 ? 'lclose\|bdele
## 5\. Resources
The preferred place for posting suggestions, reporting bugs, and general
discussions related to syntastic is the [issue tracker at GitHub][4 ].
A guide for writing syntax checkers can be found in the [wiki][11 ].
There are also a dedicated [google group][5 ], and a
[syntastic tag at StackOverflow][6 ].
discussions related to syntastic is the [issue tracker at GitHub][bug_tracker ].
A guide for writing syntax checkers can be found in the [wiki][guide ].
There are also a dedicated [google group][google_group ], and a
[syntastic tag at StackOverflow][stack_overflow ].
Syntastic aims to provide a common interface to syntax checkers for as many
languages as possible. For particular languages, there are, of course, other
plugins that provide more functionality than syntastic. You might want to take
a look at [ghcmod-vim][31], [jedi-vim][7], [python-mode][8], [vim-go][32 ], or
[YouCompleteMe][9 ].
[0]: https://github.com/scrooloose/syntastic/raw/master/_assets/screenshot_1.png
[1]: https://github.com/tpope/vim-pathogen
[2]: https://github.com/tpope/vim-unimpaired
[3]: https://github.com/scrooloose/syntastic/wiki/Syntax-Checkers
[4]: https://github.com/scrooloose/syntastic/issues
[5]: https://groups.google.com/group/vim-syntastic
[6]: http://stackoverflow.com/questions/tagged/syntastic
[7]: https://github.com/davidhalter/jedi-vim
[8]: https://github.com/klen/python-mo de
[9]: http://valloric.github.io/YouCompleteMe/
[10]: http://perldoc.perl.org/perlrun.html#*-c*
[11]: https://github.com/scrooloose/syntastic/wiki/Syntax-Checker-Guide
[12]: https://github.com/rust-lang/rust .vim
[13]: http://www.vim.org/
[14]: https://github.com/Shougo/neobundle.vim
[15]: https://github.com/MarcWeber/vim-addon-manager
[16]: https://github.com/junegunn/vim-plug/
[17]: https://github.com/gmarik/Vundle.vim
[18]: http://tidy.sourceforge.net/
[19]: http://www.htacg.org/tidy-html5/
[20]: http://about.validator.nu/
[21]: https://github.com/validator/validator/releases/lates t
[22]: https://github.com/scrooloose/syntastic/wiki/HTML%3A---validator
[23]: http://validator.github.io/validator/#standalone
[24]: https://github.com/kballard/vim-swift
[25]: https://github.com/OmniSharp/omnisharp-vim
[26]: https://github.com/myint/syntastic-extras
[27]: https://github.com/roktas/syntastic-more
[28]: https://github.com/venantius/vim-eastwood
[29]: https://github.com/rhysd/vim-crystal
[30]: https://github.com/the-lambda-church/merlin
[31]: https://github.com/eagletmt/ghcmod- vim
[32]: https://github.com/fatih/vim-go
a look at [ghcmod-vim][ghcmod], [jedi-vim][jedi], [python-mode][python_mode], [vim-go][vimgo ], or
[YouCompleteMe][ycm ].
[screenshot]: https://github.com/scrooloose/syntastic/raw/master/_assets/screenshot_1.png
[bug_tracker]: https://github.com/scrooloose/syntastic/issues
[checkers]: https://github.com/scrooloose/syntastic/blob/master/doc/syntastic-checkers.txt
[crystal]: https://github.com/rhysd/vim-crystal
[eastwood]: https://github.com/venantius/vim-eastwood
[ghcmod]: https://github.com/eagletmt/ghcmod-vim
[google_group]: https://groups.google.com/group/vim-syntastic
[guide]: https://github.com/scrooloose/syntastic/wiki/Syntax-Checker-Gui de
[jedi]: https://github.com/davidhalter/jedi-vim
[merlin]: https://github.com/the-lambda-church/merlin
[myint]: https://github.com/myint/syntastic-extras
[neobundle]: https://github.com/Shougo/neobundle .vim
[omnisharp]: https://github.com/OmniSharp/omnisharp-vim
[pathogen]: https://github.com/tpope/vim-pathogen
[perlrun]: http://perldoc.perl.org/perlrun.html#*-c*
[plug]: https://github.com/junegunn/vim-plug/
[python_mode]: https://github.com/klen/python-mode
[roktas]: https://github.com/roktas/syntastic-more
[rust]: https://github.com/rust-lang/rust.vim
[stack_overflow]: http://stackoverflow.com/questions/tagged/syntastic
[swift]: https://github.com/kballard/vim-swif t
[tidy]: http://www.htacg.org/tidy-html5/
[tidy_old]: http://tidy.sourceforge.net/
[unimpaired]: https://github.com/tpope/vim-unimpaired
[vam]: https://github.com/MarcWeber/vim-addon-manager
[vim]: http://www.vim.org/
[vimgo]: https://github.com/fatih/vim-go
[vnu]: http://about.validator.nu/
[vnu_jar]: https://github.com/validator/validator/releases/latest
[vnu_server]: http://validator.github.io/validator/#standalone
[vundle]: https://github.com/gmarik/Vundle. vim
[ycm]: http://valloric.github.io/YouCompleteMe/
<!--
vim:tw=79:sw=4: