|
| 1 | +if has_key(g:polyglot_is_disabled, 'mint') |
| 2 | + finish |
| 3 | +endif |
| 4 | + |
| 5 | +if exists('b:current_syntax') |
| 6 | + let s:current_syntax = b:current_syntax |
| 7 | + silent! unlet b:current_syntax |
| 8 | +endif |
| 9 | + |
| 10 | +syntax include @JSSyntax syntax/javascript.vim |
| 11 | +silent! unlet b:current_syntax |
| 12 | +syntax include @XMLSyntax syntax/xml.vim |
| 13 | +silent! unlet b:current_syntax |
| 14 | +syntax include @CSSSyntax syntax/css.vim |
| 15 | +silent! unlet b:current_syntax |
| 16 | + |
| 17 | +syntax case match |
| 18 | +if exists('s:current_syntax') |
| 19 | + let b:current_syntax = s:current_syntax |
| 20 | +endif |
| 21 | + |
| 22 | +syntax keyword mintBlock |
| 23 | + \ do sequence parallel if else case try catch |
| 24 | + |
| 25 | +syntax keyword mintCompoundType |
| 26 | + \ Result Maybe Promise Array |
| 27 | + |
| 28 | +syntax keyword mintLiteralType |
| 29 | + \ Number Bool String Object Time Html Void Never Tuple |
| 30 | + |
| 31 | +syntax keyword mintDeclarator |
| 32 | + \ component module routes |
| 33 | + |
| 34 | +syntax keyword mintStructureDeclarator |
| 35 | + \ enum record store provider const |
| 36 | + |
| 37 | +syntax keyword mintInitializer |
| 38 | + \ fun let where next state property |
| 39 | + |
| 40 | +syntax keyword mintKeyword |
| 41 | + \ decode encode return connect use |
| 42 | + |
| 43 | +syntax keyword mintOperator |
| 44 | + \ "<{" "}>" "::" "=>" "|>" "<|" |
| 45 | + |
| 46 | +syntax keyword mintSpecifier |
| 47 | + \ as break return using get exposing ok error just nothing void |
| 48 | + |
| 49 | +" String |
| 50 | +syntax region mintString matchgroup=mintStringDelimiter start=/"/ skip=/\\"/ end=/"/ oneline |
| 51 | +" String interpolation |
| 52 | +syntax region mintStringInterpolation matchgroup=mintInterpolationDelimiter start="#{" end="}" contained containedin=mintString contains=@mintAll |
| 53 | + |
| 54 | +" Numbers |
| 55 | +syntax match mintNumber "\v<\d+(\.\d+)?>" |
| 56 | + |
| 57 | +" Pascal-cased types |
| 58 | +syntax match mintDefinedType "\v<[A-Z][A-Za-z0-9]*(\.[A-Z][A-Za-z0-9]*)*>" |
| 59 | + |
| 60 | + |
| 61 | +syntax cluster mintAll contains=mintBlock,mintCompoundType,mintDeclarator,mintInitializer,mintKeyword,mintOperator,mintSpecifier,mintString |
| 62 | + |
| 63 | +syntax region mintEmbeddedHtmlRegion |
| 64 | + \ start=+<\z([^ /!?<>"'=:]\+\)+ |
| 65 | + \ start=+<\z(\s\{0}\)>+ |
| 66 | + \ skip=+<!--\_.\{-}-->+ |
| 67 | + \ end=+</\z1\_s\{-}>+ |
| 68 | + \ end=+/>+ |
| 69 | + \ fold |
| 70 | + \ contains=@Spell,@XMLSyntax,@mintAll |
| 71 | + \ keepend |
| 72 | + |
| 73 | +syntax region mintEmbeddedJsRegion |
| 74 | + \ matchgroup=mintJsInterpolationQuotes |
| 75 | + \ start="`" |
| 76 | + \ end="`" |
| 77 | + \ skip="\\`" |
| 78 | + \ keepend |
| 79 | + \ contains=mintInterpolation,@jsExpression |
| 80 | + |
| 81 | +hi link mintJsInterpolationQuotes Delimiter |
| 82 | + |
| 83 | +syntax match mintBraces /[{}]/ |
| 84 | +syntax keyword mintStyleKeyword style skipwhite nextgroup=mintStyleIdentifier |
| 85 | +syntax match mintStyleIdentifier /\<\k\k*/ contained skipwhite skipempty nextgroup=mintStyleBlock |
| 86 | +syntax region mintStyleBlock contained matchgroup=mintBraces start="{" end="}" contains=@mintAll,cssDefinition,cssTagName,cssAttributeSelector,cssClassName,cssIdentifier,cssAtRule,cssAttrRegion,css.*Prop,cssComment,cssValue.*,cssColor,cssURL,cssImportant,cssCustomProp,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssVendor,cssDefinition,cssHacks,cssNoise |
| 87 | + |
| 88 | +" Colour links |
| 89 | +hi link mintKeyword Keyword |
| 90 | +hi link mintOperator Operator |
| 91 | + |
| 92 | +hi link mintBlock Statement |
| 93 | +hi link mintDeclarator PreProc |
| 94 | +hi link mintStructureDeclarator Structure |
| 95 | +hi link mintInitializer PreProc |
| 96 | +hi link mintSpecifier Statement |
| 97 | + |
| 98 | +hi link mintString String |
| 99 | +hi link mintNumber Number |
| 100 | + |
| 101 | +hi link mintCompoundType Type |
| 102 | +hi link mintLiteralType Type |
| 103 | +hi link mintDefinedType Type |
| 104 | + |
| 105 | +hi link mintStringDelimiter Delimiter |
| 106 | +hi link mintInterpolationDelimiter Special |
| 107 | + |
| 108 | +hi link mintStyleKeyword Type |
| 109 | +hi link mintStyleIdentifier Statement |
0 commit comments