codekingpro/portable-devtools
115k
1" Vim syntax file2"3" Language: unison4" Maintainer: Anton Parkhomenko <anton@chuwy.me>5" Last Change: Oct 25, 20256" Original Author: John Williams, Paul Chiusano and Rúnar Bjarnason7 8if exists("b:current_syntax")9 finish10endif11 12syntax include @markdown $VIMRUNTIME/syntax/markdown.vim13 14syn cluster markdownLikeDocs contains=markdownBold,markdownItalic,markdownLinkText,markdownListMarker,markdownOrderedListMarker,markdownH1,markdownH2,markdownH3,markdownH4,markdownH5,markdownH615 16syn match unisonOperator "[-!#$%&\*\+/<=>\?@\\^|~]"17syn match unisonDelimiter "[\[\](){},.]"18 19" Strings and constants20syn match unisonSpecialChar contained "\\\([0-9]\+\|o[0-7]\+\|x[0-9a-fA-F]\+\|[\"\\'&\\abfnrtv]\|^[A-Z^_\[\\\]]\)"21syn match unisonSpecialChar contained "\\\(NUL\|SOH\|STX\|ETX\|EOT\|ENQ\|ACK\|BEL\|BS\|HT\|LF\|VT\|FF\|CR\|SO\|SI\|DLE\|DC1\|DC2\|DC3\|DC4\|NAK\|SYN\|ETB\|CAN\|EM\|SUB\|ESC\|FS\|GS\|RS\|US\|SP\|DEL\)"22syn match unisonSpecialCharError contained "\\&\|'''\+"23syn region unisonString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=unisonSpecialChar24syn match unisonCharacter "[^a-zA-Z0-9_']'\([^\\]\|\\[^']\+\|\\'\)'"lc=1 contains=unisonSpecialChar,unisonSpecialCharError25syn match unisonCharacter "^'\([^\\]\|\\[^']\+\|\\'\)'" contains=unisonSpecialChar,unisonSpecialCharError26syn match unisonNumber "\<[0-9]\+\>\|\<0[xX][0-9a-fA-F]\+\>\|\<0[oO][0-7]\+\>\|\<0[bB][01]\+\>"27syn match unisonFloat "\<[0-9]\+\.[0-9]\+\([eE][-+]\=[0-9]\+\)\=\>"28 29" Keyword definitions. These must be patterns instead of keywords30" because otherwise they would match as keywords at the start of a31" "literate" comment (see lu.vim).32syn match unisonModule "\<namespace\>"33syn match unisonImport "\<use\>"34syn match unisonTypedef "\<\(unique\|structural\|∀\|forall\)\>"35syn match unisonStatement "\<\(ability\|do\|type\|where\|match\|cases\|;\|let\|with\|handle\)\>"36syn match unisonConditional "\<\(if\|else\|then\)\>"37 38syn match unisonBoolean "\<\(true\|false\)\>"39 40syn match unisonType "\<\C[A-Z][0-9A-Za-z_'!]*\>"41syn match unisonName "\<\C[a-z_][0-9A-Za-z_'!]*\>" contains=ALL42syn match unisonDef "^\C[A-Za-z_][0-9A-Za-z_'!]*:"43 44" Comments45syn match unisonLineComment "---*\([^-!#$%&\*\+./<=>\?@\\^|~].*\)\?$"46syn region unisonBlockComment start="{-" end="-}" contains=unisonBlockComment47syn region unisonBelowFold start="^---" skip="." end="." contains=unisonBelowFold48 49" Docs50syn region unisonDocBlock matchgroup=unisonDoc start="{{" end="}}" contains=unisonDocTypecheck,unisonDocQuasiquote,unisonDocDirective,unisonDocCode,unisonDocCodeInline,unisonDocCodeRaw,unisonDocMono,@markdownLikeDocs51syn region unisonDocQuasiquote contained matchgroup=unisonDocQuote start="{{" end= "}}" contains=TOP52syn region unisonDocCode contained matchgroup=unisonDocCode start="^\s*```\s*$" end="^\s*```\s*$" contains=TOP53syn region unisonDocTypecheck contained matchgroup=unisonDocCode start="^\s*@typecheck\s*```\s*$" end="^\s*```\s*$" contains=TOP54syn region unisonDocCodeRaw contained matchgroup=unisonDocCode start="^\s*```\s*raw\s*$" end="^\s*```\s*$" contains=NoSyntax55syn region unisonDocCodeInline contained matchgroup=unisonDocCode start="`\@<!``" end="`\@<!``" contains=TOP56syn match unisonDocMono "''[^']*''"57syn region unisonDocDirective contained matchgroup=unisonDocDirective start="\(@\([a-zA-Z0-9_']*\)\)\?{{\@!" end="}" contains=TOP58 59syn match unisonDebug "\<\(todo\|bug\|Debug.trace\|Debug.evalToText\)\>"60 61" things like62" > my_func 1 363" test> Function.tap.tests.t1 = check let64" use Nat == +65" ( 99, 100 ) === (withInitialValue 0 do66" : : :67syn match unisonWatch "^[A-Za-z]*>"68 69hi def link unisonWatch Debug70hi def link unisonDocMono Delimiter71hi def link unisonDocDirective Import72hi def link unisonDocQuote Delimiter73hi def link unisonDocCode Delimiter74hi def link unisonDoc String75hi def link unisonBelowFold Comment76hi def link unisonBlockComment Comment77hi def link unisonBoolean Boolean78hi def link unisonCharacter Character79hi def link unisonComment Comment80hi def link unisonConditional Conditional81hi def link unisonConditional Conditional82hi def link unisonDebug Debug83hi def link unisonDelimiter Delimiter84hi def link unisonDocBlock String85hi def link unisonDocDirective Import86hi def link unisonDocIncluded Import87hi def link unisonFloat Float88hi def link unisonImport Include89hi def link unisonLineComment Comment90hi def link unisonLink Type91hi def link unisonName Identifier92hi def link unisonDef Typedef93hi def link unisonNumber Number94hi def link unisonOperator Operator95hi def link unisonSpecialChar SpecialChar96hi def link unisonSpecialCharError Error97hi def link unisonStatement Statement98hi def link unisonString String99hi def link unisonType Type100hi def link unisonTypedef Typedef101 102 103let b:current_syntax = "unison"104 105" Options for vi: ts=8 sw=2 sts=2 nowrap noexpandtab ft=vim106 