mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-03 03:40:06 +08:00
189 lines
11 KiB
VimL
Vendored
189 lines
11 KiB
VimL
Vendored
" Vim syntax file
|
|
" Language: AsciiDoc
|
|
" Author: Stuart Rackham <srackham@gmail.com> (inspired by Felix
|
|
" Obenhuber's original asciidoc.vim script).
|
|
" URL: http://www.methods.co.nz/asciidoc/
|
|
" https://github.com/dahu/vim-asciidoc
|
|
" Licence: GPL (http://www.gnu.org)
|
|
" Remarks: Vim 6 or greater
|
|
" Limitations: See 'Appendix E: Vim Syntax Highlighter' in the AsciiDoc 'User
|
|
" Guide'.
|
|
|
|
if exists("b:current_syntax")
|
|
finish
|
|
endif
|
|
|
|
syn clear
|
|
syn sync fromstart
|
|
syn sync linebreaks=1
|
|
|
|
function! AsciidocEnableSyntaxRanges()
|
|
" source block syntax highlighting
|
|
if exists('g:loaded_SyntaxRange')
|
|
for lang in ['c', 'python', 'vim']
|
|
call SyntaxRange#Include(
|
|
\ '^\c\[source\s*,\s*' . lang . '.*\]\s*$'
|
|
\, '\(\]\s*\n\)\@<![=-]\{4,\}'
|
|
\, lang)
|
|
endfor
|
|
endif
|
|
endfunction
|
|
|
|
" Run :help syn-priority to review syntax matching priority.
|
|
syn keyword asciidocToDo TODO FIXME CHECK TEST XXX ZZZ DEPRECATED
|
|
syn match asciidocBackslash /\\/
|
|
syn region asciidocIdMarker start=/^\$Id:\s/ end=/\s\$$/
|
|
syn match asciidocCallout /\\\@<!<\d\{1,2}>/
|
|
syn match asciidocListBlockDelimiter /^--$/
|
|
syn match asciidocLineBreak /[ \t]+$/
|
|
syn match asciidocRuler /^'\{3,}$/
|
|
syn match asciidocPagebreak /^<\{3,}$/
|
|
syn match asciidocEntityRef /\\\@<!&[#a-zA-Z]\S\{-};/
|
|
syn region asciidocLiteralParagraph start=/\(\%^\|\_^\n\)\@<=\s\+\S\+/ end=/\(^\(+\|--\)\?\s*$\)\@=/ contains=asciidocToDo
|
|
syn match asciidocURL /\\\@<!\<\(http\|https\|ftp\|file\|irc\):\/\/[^| \t]*\(\w\|\/\)/
|
|
syn match asciidocEmail /[\\.:]\@<!\(\<\|<\)\w\(\w\|[.-]\)*@\(\w\|[.-]\)*\w>\?[0-9A-Za-z_]\@!/
|
|
syn match asciidocAttributeRef /\\\@<!{\w\(\w\|[-,+]\)*\([=!@#$%?:].*\)\?}/
|
|
|
|
" As a damage control measure quoted patterns always terminate at a blank
|
|
" line (see 'Limitations' above).
|
|
syn match asciidocQuotedAttributeList /\\\@<!\[[a-zA-Z0-9_-][a-zA-Z0-9 _-]*\][+_'`#*]\@=/
|
|
syn match asciidocQuotedSubscript /\\\@<!\~\S\_.\{-}\(\~\|\n\s*\n\)/ contains=asciidocEntityRef
|
|
syn match asciidocQuotedSuperscript /\\\@<!\^\S\_.\{-}\(\^\|\n\s*\n\)/ contains=asciidocEntityRef
|
|
|
|
syn match asciidocQuotedMonospaced /\(^\|[| \t([.,=\]]\)\@<=+\([ )\n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(+\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
|
|
syn match asciidocQuotedMonospaced2 /\(^\|[| \t([.,=\]]\)\@<=`\([ )\n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(`\([| \t)[\],.?!;:=]\|$\)\@=\)/
|
|
syn match asciidocQuotedUnconstrainedMonospaced /[\\+]\@<!++\S\_.\{-}\(++\|\n\s*\n\)/ contains=asciidocEntityRef
|
|
|
|
syn match asciidocQuotedEmphasized /\(^\|[| \t([.,=\]]\)\@<=_\([ )\n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(_\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
|
|
syn match asciidocQuotedEmphasized2 /\(^\|[| \t([.,=\]]\)\@<='\([ )\n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\('\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
|
|
syn match asciidocQuotedUnconstrainedEmphasized /\\\@<!__\S\_.\{-}\(__\|\n\s*\n\)/ contains=asciidocEntityRef
|
|
|
|
syn match asciidocQuotedBold /\(^\|[| \t([.,=\]]\)\@<=\*\([ )\n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(\*\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
|
|
syn match asciidocQuotedUnconstrainedBold /\\\@<!\*\*\S\_.\{-}\(\*\*\|\n\s*\n\)/ contains=asciidocEntityRef
|
|
|
|
" Don't allow ` in single quoted (a kludge to stop confusion with `monospaced`).
|
|
syn match asciidocQuotedSingleQuoted /\(^\|[| \t([.,=\]]\)\@<=`\([ )\n\t]\)\@!\([^`]\|\n\(\s*\n\)\@!\)\{-}[^` \t]\('\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
|
|
|
|
syn match asciidocQuotedDoubleQuoted /\(^\|[| \t([.,=\]]\)\@<=``\([ )\n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(''\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
|
|
|
|
syn match asciidocDoubleDollarPassthrough /\\\@<!\(^\|[^0-9a-zA-Z$]\)\@<=\$\$..\{-}\(\$\$\([^0-9a-zA-Z$]\|$\)\@=\|^$\)/
|
|
syn match asciidocTriplePlusPassthrough /\\\@<!\(^\|[^0-9a-zA-Z$]\)\@<=+++..\{-}\(+++\([^0-9a-zA-Z$]\|$\)\@=\|^$\)/
|
|
|
|
syn match asciidocAdmonition /^\u\{3,15}:\(\s\+.*\)\@=/
|
|
|
|
syn region asciidocTable_OLD start=/^\([`.']\d*[-~_]*\)\+[-~_]\+\d*$/ end=/^$/
|
|
syn match asciidocBlockTitle /^\.[^. \t].*[^-~_]$/ contains=asciidocQuoted.*,asciidocAttributeRef
|
|
syn match asciidocTitleUnderline /[-=~^+]\{2,}$/ transparent contained contains=NONE
|
|
syn match asciidocOneLineTitle /^=\{1,5}\s\+\S.*$/ contains=asciidocQuoted.*,asciidocMacroAttributes,asciidocAttributeRef,asciidocEntityRef,asciidocEmail,asciidocURL,asciidocBackslash
|
|
syn match asciidocTwoLineTitle /^[^. +/].*[^.]\n[-=~^+]\{2,}$/ contains=asciidocQuoted.*,asciidocMacroAttributes,asciidocAttributeRef,asciidocEntityRef,asciidocEmail,asciidocURL,asciidocBackslash,asciidocTitleUnderline
|
|
|
|
syn match asciidocAttributeList /^\[[^[ \t].*\]$/
|
|
syn match asciidocQuoteBlockDelimiter /^_\{4,}$/
|
|
syn match asciidocExampleBlockDelimiter /^=\{4,}$/
|
|
syn match asciidocSidebarDelimiter /^*\{4,}$/
|
|
|
|
" See http://vimdoc.sourceforge.net/htmldoc/usr_44.html for excluding region
|
|
" contents from highlighting.
|
|
syn match asciidocTablePrefix /\(\S\@<!\(\([0-9.]\+\)\([*+]\)\)\?\([<\^>.]\{,3}\)\?\([a-z]\)\?\)\?|/ containedin=asciidocTableBlock contained
|
|
syn region asciidocTableBlock matchgroup=asciidocTableDelimiter start=/^|=\{3,}$/ end=/^|=\{3,}$/ keepend contains=ALL
|
|
syn match asciidocTablePrefix /\(\S\@<!\(\([0-9.]\+\)\([*+]\)\)\?\([<\^>.]\{,3}\)\?\([a-z]\)\?\)\?!/ containedin=asciidocTableBlock contained
|
|
syn region asciidocTableBlock2 matchgroup=asciidocTableDelimiter2 start=/^!=\{3,}$/ end=/^!=\{3,}$/ keepend contains=ALL
|
|
|
|
syn match asciidocListContinuation /^+$/
|
|
syn region asciidocExampleBlock start=/^=\{4,}$/ end=/^=\{4,}$/ contains=asciidocCallout,asciidocToDo keepend
|
|
syn region asciidocLiteralBlock start=/^\.\{4,}$/ end=/^\.\{4,}$/ contains=asciidocCallout,asciidocToDo keepend
|
|
syn region asciidocListingBlock start=/^-\{4,}$/ end=/^-\{4,}$/ contains=asciidocCallout,asciidocToDo keepend
|
|
syn region asciidocCommentBlock start="^/\{4,}$" end="^/\{4,}$" contains=asciidocToDo
|
|
syn region asciidocPassthroughBlock start="^+\{4,}$" end="^+\{4,}$"
|
|
|
|
|
|
" Allowing leading \w characters in the filter delimiter is to accomodate
|
|
" the pre version 8.2.7 syntax and may be removed in future releases.
|
|
syn region asciidocFilterBlock start=/^\w*\~\{4,}$/ end=/^\w*\~\{4,}$/
|
|
|
|
syn region asciidocMacroAttributes matchgroup=asciidocRefMacro start=/\\\@<!<<"\{-}\(\w\|-\|_\|:\|\.\)\+"\?,\?/ end=/\(>>\)\|^$/ contains=asciidocQuoted.* keepend
|
|
syn region asciidocMacroAttributes matchgroup=asciidocAnchorMacro start=/\\\@<!\[\{2}\(\w\|-\|_\|:\|\.\)\+,\?/ end=/\]\{2}/ keepend
|
|
syn region asciidocMacroAttributes matchgroup=asciidocAnchorMacro start=/\\\@<!\[\{3}\(\w\|-\|_\|:\|\.\)\+/ end=/\]\{3}/ keepend
|
|
syn region asciidocMacroAttributes matchgroup=asciidocMacro start=/[\\0-9a-zA-Z]\@<!\w\(\w\|-\)*:\S\{-}\[/ skip=/\\\]/ end=/\]\|^$/ contains=asciidocQuoted.*,asciidocAttributeRef,asciidocEntityRef keepend
|
|
" Highlight macro that starts with an attribute reference (a common idiom).
|
|
syn region asciidocMacroAttributes matchgroup=asciidocMacro start=/\(\\\@<!{\w\(\w\|[-,+]\)*\([=!@#$%?:].*\)\?}\)\@<=\S\{-}\[/ skip=/\\\]/ end=/\]\|^$/ contains=asciidocQuoted.*,asciidocAttributeRef keepend
|
|
syn region asciidocMacroAttributes matchgroup=asciidocIndexTerm start=/\\\@<!(\{2,3}/ end=/)\{2,3}/ contains=asciidocQuoted.*,asciidocAttributeRef keepend
|
|
|
|
syn match asciidocCommentLine "^//\([^/].*\|\)$" contains=asciidocToDo
|
|
|
|
syn region asciidocAttributeEntry start=/^:\w/ end=/:\(\s\|$\)/ oneline
|
|
|
|
" Lists.
|
|
syn match asciidocListBullet /^\s*\zs\(-\|\*\{1,5}\)\ze\s/
|
|
syn match asciidocListNumber /^\s*\zs\(\(\d\+\.\)\|\.\{1,5}\|\(\a\.\)\|\([ivxIVX]\+)\)\)\ze\s\+/
|
|
syn region asciidocListLabel start=/^\s*/ end=/\(:\{2,4}\|;;\)$/ oneline contains=asciidocQuoted.*,asciidocMacroAttributes,asciidocAttributeRef,asciidocEntityRef,asciidocEmail,asciidocURL,asciidocBackslash,asciidocToDo keepend
|
|
" DEPRECATED: Horizontal label.
|
|
syn region asciidocHLabel start=/^\s*/ end=/\(::\|;;\)\(\s\+\|\\$\)/ oneline contains=asciidocQuoted.*,asciidocMacroAttributes keepend
|
|
" Starts with any of the above.
|
|
syn region asciidocList start=/^\s*\(-\|\*\{1,5}\)\s/ start=/^\s*\(\(\d\+\.\)\|\.\{1,5}\|\(\a\.\)\|\([ivxIVX]\+)\)\)\s\+/ start=/.\+\(:\{2,4}\|;;\)$/ end=/\(^[=*]\{4,}$\)\@=/ end=/\(^+\?\s*$\)\@=/ contains=asciidocList.\+,asciidocQuoted.*,asciidocMacroAttributes,asciidocAttributeRef,asciidocEntityRef,asciidocEmail,asciidocURL,asciidocBackslash,asciidocCommentLine,asciidocAttributeList,asciidocToDo
|
|
|
|
highlight link asciidocAdmonition Special
|
|
highlight link asciidocAnchorMacro Macro
|
|
highlight link asciidocAttributeEntry Special
|
|
highlight link asciidocAttributeList Special
|
|
highlight link asciidocAttributeMacro Macro
|
|
highlight link asciidocAttributeRef Special
|
|
highlight link asciidocBackslash Special
|
|
highlight link asciidocBlockTitle Title
|
|
highlight link asciidocCallout Label
|
|
highlight link asciidocCommentBlock Comment
|
|
highlight link asciidocCommentLine Comment
|
|
highlight link asciidocDoubleDollarPassthrough Special
|
|
highlight link asciidocEmail Macro
|
|
highlight link asciidocEntityRef Special
|
|
highlight link asciidocExampleBlockDelimiter Type
|
|
highlight link asciidocFilterBlock Type
|
|
highlight link asciidocHLabel Label
|
|
highlight link asciidocIdMarker Special
|
|
highlight link asciidocIndexTerm Macro
|
|
highlight link asciidocLineBreak Special
|
|
highlight link asciidocListBlockDelimiter Label
|
|
highlight link asciidocListBullet Label
|
|
highlight link asciidocListContinuation Label
|
|
highlight link asciidocListingBlock Identifier
|
|
highlight link asciidocListLabel Label
|
|
highlight link asciidocListNumber Label
|
|
highlight link asciidocLiteralBlock Identifier
|
|
highlight link asciidocLiteralParagraph Identifier
|
|
highlight link asciidocMacroAttributes Label
|
|
highlight link asciidocMacro Macro
|
|
highlight link asciidocOneLineTitle Title
|
|
highlight link asciidocPagebreak Type
|
|
highlight link asciidocPassthroughBlock Identifier
|
|
highlight link asciidocQuoteBlockDelimiter Type
|
|
highlight link asciidocQuotedAttributeList Special
|
|
highlight link asciidocQuotedBold Special
|
|
highlight link asciidocQuotedDoubleQuoted Label
|
|
highlight link asciidocQuotedEmphasized2 Type
|
|
highlight link asciidocQuotedEmphasized Type
|
|
highlight link asciidocQuotedMonospaced2 Identifier
|
|
highlight link asciidocQuotedMonospaced Identifier
|
|
highlight link asciidocQuotedSingleQuoted Label
|
|
highlight link asciidocQuotedSubscript Type
|
|
highlight link asciidocQuotedSuperscript Type
|
|
highlight link asciidocQuotedUnconstrainedBold Special
|
|
highlight link asciidocQuotedUnconstrainedEmphasized Type
|
|
highlight link asciidocQuotedUnconstrainedMonospaced Identifier
|
|
highlight link asciidocRefMacro Macro
|
|
highlight link asciidocRuler Type
|
|
highlight link asciidocSidebarDelimiter Type
|
|
highlight link asciidocTableBlock2 NONE
|
|
highlight link asciidocTableBlock NONE
|
|
highlight link asciidocTableDelimiter2 Label
|
|
highlight link asciidocTableDelimiter Label
|
|
highlight link asciidocTable_OLD Type
|
|
highlight link asciidocTablePrefix2 Label
|
|
highlight link asciidocTablePrefix Label
|
|
highlight link asciidocToDo Todo
|
|
highlight link asciidocTriplePlusPassthrough Special
|
|
highlight link asciidocTwoLineTitle Title
|
|
highlight link asciidocURL Macro
|
|
let b:current_syntax = "asciidoc"
|
|
|
|
" vim: wrap et sw=2 sts=2:
|