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, At the time of this writing, syntastic has checking plugins for ActionScript,
Ada, API Blueprint, AppleScript, AsciiDoc, ASM, BEMHTML, Bro, Bourne shell, C, Ada, API Blueprint, AppleScript, AsciiDoc, ASM, BEMHTML, Bro, Bourne shell, C,
C++, C#, Cabal, Chef, CoffeeScript, Coco, Coq, CSS, Cucumber, CUDA, D, Dart, C++, C#, Cabal, Chef, CoffeeScript, Coco, Coq, CSS, Cucumber, CUDA, D, Dart,
DocBook, Dust, Elixir, Erlang, eRuby, Fortran, Gentoo metadata, GLSL, Go, DocBook, Dust, Elixir, Erlang, eRuby, Fortran, Gentoo metadata, GLSL, Go, Haml,
Haml, Haskell, Haxe, Handlebars, HSS, HTML, Java, JavaScript, JSON, JSX, LESS, Haskell, Haxe, Handlebars, HSS, HTML, Java, JavaScript, JSON, JSX, LESS, Lex,
Lex, Limbo, LISP, LLVM intermediate language, Lua, Markdown, MATLAB, Mercury, Limbo, LISP, LLVM intermediate language, Lua, Markdown, MATLAB, Mercury, NASM,
NASM, Nix, Objective-C, Objective-C++, OCaml, Perl, Perl POD, PHP, gettext Nix, Objective-C, Objective-C++, OCaml, Perl, Perl POD, PHP, gettext Portable
Portable Object, OS X and iOS property lists, Puppet, Python, R, Racket, Relax Object, OS X and iOS property lists, Puppet, Python, R, Racket, Relax NG,
NG, reStructuredText, RPM spec, Ruby, SASS/SCSS, Scala, Slim, SML, Tcl, TeX, reStructuredText, RPM spec, Ruby, SASS/SCSS, Scala, Slim, SML, Sphinx, Tcl,
Texinfo, Twig, TypeScript, Vala, Verilog, VHDL, VimL, xHtml, XML, XSLT, YACC, TeX, Texinfo, Twig, TypeScript, Vala, Verilog, VHDL, VimL, xHtml, XML, XSLT,
YAML, z80, Zope page templates, and zsh. See the [wiki][3] for details about YACC, YAML, z80, Zope page templates, and zsh. See the [wiki][3] for details
the corresponding supported checkers. about the corresponding supported checkers.
A number of third-party Vim plugins also provide checkers for syntastic, A number of third-party Vim plugins also provide checkers for syntastic,
for example: [omnisharp-vim][25], [rust.vim][12], [syntastic-extras][26], for example: [omnisharp-vim][25], [rust.vim][12], [syntastic-extras][26],

View File

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