New checker for reStructuredText: sphinx.

This commit is contained in:
LCD 47 2015-06-24 10:25:54 +03:00
parent e46c64701c
commit 131ec84e61
3 changed files with 90 additions and 10 deletions

View File

@ -55,15 +55,15 @@ compile their code or execute their script to find them.
At the time of this writing, syntastic has checking plugins for ActionScript,
Ada, API Blueprint, AppleScript, AsciiDoc, ASM, BEMHTML, Bro, Bourne shell, C,
C++, C#, Cabal, Chef, CoffeeScript, Coco, Coq, CSS, Cucumber, CUDA, D, Dart,
DocBook, 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, Puppet, Python, R, Racket, Relax
NG, reStructuredText, RPM spec, Ruby, SASS/SCSS, Scala, Slim, SML, Tcl, TeX,
Texinfo, Twig, TypeScript, Vala, Verilog, VHDL, VimL, xHtml, XML, XSLT, YACC,
YAML, z80, Zope page templates, and zsh. See the [wiki][3] for details about
the corresponding supported checkers.
DocBook, 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, Puppet, Python, R, Racket, Relax NG,
reStructuredText, RPM spec, Ruby, SASS/SCSS, Scala, Slim, SML, Sphinx, Tcl,
TeX, Texinfo, Twig, TypeScript, Vala, Verilog, VHDL, VimL, xHtml, XML, XSLT,
YACC, YAML, z80, Zope page templates, and zsh. See the [wiki][3] for details
about the corresponding supported checkers.
A number of third-party Vim plugins also provide checkers for syntastic,
for example: [omnisharp-vim][25], [rust.vim][12], [syntastic-extras][26],

View File

@ -19,7 +19,7 @@ if has('reltime')
lockvar! g:_SYNTASTIC_START
endif
let g:_SYNTASTIC_VERSION = '3.6.0-100'
let g:_SYNTASTIC_VERSION = '3.6.0-102'
lockvar g:_SYNTASTIC_VERSION
" Sanity checks {{{1

View File

@ -0,0 +1,80 @@
"============================================================================
"File: sphinx.vim
"Description: Syntax checking plugin for Sphinx reStructuredText files
"Maintainer: Buck Evan <bukzor at yelp dot com>
"License: This program is free software. It comes without any warranty,
" to the extent permitted by applicable law. You can redistribute
" it and/or modify it under the terms of the Do What The Fuck You
" Want To Public License, Version 2, as published by Sam Hocevar.
" See http://sam.zoy.org/wtfpl/COPYING for more details.
"
"============================================================================
if exists("g:loaded_syntastic_rst_sphinx_checker")
finish
endif
let g:loaded_syntastic_rst_sphinx_checker = 1
let s:save_cpo = &cpo
set cpo&vim
let s:sphinx_cache_location = syntastic#util#tmpdir()
lockvar s:sphinx_cache_location
augroup syntastic
autocmd VimLeave * call syntastic#util#rmrf(s:sphinx_cache_location)
augroup END
function! SyntaxCheckers_rst_sphinx_GetLocList() dict
let srcdir = syntastic#util#var('rst_sphinx_source_dir')
call self.log('g:syntastic_rst_sphinx_source_dir =', srcdir)
if srcdir == ''
let config = findfile('conf.py', escape(expand('%:p:h', 1), ' ') . ';')
if config == '' || !filereadable(config)
call self.log('conf.py file not found')
return []
endif
let srcdir = fnamemodify(config, ':p:h')
endif
let confdir = syntastic#util#var('rst_sphinx_config_dir')
call self.log('g:syntastic_rst_sphinx_config_dir =', confdir)
if confdir == ''
let config = findfile('conf.py', escape(expand('%:p:h', 1), ' ') . ';')
let confdir = (config != '' && filereadable(config)) ? fnamemodify(config, ':p:h') : srcdir
endif
let makeprg = self.makeprgBuild({
\ 'args': '-n -E',
\ 'args_after': '-q -N -b pseudoxml -c ' . syntastic#util#shescape(confdir),
\ 'fname': syntastic#util#shescape(srcdir),
\ 'fname_after': syntastic#util#shescape(s:sphinx_cache_location) })
let errorformat =
\ '%E%f:%l: SEVER%t: %m,' .
\ '%f:%l: %tRROR: %m,' .
\ '%f:%l: %tARNING: %m,' .
\ '%E%f:: SEVER%t: %m,' .
\ '%f:: %tRROR: %m,' .
\ '%f:: %tARNING: %m,' .
\ '%trror: %m,' .
\ '%+C%.%#'
let loclist = SyntasticMake({
\ 'makeprg': makeprg,
\ 'errorformat': errorformat,
\ 'returns': [0] })
return loclist
endfunction
call g:SyntasticRegistry.CreateAndRegisterChecker({
\ 'filetype': 'rst',
\ 'name': 'sphinx',
\ 'exec': 'sphinx-build' })
let &cpo = s:save_cpo
unlet s:save_cpo
" vim: set sw=4 sts=4 et fdm=marker: