Checker html/w3: Add support for SVG and XHTML
Apply the same changes that were applied to html/validator in vim-syntastic/syntastic#2241 to w3/html so that it can be used to validate SVG and XHTML as well. Add support for `g:syntastic_{type}_w3_doctype` to control the doctype POST parameter sent to the validator. This is necessary for SVG without a DTD (which would otherwise be validated as generic XML) and useful for all the types to control validation. Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
This commit is contained in:
parent
1cbf03ac9b
commit
83a7a2a502
@ -3175,7 +3175,7 @@ details:
|
|||||||
https://validator.w3.org/source/
|
https://validator.w3.org/source/
|
||||||
|
|
||||||
As a syntastic linter, you can validate your files against the online service
|
As a syntastic linter, you can validate your files against the online service
|
||||||
(see http://validator.w3.org/), or you can install it from sources and run it
|
(see https://validator.w3.org/), or you can install it from sources and run it
|
||||||
as a local service:
|
as a local service:
|
||||||
|
|
||||||
https://github.com/w3c/markup-validator/
|
https://github.com/w3c/markup-validator/
|
||||||
@ -3184,17 +3184,37 @@ Requirement~
|
|||||||
|
|
||||||
This checker uses cURL:
|
This checker uses cURL:
|
||||||
|
|
||||||
http://curl.haxx.se/
|
https://curl.haxx.se/
|
||||||
|
|
||||||
Checker options~
|
Checker options~
|
||||||
|
|
||||||
*'g:syntastic_html_w3_api'*
|
*'g:syntastic_html_w3_api'*
|
||||||
Type: string
|
Type: string
|
||||||
Default: "http://validator.w3.org/check"
|
Default: "https://validator.w3.org/check"
|
||||||
URL of the service to use for checking. Leave it to the default to
|
URL of the service to use for checking. Leave it to the default to
|
||||||
run the checks against "http://validator.w3.org/", or set it to
|
run the checks against "https://validator.w3.org/", or set it to
|
||||||
"http://localhost/w3c-validator/check" if you're running a local service.
|
"http://localhost/w3c-validator/check" if you're running a local service.
|
||||||
|
|
||||||
|
*'g:syntastic_html_w3_doctype'*
|
||||||
|
Type: string
|
||||||
|
Default: ""
|
||||||
|
Name of the document type definition to use for checking. If unspecified, the
|
||||||
|
type is detected from the file content. Currently supported values for HTML:
|
||||||
|
|
||||||
|
- HTML5
|
||||||
|
- HTML 4.01 Strict
|
||||||
|
- HTML 4.01 Transitional
|
||||||
|
- HTML 4.01 Frameset
|
||||||
|
- HTML 4.01 + RDFa 1.1
|
||||||
|
- HTML 3.2
|
||||||
|
- HTML 2.0
|
||||||
|
- ISO/IEC 15445:2000 ("ISO HTML")
|
||||||
|
|
||||||
|
References:
|
||||||
|
|
||||||
|
https://github.com/w3c/markup-validator/blob/master/htdocs/doctype-select.html
|
||||||
|
https://github.com/w3c/markup-validator/blob/master/htdocs/config/types.conf
|
||||||
|
|
||||||
*'g:syntastic_html_w3_exec'*
|
*'g:syntastic_html_w3_exec'*
|
||||||
Type: string
|
Type: string
|
||||||
Default: "curl"
|
Default: "curl"
|
||||||
@ -3210,11 +3230,13 @@ Note~
|
|||||||
|
|
||||||
Non-zero exit codes from "cURL" are typically network errors, and are signaled
|
Non-zero exit codes from "cURL" are typically network errors, and are signaled
|
||||||
by syntastic with messages such as: >
|
by syntastic with messages such as: >
|
||||||
syntastic: error: checker html/validator returned abnormal status 26
|
syntastic: error: checker html/w3 returned abnormal status 26
|
||||||
<
|
<
|
||||||
You can lookup the meaning of these codes in cURL's manual:
|
You can lookup the meaning of these codes in cURL's manual:
|
||||||
|
|
||||||
http://curl.haxx.se/docs/manpage.html#EXIT
|
https://curl.haxx.se/docs/manpage.html#EXIT
|
||||||
|
|
||||||
|
See also: |syntastic-svg-w3|, |syntastic-xhtml-w3|.
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
SYNTAX CHECKERS FOR JAVA *syntastic-checkers-java*
|
SYNTAX CHECKERS FOR JAVA *syntastic-checkers-java*
|
||||||
@ -6579,6 +6601,7 @@ SYNTAX CHECKERS FOR SVG *syntastic-checkers-svg*
|
|||||||
The following checkers are available for SVG (filetype "svg"):
|
The following checkers are available for SVG (filetype "svg"):
|
||||||
|
|
||||||
1. Validator................|syntastic-svg-validator|
|
1. Validator................|syntastic-svg-validator|
|
||||||
|
2. W3.......................|syntastic-svg-w3|
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
1. Validator *syntastic-svg-validator*
|
1. Validator *syntastic-svg-validator*
|
||||||
@ -6670,6 +6693,78 @@ Example~
|
|||||||
<
|
<
|
||||||
See also: |syntastic-html-validator|, |syntastic-xhtml-validator|.
|
See also: |syntastic-html-validator|, |syntastic-xhtml-validator|.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
2. W3 *syntastic-svg-w3*
|
||||||
|
|
||||||
|
Name: w3
|
||||||
|
Maintainer: Martin Grenfell <martin.grenfell@gmail.com>
|
||||||
|
|
||||||
|
"W3" is the W3C Markup Validator for SVG. See the project's page for
|
||||||
|
details:
|
||||||
|
|
||||||
|
https://validator.w3.org/source/
|
||||||
|
|
||||||
|
As a syntastic linter, you can validate your files against the online service
|
||||||
|
(see https://validator.w3.org/), or you can install it from sources and run it
|
||||||
|
as a local service:
|
||||||
|
|
||||||
|
https://github.com/w3c/markup-validator/
|
||||||
|
|
||||||
|
Requirement~
|
||||||
|
|
||||||
|
This checker uses cURL:
|
||||||
|
|
||||||
|
http://curl.haxx.se/
|
||||||
|
|
||||||
|
Checker options~
|
||||||
|
|
||||||
|
*'g:syntastic_svg_w3_api'*
|
||||||
|
Type: string
|
||||||
|
Default: "https://validator.w3.org/check"
|
||||||
|
URL of the service to use for checking. Leave it to the default to
|
||||||
|
run the checks against "https://validator.w3.org/", or set it to
|
||||||
|
"http://localhost/w3c-validator/check" if you're running a local service.
|
||||||
|
|
||||||
|
*'g:syntastic_svg_w3_doctype'*
|
||||||
|
Type: string
|
||||||
|
Default: "SVG 1.1" (if not detected from DTD)
|
||||||
|
Name of the document type definition to use for checking. If unspecified, the
|
||||||
|
type is detected from a Document Type Declaration, if present, or "SVG 1.1" is
|
||||||
|
used. Currently supported values for SVG:
|
||||||
|
|
||||||
|
- SVG 1.0
|
||||||
|
- SVG 1.1
|
||||||
|
- SVG 1.1 Tiny
|
||||||
|
- SVG 1.1 Basic
|
||||||
|
|
||||||
|
References:
|
||||||
|
|
||||||
|
https://github.com/w3c/markup-validator/blob/master/htdocs/doctype-select.html
|
||||||
|
https://github.com/w3c/markup-validator/blob/master/htdocs/config/types.conf
|
||||||
|
|
||||||
|
*'g:syntastic_svg_w3_exec'*
|
||||||
|
Type: string
|
||||||
|
Default: "curl"
|
||||||
|
Path to the "cURL" executable. Override it with a full path if your "cURL" is
|
||||||
|
not installed in a standard location.
|
||||||
|
|
||||||
|
This checker doesn't call the "makeprgBuild()" function, and thus it ignores
|
||||||
|
the usual 'g:syntastic_svg_w3_<option>' variables. The only exception is
|
||||||
|
'g:syntastic_svg_w3_exec', which can be used to override the path to the
|
||||||
|
"cURL" executable.
|
||||||
|
|
||||||
|
Note~
|
||||||
|
|
||||||
|
Non-zero exit codes from "cURL" are typically network errors, and are signaled
|
||||||
|
by syntastic with messages such as: >
|
||||||
|
syntastic: error: checker svg/w3 returned abnormal status 26
|
||||||
|
<
|
||||||
|
You can lookup the meaning of these codes in cURL's manual:
|
||||||
|
|
||||||
|
http://curl.haxx.se/docs/manpage.svg#EXIT
|
||||||
|
|
||||||
|
See also: |syntastic-html-w3|, |syntastic-xhtml-w3|.
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
SYNTAX CHECKERS FOR TCL *syntastic-checkers-tcl*
|
SYNTAX CHECKERS FOR TCL *syntastic-checkers-tcl*
|
||||||
|
|
||||||
@ -7483,6 +7578,7 @@ The following checkers are available for xHTML (filetype "xhtml"):
|
|||||||
2. jshint...................|syntastic-xhtml-jshint|
|
2. jshint...................|syntastic-xhtml-jshint|
|
||||||
3. proselint................|syntastic-xhtml-proselint|
|
3. proselint................|syntastic-xhtml-proselint|
|
||||||
4. Validator................|syntastic-xhtml-validator|
|
4. Validator................|syntastic-xhtml-validator|
|
||||||
|
5. W3.......................|syntastic-xhtml-w3|
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
1. HTML tidy *syntastic-xhtml-tidy*
|
1. HTML tidy *syntastic-xhtml-tidy*
|
||||||
@ -7668,6 +7764,84 @@ Example~
|
|||||||
<
|
<
|
||||||
See also: |syntastic-html-validator|, |syntastic-svg-validator|.
|
See also: |syntastic-html-validator|, |syntastic-svg-validator|.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
5. W3 *syntastic-xhtml-w3*
|
||||||
|
|
||||||
|
Name: w3
|
||||||
|
Maintainer: Martin Grenfell <martin.grenfell@gmail.com>
|
||||||
|
|
||||||
|
"W3" is the W3C Markup Validator for XHTML. See the project's page for
|
||||||
|
details:
|
||||||
|
|
||||||
|
https://validator.w3.org/source/
|
||||||
|
|
||||||
|
As a syntastic linter, you can validate your files against the online service
|
||||||
|
(see https://validator.w3.org/), or you can install it from sources and run it
|
||||||
|
as a local service:
|
||||||
|
|
||||||
|
https://github.com/w3c/markup-validator/
|
||||||
|
|
||||||
|
Requirement~
|
||||||
|
|
||||||
|
This checker uses cURL:
|
||||||
|
|
||||||
|
https://curl.haxx.se/
|
||||||
|
|
||||||
|
Checker options~
|
||||||
|
|
||||||
|
*'g:syntastic_xhtml_w3_api'*
|
||||||
|
Type: string
|
||||||
|
Default: "https://validator.w3.org/check"
|
||||||
|
URL of the service to use for checking. Leave it to the default to
|
||||||
|
run the checks against "https://validator.w3.org/", or set it to
|
||||||
|
"http://localhost/w3c-validator/check" if you're running a local service.
|
||||||
|
|
||||||
|
*'g:syntastic_xhtml_w3_doctype'*
|
||||||
|
Type: string
|
||||||
|
Default: ""
|
||||||
|
Name of the document type definition to use for checking. If unspecified, the
|
||||||
|
type is detected from the file content. Currently supported values for XHTML:
|
||||||
|
|
||||||
|
- XHTML 1.0 Strict
|
||||||
|
- XHTML 1.0 Transitional
|
||||||
|
- XHTML 1.0 Frameset
|
||||||
|
- XHTML 1.1
|
||||||
|
- XHTML + RDFa
|
||||||
|
- XHTML Basic 1.0
|
||||||
|
- XHTML Basic 1.1
|
||||||
|
- XHTML Mobile Profile 1.2
|
||||||
|
- XHTML-Print 1.0
|
||||||
|
- XHTML 1.1 plus MathML 2.0
|
||||||
|
- XHTML 1.1 plus MathML 2.0 plus SVG 1.1
|
||||||
|
|
||||||
|
References:
|
||||||
|
|
||||||
|
https://github.com/w3c/markup-validator/blob/master/htdocs/doctype-select.html
|
||||||
|
https://github.com/w3c/markup-validator/blob/master/htdocs/config/types.conf
|
||||||
|
|
||||||
|
*'g:syntastic_xhtml_w3_exec'*
|
||||||
|
Type: string
|
||||||
|
Default: "curl"
|
||||||
|
Path to the "cURL" executable. Override it with a full path if your "cURL" is
|
||||||
|
not installed in a standard location.
|
||||||
|
|
||||||
|
This checker doesn't call the "makeprgBuild()" function, and thus it ignores
|
||||||
|
the usual 'g:syntastic_xhtml_w3_<option>' variables. The only exception is
|
||||||
|
'g:syntastic_xhtml_w3_exec', which can be used to override the path to the
|
||||||
|
"cURL" executable.
|
||||||
|
|
||||||
|
Note~
|
||||||
|
|
||||||
|
Non-zero exit codes from "cURL" are typically network errors, and are signaled
|
||||||
|
by syntastic with messages such as: >
|
||||||
|
syntastic: error: checker xhtml/w3 returned abnormal status 26
|
||||||
|
<
|
||||||
|
You can lookup the meaning of these codes in cURL's manual:
|
||||||
|
|
||||||
|
https://curl.haxx.se/docs/manpage.xhtml#EXIT
|
||||||
|
|
||||||
|
See also: |syntastic-html-w3|, |syntastic-svg-w3|.
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
SYNTAX CHECKERS FOR XML *syntastic-checkers-xml*
|
SYNTAX CHECKERS FOR XML *syntastic-checkers-xml*
|
||||||
|
|
||||||
|
@ -15,18 +15,52 @@ if exists('g:loaded_syntastic_html_w3_checker')
|
|||||||
endif
|
endif
|
||||||
let g:loaded_syntastic_html_w3_checker = 1
|
let g:loaded_syntastic_html_w3_checker = 1
|
||||||
|
|
||||||
if !exists('g:syntastic_html_w3_api')
|
|
||||||
let g:syntastic_html_w3_api = 'http://validator.w3.org/check'
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:save_cpo = &cpo
|
let s:save_cpo = &cpo
|
||||||
set cpo&vim
|
set cpo&vim
|
||||||
|
|
||||||
function! SyntaxCheckers_html_w3_GetLocList() dict
|
" Constants {{{1
|
||||||
|
|
||||||
|
let s:DEFAULTS = {
|
||||||
|
\ 'api': 'https://validator.w3.org/check',
|
||||||
|
\ 'doctype': '' }
|
||||||
|
|
||||||
|
let s:CONTENT_TYPE = {
|
||||||
|
\ 'html': 'text/html',
|
||||||
|
\ 'svg': 'image/svg+xml',
|
||||||
|
\ 'xhtml': 'application/xhtml+xml' }
|
||||||
|
|
||||||
|
" }}}1
|
||||||
|
|
||||||
|
" @vimlint(EVL101, 1, l:api)
|
||||||
|
" @vimlint(EVL101, 1, l:doctype)
|
||||||
|
" @vimlint(EVL104, 1, l:doctype)
|
||||||
|
function! SyntaxCheckers_html_w3_GetLocList() dict " {{{1
|
||||||
let buf = bufnr('')
|
let buf = bufnr('')
|
||||||
let makeprg = self.getExecEscaped() . ' -q -L -s -F output=json ' .
|
let type = self.getFiletype()
|
||||||
\ '-F uploaded_file=@' . syntastic#util#shescape(fnamemodify(bufname(buf), ':p')) . '\;type=text/html ' .
|
let fname = syntastic#util#shescape(fnamemodify(bufname(buf), ':p'))
|
||||||
\ g:syntastic_html_w3_api
|
|
||||||
|
for key in keys(s:DEFAULTS)
|
||||||
|
let l:{key} = syntastic#util#var(type . '_w3_' . key, get(s:DEFAULTS, key))
|
||||||
|
endfor
|
||||||
|
let ctype = get(s:CONTENT_TYPE, type, '')
|
||||||
|
|
||||||
|
" SVG is detected as generic XML if doctype is unspecified.
|
||||||
|
" Default "SVG 1.1" with "Only if missing" (fbd=1) to use DTD if present.
|
||||||
|
let fbd = ''
|
||||||
|
if type ==# 'svg' && doctype ==# ''
|
||||||
|
let doctype = 'SVG 1.1'
|
||||||
|
let fbd = '1'
|
||||||
|
endif
|
||||||
|
|
||||||
|
" vint: -ProhibitUsingUndeclaredVariable
|
||||||
|
let makeprg = self.getExecEscaped() . ' -q -L -s --compressed -F output=json' .
|
||||||
|
\ (doctype !=# '' ? ' -F doctype=' . syntastic#util#shescape(doctype) : '') .
|
||||||
|
\ (fbd !=# '' ? ' -F fbd=' . fbd : '') .
|
||||||
|
\ ' -F uploaded_file=@' . fname .
|
||||||
|
\ (ctype !=# '' ? '\;type=' . ctype : '') .
|
||||||
|
\ '\;filename=' . fname .
|
||||||
|
\ ' ' . api
|
||||||
|
" vint: ProhibitUsingUndeclaredVariable
|
||||||
|
|
||||||
let errorformat =
|
let errorformat =
|
||||||
\ '%A %\+{,' .
|
\ '%A %\+{,' .
|
||||||
@ -50,7 +84,10 @@ function! SyntaxCheckers_html_w3_GetLocList() dict
|
|||||||
endfor
|
endfor
|
||||||
|
|
||||||
return loclist
|
return loclist
|
||||||
endfunction
|
endfunction " }}}1
|
||||||
|
" @vimlint(EVL104, 0, l:doctype)
|
||||||
|
" @vimlint(EVL101, 0, l:doctype)
|
||||||
|
" @vimlint(EVL101, 0, l:api)
|
||||||
|
|
||||||
call g:SyntasticRegistry.CreateAndRegisterChecker({
|
call g:SyntasticRegistry.CreateAndRegisterChecker({
|
||||||
\ 'filetype': 'html',
|
\ 'filetype': 'html',
|
||||||
|
23
syntax_checkers/svg/w3.vim
Normal file
23
syntax_checkers/svg/w3.vim
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
"============================================================================
|
||||||
|
"File: w3.vim
|
||||||
|
"Description: Syntax checking plugin for syntastic
|
||||||
|
"Maintainer: Kevin Locke <kevin@kevinlocke.name>
|
||||||
|
"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_svg_w3_checker')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let g:loaded_syntastic_svg_w3_checker = 1
|
||||||
|
|
||||||
|
call g:SyntasticRegistry.CreateAndRegisterChecker({
|
||||||
|
\ 'filetype': 'svg',
|
||||||
|
\ 'name': 'w3',
|
||||||
|
\ 'redirect': 'html/w3'})
|
||||||
|
|
||||||
|
" vim: set sw=4 sts=4 et fdm=marker:
|
23
syntax_checkers/xhtml/w3.vim
Normal file
23
syntax_checkers/xhtml/w3.vim
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
"============================================================================
|
||||||
|
"File: w3.vim
|
||||||
|
"Description: Syntax checking plugin for syntastic
|
||||||
|
"Maintainer: Kevin Locke <kevin@kevinlocke.name>
|
||||||
|
"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_xhtml_w3_checker')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let g:loaded_syntastic_xhtml_w3_checker = 1
|
||||||
|
|
||||||
|
call g:SyntasticRegistry.CreateAndRegisterChecker({
|
||||||
|
\ 'filetype': 'xhtml',
|
||||||
|
\ 'name': 'w3',
|
||||||
|
\ 'redirect': 'html/w3'})
|
||||||
|
|
||||||
|
" vim: set sw=4 sts=4 et fdm=marker:
|
Loading…
Reference in New Issue
Block a user