neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

asciidoc.vim (11146B)


      1 " Vim syntax file
      2 " Language:        AsciiDoc
      3 " Maintainer:      @aerostitch on GitHub (tag me in your issue in the
      4 "                  github/vim/vim repository and I'll answer when available)
      5 " Original author: Stuart Rackham <srackham@gmail.com> (inspired by Felix
      6 "                  Obenhuber's original asciidoc.vim script).
      7 " URL:             http://asciidoc.org/
      8 " Licence:         GPL (http://www.gnu.org)
      9 " Remarks:         Vim 6 or greater
     10 " Last Update:     2020 May 03 (see Issue 240)
     11 " Limitations:
     12 "
     13 " - Nested quoted text formatting is highlighted according to the outer
     14 "   format.
     15 " - If a closing Example Block delimiter may be mistaken for a title
     16 "   underline. A workaround is to insert a blank line before the closing
     17 "   delimiter.
     18 " - Lines within a paragraph starting with equals characters are
     19 "   highlighted as single-line titles.
     20 " - Lines within a paragraph beginning with a period are highlighted as
     21 "   block titles.
     22 
     23 
     24 if exists("b:current_syntax")
     25  finish
     26 endif
     27 
     28 " Use the default syntax syncing.
     29 
     30 " Run :help syn-priority to review syntax matching priority.
     31 syn keyword asciidocToDo TODO FIXME CHECK TEST XXX ZZZ DEPRECATED
     32 syn match asciidocBackslash /\\/
     33 syn region asciidocIdMarker start=/^\$Id:\s/ end=/\s\$$/
     34 syn match asciidocCallout /\\\@<!<\d\{1,2}>/
     35 syn match asciidocOpenBlockDelimiter /^--$/
     36 syn match asciidocLineBreak /[ \t]+$/ containedin=asciidocList
     37 syn match asciidocRuler /^'\{3,}$/
     38 syn match asciidocPagebreak /^<\{3,}$/
     39 syn match asciidocEntityRef /\\\@<!&[#a-zA-Z]\S\{-};/
     40 syn region asciidocLiteralParagraph start=/\(\%^\|\_^\s*\n\)\@<=\s\+\S\+/ end=/\(^\(+\|--\)\?\s*$\)\@=/ contains=asciidocToDo
     41 syn match asciidocURL /\\\@<!\<\(http\|https\|ftp\|file\|irc\):\/\/[^| \t]*\(\w\|\/\)/
     42 syn match asciidocEmail /[\\.:]\@<!\(\<\|<\)\w\(\w\|[.-]\)*@\(\w\|[.-]\)*\w>\?[0-9A-Za-z_]\@!/
     43 syn match asciidocAttributeRef /\\\@<!{\w\(\w\|[-,+]\)*\([=!@#$%?:].*\)\?}/
     44 
     45 " As a damage control measure quoted patterns always terminate at a blank
     46 " line (see 'Limitations' above).
     47 syn match asciidocQuotedAttributeList /\\\@<!\[[a-zA-Z0-9_-][a-zA-Z0-9 _-]*\][+_'`#*]\@=/
     48 syn match asciidocQuotedSubscript /\\\@<!\~\S\_.\{-}\(\~\|\n\s*\n\)/ contains=asciidocEntityRef
     49 syn match asciidocQuotedSuperscript /\\\@<!\^\S\_.\{-}\(\^\|\n\s*\n\)/ contains=asciidocEntityRef
     50 
     51 syn match asciidocQuotedMonospaced /\(^\|[| \t([.,=\]]\)\@<=+\([+ \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(+\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
     52 syn match asciidocQuotedMonospaced2 /\(^\|[| \t([.,=\]]\)\@<=`\([` \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(`\([| \t)[\],.?!;:=]\|$\)\@=\)/
     53 syn match asciidocQuotedUnconstrainedMonospaced /[\\+]\@<!++\S\_.\{-}\(++\|\n\s*\n\)/ contains=asciidocEntityRef
     54 
     55 syn match asciidocQuotedEmphasized /\(^\|[| \t([.,=\]]\)\@<=_\([_ \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(_\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
     56 syn match asciidocQuotedEmphasized2 /\(^\|[| \t([.,=\]]\)\@<='\([' \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\('\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
     57 syn match asciidocQuotedUnconstrainedEmphasized /\\\@<!__\S\_.\{-}\(__\|\n\s*\n\)/ contains=asciidocEntityRef
     58 
     59 syn match asciidocQuotedBold /\(^\|[| \t([.,=\]]\)\@<=\*\([* \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(\*\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
     60 syn match asciidocQuotedUnconstrainedBold /\\\@<!\*\*\S\_.\{-}\(\*\*\|\n\s*\n\)/ contains=asciidocEntityRef
     61 
     62 " Don't allow ` in single quoted (a kludge to stop confusion with `monospaced`).
     63 syn match asciidocQuotedSingleQuoted /\(^\|[| \t([.,=\]]\)\@<=`\([` \n\t]\)\@!\([^`]\|\n\(\s*\n\)\@!\)\{-}[^` \t]\('\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
     64 
     65 syn match asciidocQuotedDoubleQuoted /\(^\|[| \t([.,=\]]\)\@<=``\([` \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(''\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
     66 
     67 syn match asciidocDoubleDollarPassthrough /\\\@<!\(^\|[^0-9a-zA-Z$]\)\@<=\$\$..\{-}\(\$\$\([^0-9a-zA-Z$]\|$\)\@=\|^$\)/
     68 syn match asciidocTriplePlusPassthrough /\\\@<!\(^\|[^0-9a-zA-Z$]\)\@<=+++..\{-}\(+++\([^0-9a-zA-Z$]\|$\)\@=\|^$\)/
     69 
     70 syn match asciidocAdmonition /^\u\{3,15}:\(\s\+.*\)\@=/
     71 
     72 syn region asciidocTable_OLD start=/^\([`.']\d*[-~_]*\)\+[-~_]\+\d*$/ end=/^$/
     73 syn match asciidocBlockTitle /^\.[^. \t].*[^-~_]$/ contains=asciidocQuoted.*,asciidocAttributeRef
     74 syn match asciidocTitleUnderline /[-=~^+]\{2,}$/ transparent contained contains=NONE
     75 syn match asciidocOneLineTitle /^=\{1,5}\s\+\S.*$/ contains=asciidocQuoted.*,asciidocMacroAttributes,asciidocAttributeRef,asciidocEntityRef,asciidocEmail,asciidocURL,asciidocBackslash
     76 syn match asciidocTwoLineTitle /^[^. +/].*[^.]\n[-=~^+]\{3,}$/ contains=asciidocQuoted.*,asciidocMacroAttributes,asciidocAttributeRef,asciidocEntityRef,asciidocEmail,asciidocURL,asciidocBackslash,asciidocTitleUnderline
     77 
     78 syn match asciidocAttributeList /^\[[^[ \t].*\]$/
     79 syn match asciidocQuoteBlockDelimiter /^_\{4,}$/
     80 syn match asciidocExampleBlockDelimiter /^=\{4,}$/
     81 syn match asciidocSidebarDelimiter /^*\{4,}$/
     82 
     83 " See http://vimdoc.sourceforge.net/htmldoc/usr_44.html for excluding region
     84 " contents from highlighting.
     85 syn match asciidocTablePrefix /\(\S\@<!\(\([0-9.]\+\)\([*+]\)\)\?\([<\^>.]\{,3}\)\?\([a-z]\)\?\)\?|/ containedin=asciidocTableBlock contained
     86 syn region asciidocTableBlock matchgroup=asciidocTableDelimiter start=/^|=\{3,}$/ end=/^|=\{3,}$/ keepend contains=ALL
     87 syn match asciidocTablePrefix /\(\S\@<!\(\([0-9.]\+\)\([*+]\)\)\?\([<\^>.]\{,3}\)\?\([a-z]\)\?\)\?!/ containedin=asciidocTableBlock contained
     88 syn region asciidocTableBlock2 matchgroup=asciidocTableDelimiter2 start=/^!=\{3,}$/ end=/^!=\{3,}$/ keepend contains=ALL
     89 
     90 syn match asciidocListContinuation /^+$/
     91 syn region asciidocLiteralBlock start=/^\.\{4,}$/ end=/^\.\{4,}$/ contains=asciidocCallout,asciidocToDo keepend
     92 syn region asciidocListingBlock start=/^-\{4,}$/ end=/^-\{4,}$/ contains=asciidocCallout,asciidocToDo keepend
     93 syn region asciidocCommentBlock start="^/\{4,}$" end="^/\{4,}$" contains=asciidocToDo
     94 syn region asciidocPassthroughBlock start="^+\{4,}$" end="^+\{4,}$"
     95 
     96 " Allowing leading \w characters in the filter delimiter is to accomodate
     97 " the pre version 8.2.7 syntax and may be removed in future releases.
     98 syn region asciidocFilterBlock start=/^\w*\~\{4,}$/ end=/^\w*\~\{4,}$/
     99 
    100 syn region asciidocMacroAttributes matchgroup=asciidocRefMacro start=/\\\@<!<<"\{-}\(\w\|-\|_\|:\|\.\)\+"\?,\?/ end=/\(>>\)\|^$/ contains=asciidocQuoted.* keepend
    101 syn region asciidocMacroAttributes matchgroup=asciidocAnchorMacro start=/\\\@<!\[\{2}\(\w\|-\|_\|:\|\.\)\+,\?/ end=/\]\{2}/ keepend
    102 syn region asciidocMacroAttributes matchgroup=asciidocAnchorMacro start=/\\\@<!\[\{3}\(\w\|-\|_\|:\|\.\)\+/ end=/\]\{3}/ keepend
    103 syn region asciidocMacroAttributes matchgroup=asciidocMacro start=/[\\0-9a-zA-Z]\@<!\w\(\w\|-\)*:\S\{-}\[/ skip=/\\\]/ end=/\]\|^$/ contains=asciidocQuoted.*,asciidocAttributeRef,asciidocEntityRef keepend
    104 " Highlight macro that starts with an attribute reference (a common idiom).
    105 syn region asciidocMacroAttributes matchgroup=asciidocMacro start=/\(\\\@<!{\w\(\w\|[-,+]\)*\([=!@#$%?:].*\)\?}\)\@<=\S\{-}\[/ skip=/\\\]/ end=/\]\|^$/ contains=asciidocQuoted.*,asciidocAttributeRef keepend
    106 syn region asciidocMacroAttributes matchgroup=asciidocIndexTerm start=/\\\@<!(\{2,3}/ end=/)\{2,3}/ contains=asciidocQuoted.*,asciidocAttributeRef keepend
    107 
    108 syn match asciidocCommentLine "^//\([^/].*\|\)$" contains=asciidocToDo
    109 
    110 syn region asciidocAttributeEntry start=/^:\w/ end=/:\(\s\|$\)/ oneline
    111 
    112 " Lists.
    113 syn match asciidocListBullet /^\s*\zs\(-\|\*\{1,5}\)\ze\s/
    114 syn match asciidocListNumber /^\s*\zs\(\(\d\+\.\)\|\.\{1,5}\|\(\a\.\)\|\([ivxIVX]\+)\)\)\ze\s\+/
    115 syn region asciidocListLabel start=/^\s*/ end=/\(:\{2,4}\|;;\)$/ oneline contains=asciidocQuoted.*,asciidocMacroAttributes,asciidocAttributeRef,asciidocEntityRef,asciidocEmail,asciidocURL,asciidocBackslash,asciidocToDo keepend
    116 " DEPRECATED: Horizontal label.
    117 syn region asciidocHLabel start=/^\s*/ end=/\(::\|;;\)\(\s\+\|\\$\)/ oneline contains=asciidocQuoted.*,asciidocMacroAttributes keepend
    118 " Starts with any of the above.
    119 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
    120 
    121 hi def link asciidocAdmonition Special
    122 hi def link asciidocAnchorMacro Macro
    123 hi def link asciidocAttributeEntry Special
    124 hi def link asciidocAttributeList Special
    125 hi def link asciidocAttributeMacro Macro
    126 hi def link asciidocAttributeRef Special
    127 hi def link asciidocBackslash Special
    128 hi def link asciidocBlockTitle Title
    129 hi def link asciidocCallout Label
    130 hi def link asciidocCommentBlock Comment
    131 hi def link asciidocCommentLine Comment
    132 hi def link asciidocDoubleDollarPassthrough Special
    133 hi def link asciidocEmail Macro
    134 hi def link asciidocEntityRef Special
    135 hi def link asciidocExampleBlockDelimiter Type
    136 hi def link asciidocFilterBlock Type
    137 hi def link asciidocHLabel Label
    138 hi def link asciidocIdMarker Special
    139 hi def link asciidocIndexTerm Macro
    140 hi def link asciidocLineBreak Special
    141 hi def link asciidocOpenBlockDelimiter Label
    142 hi def link asciidocListBullet Label
    143 hi def link asciidocListContinuation Label
    144 hi def link asciidocListingBlock Identifier
    145 hi def link asciidocListLabel Label
    146 hi def link asciidocListNumber Label
    147 hi def link asciidocLiteralBlock Identifier
    148 hi def link asciidocLiteralParagraph Identifier
    149 hi def link asciidocMacroAttributes Label
    150 hi def link asciidocMacro Macro
    151 hi def link asciidocOneLineTitle Title
    152 hi def link asciidocPagebreak Type
    153 hi def link asciidocPassthroughBlock Identifier
    154 hi def link asciidocQuoteBlockDelimiter Type
    155 hi def link asciidocQuotedAttributeList Special
    156 hi def link asciidocQuotedBold Special
    157 hi def link asciidocQuotedDoubleQuoted Label
    158 hi def link asciidocQuotedEmphasized2 Type
    159 hi asciidocQuotedEmphasizedItalic term=italic cterm=italic gui=italic
    160 hi def link asciidocQuotedEmphasized asciidocQuotedEmphasizedItalic
    161 hi def link asciidocQuotedMonospaced2 Identifier
    162 hi def link asciidocQuotedMonospaced Identifier
    163 hi def link asciidocQuotedSingleQuoted Label
    164 hi def link asciidocQuotedSubscript Type
    165 hi def link asciidocQuotedSuperscript Type
    166 hi def link asciidocQuotedUnconstrainedBold Special
    167 hi def link asciidocQuotedUnconstrainedEmphasized Type
    168 hi def link asciidocQuotedUnconstrainedMonospaced Identifier
    169 hi def link asciidocRefMacro Macro
    170 hi def link asciidocRuler Type
    171 hi def link asciidocSidebarDelimiter Type
    172 hi def link asciidocTableBlock2 NONE
    173 hi def link asciidocTableBlock NONE
    174 hi def link asciidocTableDelimiter2 Label
    175 hi def link asciidocTableDelimiter Label
    176 hi def link asciidocTable_OLD Type
    177 hi def link asciidocTablePrefix2 Label
    178 hi def link asciidocTablePrefix Label
    179 hi def link asciidocToDo Todo
    180 hi def link asciidocTriplePlusPassthrough Special
    181 hi def link asciidocTwoLineTitle Title
    182 hi def link asciidocURL Macro
    183 let b:current_syntax = "asciidoc"
    184 
    185 " vim: wrap et sw=2 sts=2: