Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
julia.vim553 linesDownload Raw Back to syntax
1" Vim syntax file2" Language:	julia3" Maintainer:	Carlo Baldassi <carlobaldassi@gmail.com>4" Homepage:	https://github.com/JuliaEditorSupport/julia-vim5" Last Change:	2021 Aug 046"		2025 Dec 08 by Vim Project (update syntax script from upstream #18894)7 8if version < 6009  syntax clear10elseif exists("b:current_syntax")11  finish12endif13 14let s:cpo_save = &cpo15set cpo&vim16 17if version < 70418  " this is used to disable regex syntax like `\@3<='19  " on older vim versions20  function! s:d(x)21    return ''22  endfunction23else24  function! s:d(x)25    return string(a:x)26  endfunction27endif28 29scriptencoding utf-830 31let s:julia_spellcheck_strings = get(g:, "julia_spellcheck_strings", 0)32let s:julia_spellcheck_docstrings = get(g:, "julia_spellcheck_docstrings", 1)33let s:julia_spellcheck_comments = get(g:, "julia_spellcheck_comments", 1)34 35let s:julia_highlight_operators = get(g:, "julia_highlight_operators", 1)36 37" List of characters, up to \UFF, which cannot be used in identifiers.38" (It includes operator characters; we don't consider them identifiers.)39" This is used mostly in lookbehinds with `\@<=`, e.g. when we need to check40" that that we're not in the middle of an identifier.41" It doesn't include a few characters (spaces and all closing parentheses)42" because those may or may not be valid in the lookbehind on a case-by-case43" basis.44let s:nonid_chars = '\U00-\U08' . '\U0A-\U1F'45      \           . '\U21-\U28' . '\U2A-\U2F' . '\U3A-\U40' . '\U5B\U5C\U5E' . '\U60' . '\U7B\U7C'46      \           . '\U7E-\UA1' . '\UA7\UA8' . '\UAB-\UAD' . '\UAF\UB1\UB4' . '\UB6-\UB8' . '\UBB\UBF' . '\UD7\UF7'47 48" The complete list49let s:nonidS_chars = '[:space:])\U5D}' . s:nonid_chars50 51 52" List of all valid operator chars up to \UFF (NOTE: they must all be included53" in s:nonidS_chars, so that if we include that, then this is redundant)54" It does not include '!' since it can be used in an identifier.55" The list contains the following characters: '%&*+-/<=>\\^|~¬±×÷'56let s:op_chars = '\U25\U26\U2A\U2B\U2D\U2F\U3C-\U3E\U5C\U5E\U7C\U7E\UAC\UB1\UD7\UF7'57 58" List of all valid operator chars above \UFF59" Written with ranges for performance reasons60" The list contains the following characters: '…⁝⅋←↑→↓↔↚↛↜↝↞↠↢↣↤↦↩↪↫↬↮↶↷↺↻↼↽⇀⇁⇄⇆⇇⇉⇋⇌⇍⇎⇏⇐⇒⇔⇚⇛⇜⇝⇠⇢⇴⇵⇶⇷⇸⇹⇺⇻⇼⇽⇾⇿∈∉∊∋∌∍∓∔∗∘∙√∛∜∝∤∥∦∧∨∩∪∷∸∺∻∽∾≀≁≂≃≄≅≆≇≈≉≊≋≌≍≎≏≐≑≒≓≔≕≖≗≘≙≚≛≜≝≞≟≠≡≢≣≤≥≦≧≨≩≪≫≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿⊀⊁⊂⊃⊄⊅⊆⊇⊈⊉⊊⊋⊍⊎⊏⊐⊑⊒⊓⊔⊕⊖⊗⊘⊙⊚⊛⊜⊞⊟⊠⊡⊢⊣⊩⊬⊮⊰⊱⊲⊳⊴⊵⊶⊷⊻⊼⊽⋄⋅⋆⋇⋉⋊⋋⋌⋍⋎⋏⋐⋑⋒⋓⋕⋖⋗⋘⋙⋚⋛⋜⋝⋞⋟⋠⋡⋢⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋮⋯⋰⋱⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿⌿▷⟂⟈⟉⟑⟒⟕⟖⟗⟰⟱⟵⟶⟷⟹⟺⟻⟼⟽⟾⟿⤀⤁⤂⤃⤄⤅⤆⤇⤈⤉⤊⤋⤌⤍⤎⤏⤐⤑⤒⤓⤔⤕⤖⤗⤘⤝⤞⤟⤠⥄⥅⥆⥇⥈⥉⥊⥋⥌⥍⥎⥏⥐⥑⥒⥓⥔⥕⥖⥗⥘⥙⥚⥛⥜⥝⥞⥟⥠⥡⥢⥣⥤⥥⥦⥧⥨⥩⥪⥫⥬⥭⥮⥯⥰⦷⦸⦼⦾⦿⧀⧁⧡⧣⧤⧥⧴⧶⧷⧺⧻⨇⨈⨝⨟⨢⨣⨤⨥⨦⨧⨨⨩⨪⨫⨬⨭⨮⨰⨱⨲⨳⨴⨵⨶⨷⨸⨹⨺⨻⨼⨽⩀⩁⩂⩃⩄⩅⩊⩋⩌⩍⩎⩏⩐⩑⩒⩓⩔⩕⩖⩗⩘⩚⩛⩜⩝⩞⩟⩠⩡⩢⩣⩦⩧⩪⩫⩬⩭⩮⩯⩰⩱⩲⩳⩴⩵⩶⩷⩸⩹⩺⩻⩼⩽⩾⩿⪀⪁⪂⪃⪄⪅⪆⪇⪈⪉⪊⪋⪌⪍⪎⪏⪐⪑⪒⪓⪔⪕⪖⪗⪘⪙⪚⪛⪜⪝⪞⪟⪠⪡⪢⪣⪤⪥⪦⪧⪨⪩⪪⪫⪬⪭⪮⪯⪰⪱⪲⪳⪴⪵⪶⪷⪸⪹⪺⪻⪼⪽⪾⪿⫀⫁⫂⫃⫄⫅⫆⫇⫈⫉⫊⫋⫌⫍⫎⫏⫐⫑⫒⫓⫔⫕⫖⫗⫘⫙⫛⫷⫸⫹⫺⬰⬱⬲⬳⬴⬵⬶⬷⬸⬹⬺⬻⬼⬽⬾⬿⭀⭁⭂⭃⭄⭇⭈⭉⭊⭋⭌←↑→↓'61let s:op_chars_wc = '\U2026\U205D\U214B\U2190-\U2194\U219A-\U219E\U21A0\U21A2-\U21A4\U21A6\U21A9-\U21AC\U21AE\U21B6\U21B7\U21BA-\U21BD\U21C0\U21C1\U21C4\U21C6\U21C7\U21C9\U21CB-\U21D0\U21D2\U21D4\U21DA-\U21DD\U21E0\U21E2\U21F4-\U21FF\U2208-\U220D\U2213\U2214\U2217-\U221D\U2224-\U222A\U2237\U2238\U223A\U223B\U223D\U223E\U2240-\U228B\U228D-\U229C\U229E-\U22A3\U22A9\U22AC\U22AE\U22B0-\U22B7\U22BB-\U22BD\U22C4-\U22C7\U22C9-\U22D3\U22D5-\U22FF\U233F\U25B7\U27C2\U27C8\U27C9\U27D1\U27D2\U27D5-\U27D7\U27F0\U27F1\U27F5-\U27F7\U27F9-\U27FF\U2900-\U2918\U291D-\U2920\U2944-\U2970\U29B7\U29B8\U29BC\U29BE-\U29C1\U29E1\U29E3-\U29E5\U29F4\U29F6\U29F7\U29FA\U29FB\U2A07\U2A08\U2A1D\U2A1F\U2A22-\U2A2E\U2A30-\U2A3D\U2A40-\U2A45\U2A4A-\U2A58\U2A5A-\U2A63\U2A66\U2A67\U2A6A-\U2AD9\U2ADB\U2AF7-\U2AFA\U2B30-\U2B44\U2B47-\U2B4C\UFFE9-\UFFEC'62 63 64" Characters that can be used to start an identifier. Above \UBF we don't65" bother checking. (If a UTF8 operator is used, it will take precedence anyway.)66let s:id_charsH = '\%([A-Za-z_\UA2-\UA6\UA9\UAA\UAE\UB0\UB5\UBA]\|[^\U00-\UBF]\)'67" Characters that can appear in an identifier, starting in 2nd position. Above68" \UBF we check for operators since we need to stop the identifier if one69" appears. We don't check for invalid characters though.70let s:id_charsW = '\%([0-9A-Za-z_!\UA2-\UA6\UA9\UAA\UAE-\UB0\UB2-\UB5\UB8-\UBA\UBC-\UBE]\|[^\U00-\UBF]\@=[^' . s:op_chars_wc . ']\)'71 72" A valid julia identifier, more or less73let s:idregex = '\%(' . s:id_charsH . s:id_charsW . '*\)'74 75" Full operators regex76let s:operators = '\%(' . '\.\%([-+*/^÷%|&⊻]\|//\|\\\|>>\|>>>\?\)\?='77      \         . '\|'  . '[!:<>]=\|||\|&&\||>\|<|\|[<>:]:\|<<\|>>>\?\|//\|[-=]>\|\.\.\.\?'78      \         . '\|'  . '\.!' . '\|'.s:id_charsW.'\@'.s:d(1).'<!!'79      \         . '\|'  . '\.\?[' . s:op_chars . s:op_chars_wc . ']'80      \         . '\)'81 82 83syn case match84 85syntax cluster juliaExpressions		contains=@juliaParItems,@juliaStringItems,@juliaKeywordItems,@juliaBlocksItems,@juliaTypesItems,@juliaConstItems,@juliaMacroItems,@juliaSymbolItems,@juliaOperatorItems,@juliaNumberItems,@juliaCommentItems,@juliaErrorItems,@juliaSyntaxRegions86syntax cluster juliaExprsPrintf		contains=@juliaExpressions,@juliaPrintfItems87syntax cluster juliaExprsNodot		contains=@juliaParItems,@juliaStringItems,@juliaMacroItems,@juliaSymbolItems,@juliaOperatorItems,@juliaCommentItems,juliaIdSymbol88 89syntax cluster juliaParItems		contains=juliaParBlock,juliaSqBraIdxBlock,juliaSqBraBlock,juliaCurBraBlock,juliaQuotedParBlock,juliaQuotedQMarkPar90syntax cluster juliaKeywordItems	contains=juliaKeyword,juliaWhereKeyword,juliaImportLine,juliaInfixKeyword,juliaRepKeyword91syntax cluster juliaBlocksItems		contains=juliaConditionalBlock,juliaWhileBlock,juliaForBlock,juliaBeginBlock,juliaFunctionBlock,juliaMacroBlock,juliaQuoteBlock,juliaExceptionBlock,juliaLetBlock,juliaDoBlock,juliaModuleBlock,juliaStructBlock,juliaMutableStructBlock,juliaAbstractBlock,juliaPrimitiveBlock92syntax cluster juliaTypesItems		contains=juliaBaseTypeBasic,juliaBaseTypeNum,juliaBaseTypeC,juliaBaseTypeError,juliaBaseTypeIter,juliaBaseTypeString,juliaBaseTypeArray,juliaBaseTypeDict,juliaBaseTypeSet,juliaBaseTypeIO,juliaBaseTypeProcess,juliaBaseTypeRange,juliaBaseTypeRegex,juliaBaseTypeFact,juliaBaseTypeSort,juliaBaseTypeRound,juliaBaseTypeSpecial,juliaBaseTypeRandom,juliaBaseTypeDisplay,juliaBaseTypeTime,juliaBaseTypeOther93 94syntax cluster juliaConstItems  	contains=juliaConstNum,juliaConstBool,juliaConstEnv,juliaConstC,juliaConstGeneric,juliaConstIO,juliaPossibleEuler95 96syntax cluster juliaMacroItems		contains=juliaPossibleMacro,juliaDollarVar,juliaDollarPar,juliaDollarSqBra97syntax cluster juliaSymbolItems		contains=juliaPossibleSymbol98syntax cluster juliaNumberItems		contains=juliaNumbers99syntax cluster juliaStringItems		contains=juliaChar,juliaString,juliabString,juliasString,juliaShellString,juliaDocString,juliaRegEx100syntax cluster juliaPrintfItems		contains=juliaPrintfParBlock,juliaPrintfString101syntax cluster juliaOperatorItems	contains=juliaOperator,juliaRangeOperator,juliaCTransOperator,juliaTernaryRegion,juliaColon,juliaSemicolon,juliaComma102syntax cluster juliaCommentItems	contains=juliaCommentL,juliaCommentM103syntax cluster juliaErrorItems		contains=juliaErrorPar,juliaErrorEnd,juliaErrorElse,juliaErrorCatch,juliaErrorFinally104 105syntax cluster juliaSyntaxRegions	contains=juliaIdSymbol,juliaTypeOperatorR2,juliaTypeOperatorR3,juliaWhereR,juliaDotted106 107syntax cluster juliaSpellcheckStrings		contains=@spell108syntax cluster juliaSpellcheckDocStrings	contains=@spell109syntax cluster juliaSpellcheckComments		contains=@spell110 111if !s:julia_spellcheck_docstrings112  syntax cluster juliaSpellcheckDocStrings	remove=@spell113endif114if !s:julia_spellcheck_strings115  syntax cluster juliaSpellcheckStrings		remove=@spell116endif117if !s:julia_spellcheck_comments118  syntax cluster juliaSpellcheckComments	remove=@spell119endif120 121syntax match   juliaSemicolon		display ";"122syntax match   juliaComma		display ","123syntax match   juliaColon		display ":"124 125" A dot can introduce a sort of 'environment' such that words after it are not126" recognized as keywords. This has low precedence so that it can be overridden127" by operators128syntax match   juliaDotted		transparent "\.\s*[^])}.]" contains=@juliaExprsNodot129syntax match   juliaDottedT		contained transparent "\.\s*[^])}.]" contains=@juliaExprsNodot,juliaType130 131syntax match   juliaErrorPar		display "[])}]"132syntax match   juliaErrorEnd		display "\<end\>"133syntax match   juliaErrorElse		display "\<\%(else\|elseif\)\>"134syntax match   juliaErrorCatch		display "\<catch\>"135syntax match   juliaErrorFinally	display "\<finally\>"136syntax match   juliaErrorSemicol	display contained ";"137 138syntax region  juliaParBlock		matchgroup=juliaParDelim start="(" end=")" contains=@juliaExpressions,juliaComprehensionFor139syntax region  juliaParBlockInRange	matchgroup=juliaParDelim contained start="(" end=")" contains=@juliaExpressions,juliaParBlockInRange,juliaRangeKeyword,juliaComprehensionFor140syntax region  juliaSqBraIdxBlock	matchgroup=juliaParDelim start="\[" end="\]" contains=@juliaExpressions,juliaParBlockInRange,juliaRangeKeyword,juliaComprehensionFor,juliaSymbolS,juliaQuotedParBlockS,juliaQuotedQMarkParS141exec 'syntax region  juliaSqBraBlock	matchgroup=juliaParDelim start="\%(^\|\s\|' . s:operators . '\)\@'.s:d(3).'<=\[" end="\]" contains=@juliaExpressions,juliaComprehensionFor,juliaSymbolS,juliaQuotedParBlockS,juliaQuotedQMarkParS'142syntax region  juliaCurBraBlock		matchgroup=juliaParDelim start="{" end="}" contains=juliaType,juliaDottedT,@juliaExpressions143 144exec 'syntax match   juliaType		contained "\%(' . s:idregex . '\.\)*\zs' . s:idregex . '"'145 146" This is a generic identifier followed by some symbol, either a type147" operator (<: or >:), or an open parenthesis, or an open curly bracket.148" It's used to recognize one of the contained regions looking for identifiers149" only once. Once recognized, those regions no longer need to use the150" expensive s:idregex.151exec 'syntax match   juliaIdSymbol	transparent "' . s:idregex . '\%(\s*[<>]:\|\.\?(\|{\|\"\)\@=" contains=juliaFunctionCall,juliaParamType,juliaStringPrefixed,juliaTypeOperatorR1'152 153syntax match  juliaFunctionCall		contained "[^{([:space:]<>\"]\+(\@=" nextgroup=juliaParBlock154 155exec 'syntax match   juliaFunctionDef	contained transparent "\%(\<\%(function\|macro\)\)\@'.s:d(8).'<=\s\+\zs' . s:idregex . '\%(\.' . s:idregex . '\)*\ze\s*\%((\|\send\>\|$\)" contains=juliaFunctionName'156exec 'syntax match   juliaFunctionName	contained "\%(\<\%(function\|macro\)\s\+\)\@'.s:d(20).'<=\%(' . s:idregex . '\.\)*\zs' . s:idregex . '"'157 158exec 'syntax match   juliaStructR	contained transparent "\%(\<\%(\%(mutable\s\+\)\?struct\|\%(abstract\|primitive\)\s\+type\)\s\+\)\@'.s:d(20).'<=\%(' . s:idregex . '\.\)*' . s:idregex . '\>\(\s*(\)\@!" contains=juliaType'159 160syntax match   juliaKeyword		display "\<\%(return\|local\|global\|const\)\>"161syntax match   juliaInfixKeyword	display "\%(=\s*\)\@<!\<\%(in\|isa\)\>\S\@!\%(\s*=\)\@!"162 163" The import/export/using/public keywords introduce a sort of special parsing164" environment with its own rules165exec 'syntax region  juliaImportLine		matchgroup=juliaKeyword excludenl start="\<\%(import\|using\|export\|public\)\>" skip="\%(\%(\<\%(import\|using\|export\|public\)\>\)\|^\)\@'.s:d(6).'<=$" end="$" end="\%([])}]\)\@=" contains=@juliaExpressions,juliaAsKeyword,@juliaContinuationItems,juliaMacroName'166syntax match   juliaAsKeyword		display contained "\<as\>"167 168syntax match   juliaRepKeyword		display "\<\%(break\|continue\)\>"169syntax region  juliaConditionalBlock	matchgroup=juliaConditional start="\<if\>" end="\<end\>" contains=@juliaExpressions,juliaConditionalEIBlock,juliaConditionalEBlock fold170syntax region  juliaConditionalEIBlock	matchgroup=juliaConditional transparent contained start="\<elseif\>" end="\<\%(end\|else\|elseif\)\>"me=s-1 contains=@juliaExpressions,juliaConditionalEIBlock,juliaConditionalEBlock171syntax region  juliaConditionalEBlock	matchgroup=juliaConditional transparent contained start="\<else\>" end="\<end\>"me=s-1 contains=@juliaExpressions172syntax region  juliaWhileBlock		matchgroup=juliaRepeat start="\<while\>" end="\<end\>" contains=@juliaExpressions fold173syntax region  juliaForBlock		matchgroup=juliaRepeat start="\<for\>" end="\<end\>" contains=@juliaExpressions,juliaOuter fold174syntax region  juliaBeginBlock		matchgroup=juliaBlKeyword start="\<begin\>" end="\<end\>" contains=@juliaExpressions fold175syntax region  juliaFunctionBlock	matchgroup=juliaBlKeyword start="\<function\>" end="\<end\>" contains=@juliaExpressions,juliaFunctionDef fold176syntax region  juliaMacroBlock		matchgroup=juliaBlKeyword start="\<macro\>" end="\<end\>" contains=@juliaExpressions,juliaFunctionDef fold177syntax region  juliaQuoteBlock		matchgroup=juliaBlKeyword start="\<quote\>" end="\<end\>" contains=@juliaExpressions fold178syntax region  juliaStructBlock		matchgroup=juliaBlKeyword start="\<struct\>" end="\<end\>" contains=@juliaExpressions,juliaStructR fold179syntax region  juliaMutableStructBlock	matchgroup=juliaBlKeyword start="\<mutable\s\+struct\>" end="\<end\>" contains=@juliaExpressions,juliaStructR fold180syntax region  juliaLetBlock		matchgroup=juliaBlKeyword start="\<let\>" end="\<end\>" contains=@juliaExpressions fold181syntax region  juliaDoBlock		matchgroup=juliaBlKeyword start="\<do\>" end="\<end\>" contains=@juliaExpressions fold182syntax region  juliaModuleBlock		matchgroup=juliaBlKeyword start="\<\%(bare\)\?module\>" end="\<end\>" contains=@juliaExpressions fold183syntax region  juliaExceptionBlock	matchgroup=juliaException start="\<try\>" end="\<end\>" contains=@juliaExpressions,juliaCatchBlock,juliaFinallyBlock fold184syntax region  juliaCatchBlock		matchgroup=juliaException transparent contained start="\<catch\>" end="\<end\>"me=s-1 contains=@juliaExpressions,juliaTryElseBlock,juliaFinallyBlock185syntax region  juliaTryElseBlock	matchgroup=juliaException transparent contained start="\<else\>" end="\<end\>"me=s-1 contains=@juliaExpressions,juliaFinallyBlock186syntax region  juliaFinallyBlock	matchgroup=juliaException transparent contained start="\<finally\>" end="\<end\>"me=s-1 contains=@juliaExpressions,juliaCatchBlock187syntax region  juliaAbstractBlock	matchgroup=juliaBlKeyword start="\<abstract\s\+type\>" end="\<end\>" fold contains=@juliaExpressions,juliaStructR188syntax region  juliaPrimitiveBlock	matchgroup=juliaBlKeyword start="\<primitive\s\+type\>" end="\<end\>" fold contains=@juliaExpressions,juliaStructR189 190exec 'syntax region  juliaComprehensionFor	matchgroup=juliaComprehensionFor transparent contained start="\%([^[:space:],;:({[]\_s*\)\@'.s:d(80).'<=\<for\>" end="\ze[]);]" contains=@juliaExpressions,juliaComprehensionIf,juliaComprehensionFor'191syntax match   juliaComprehensionIf	contained "\<if\>"192 193exec 'syntax match   juliaOuter		contained "\<outer\ze\s\+' . s:idregex . '\>"'194 195syntax match   juliaRangeKeyword	contained "\<\%(begin\|end\)\>"196 197syntax match   juliaBaseTypeBasic	display "\<\%(\%(N\|Named\)\?Tuple\|Symbol\|Function\|Union\%(All\)\?\|Type\%(Name\|Var\)\?\|Any\|ANY\|Vararg\|Ptr\|Exception\|Module\|Expr\|DataType\|\%(LineNumber\|Quote\)Node\|\%(Weak\|Global\)\?Ref\|Method\|Pair\|Val\|Nothing\|Some\|Missing\)\>"198syntax match   juliaBaseTypeNum		display "\<\%(U\?Int\%(8\|16\|32\|64\|128\)\?\|Float\%(16\|32\|64\)\|Complex\|Bool\|Char\|Number\|Signed\|Unsigned\|Integer\|AbstractFloat\|Real\|Rational\|\%(Abstract\)\?Irrational\|Enum\|BigInt\|BigFloat\|MathConst\|ComplexF\%(16\|32\|64\)\)\>"199syntax match   juliaBaseTypeC		display "\<\%(FileOffset\|C\%(u\?\%(char\|short\|int\|long\(long\)\?\|w\?string\)\|float\|double\|\%(ptrdiff\|s\?size\|wchar\|off\|u\?intmax\)_t\|void\)\)\>"200syntax match   juliaBaseTypeError	display "\<\%(\%(Bounds\|Divide\|Domain\|\%(Stack\)\?Overflow\|EOF\|Undef\%(Ref\|Var\)\|System\|Type\|Parse\|Argument\|Key\|Load\|Method\|Inexact\|OutOfMemory\|Init\|Assertion\|ReadOnlyMemory\|StringIndex\)Error\|\%(Interrupt\|Error\|ProcessExited\|Captured\|Composite\|InvalidState\|Missing\|\%(Process\|Task\)Failed\)Exception\|DimensionMismatch\|SegmentationFault\)\>"201syntax match   juliaBaseTypeIter	display "\<\%(EachLine\|Enumerate\|Cartesian\%(Index\|Range\)\|LinSpace\|CartesianIndices\)\>"202syntax match   juliaBaseTypeString	display "\<\%(DirectIndex\|Sub\|Rep\|Rev\|Abstract\|Substitution\)\?String\>"203syntax match   juliaBaseTypeArray	display "\<\%(\%(Sub\)\?Array\|\%(Abstract\|Dense\|Strided\)\?\%(Array\|Matrix\|Vec\%(tor\|OrMat\)\)\|SparseMatrixCSC\|\%(AbstractSparse\|Bit\|Shared\)\%(Array\|Vector\|Matrix\)\|\%\(D\|Bid\|\%(Sym\)\?Trid\)iagonal\|Hermitian\|Symmetric\|UniformScaling\|\%(Lower\|Upper\)Triangular\|\%(Sparse\|Row\)Vector\|VecElement\|Conj\%(Array\|Matrix\|Vector\)\|Index\%(Cartesian\|Linear\|Style\)\|PermutedDimsArray\|Broadcasted\|Adjoint\|Transpose\|LinearIndices\)\>"204syntax match   juliaBaseTypeDict	display "\<\%(WeakKey\|Id\|Abstract\)\?Dict\>"205syntax match   juliaBaseTypeSet		display "\<\%(\%(Abstract\|Bit\)\?Set\)\>"206syntax match   juliaBaseTypeIO		display "\<\%(IO\%(Stream\|Buffer\|Context\)\?\|RawFD\|StatStruct\|FileMonitor\|PollingFileWatcher\|Timer\|Base64\%(Decode\|Encode\)Pipe\|\%(UDP\|TCP\)Socket\|\%(Abstract\)\?Channel\|BufferStream\|ReentrantLock\|GenericIOBuffer\)\>"207syntax match   juliaBaseTypeProcess	display "\<\%(Pipe\|Cmd\|PipeBuffer\)\>"208syntax match   juliaBaseTypeRange	display "\<\%(Dims\|RangeIndex\|\%(Abstract\|Lin\|Ordinal\|Step\|\%(Abstract\)\?Unit\)Range\|Colon\|ExponentialBackOff\|StepRangeLen\)\>"209syntax match   juliaBaseTypeRegex	display "\<Regex\%(Match\)\?\>"210syntax match   juliaBaseTypeFact	display "\<\%(Factorization\|BunchKaufman\|\%(Cholesky\|QR\)\%(Pivoted\)\?\|\%(Generalized\)\?\%(Eigen\|SVD\|Schur\)\|Hessenberg\|LDLt\|LQ\|LU\)\>"211syntax match   juliaBaseTypeSort	display "\<\%(Insertion\|\(Partial\)\?Quick\|Merge\)Sort\>"212syntax match   juliaBaseTypeRound	display "\<Round\%(ingMode\|FromZero\|Down\|Nearest\%(Ties\%(Away\|Up\)\)\?\|ToZero\|Up\)\>"213syntax match   juliaBaseTypeSpecial	display "\<\%(LocalProcess\|ClusterManager\)\>"214syntax match   juliaBaseTypeRandom	display "\<\%(AbstractRNG\|MersenneTwister\|RandomDevice\)\>"215syntax match   juliaBaseTypeDisplay	display "\<\%(Text\(Display\)\?\|\%(Abstract\)\?Display\|MIME\|HTML\)\>"216syntax match   juliaBaseTypeTime	display "\<\%(Date\%(Time\)\?\|DateFormat\)\>"217syntax match   juliaBaseTypeOther	display "\<\%(RemoteRef\|Task\|Condition\|VersionNumber\|IPv[46]\|SerializationState\|WorkerConfig\|Future\|RemoteChannel\|IPAddr\|Stack\%(Trace\|Frame\)\|\(Caching\|Worker\)Pool\|AbstractSerializer\)\>"218 219syntax match   juliaConstNum		display "\%(\<\%(\%(NaN\|Inf\)\%(16\|32\|64\)\?\|pi\|π\)\>\)"220" Note: recognition of ℯ, which Vim does not consider a valid identifier, is221" complicated. We detect possible uses by just looking for the character (for222" performance) and then check that it's actually used by its own.223" (This also tries to detect preceding number constants; it does so in a crude224" way.)225syntax match   juliaPossibleEuler	"ℯ" contains=juliaEuler226exec 'syntax match   juliaEuler		contained "\%(\%(^\|[' . s:nonidS_chars . s:op_chars_wc . ']\)\%(.\?[0-9][.0-9eEf_]*\d\)\?\)\@'.s:d(80).'<=ℯ\ze[' . s:nonidS_chars . s:op_chars_wc . ']"'227syntax match   juliaConstBool		display "\<\%(true\|false\)\>"228syntax match   juliaConstEnv		display "\<\%(ARGS\|ENV\|ENDIAN_BOM\|LOAD_PATH\|VERSION\|PROGRAM_FILE\|DEPOT_PATH\)\>"229syntax match   juliaConstIO		display "\<\%(std\%(out\|in\|err\)\|devnull\)\>"230syntax match   juliaConstC		display "\<\%(C_NULL\)\>"231syntax match   juliaConstGeneric	display "\<\%(nothing\|Main\|undef\|missing\)\>"232 233syntax match   juliaParamType		contained "[^{([:space:]<>\"]\+\ze{" nextgroup=juliaCurBraBlock234 235syntax match   juliaPossibleMacro	transparent "@" contains=juliaMacroCall,juliaMacroCallP,juliaPrintfMacro,juliaDocMacro,juliaDocMacroPre236 237exec 'syntax match   juliaMacro		contained "@' . s:idregex . '\%(\.' . s:idregex . '\)*"'238syntax match   juliaMacro		contained "@[!.~$%^*/\\|<>+-]\ze[^0-9]"239exec 'syntax region  juliaMacroCall	contained transparent start="\(@' . s:idregex . '\%(\.' . s:idregex . '\)*\)\@=\1\%([^(]\|$\)" end="\ze\%([])};#]\|$\|\<for\>\|\<end\>\)" contains=@juliaExpressions,juliaMacro,juliaSymbolS,juliaQuotedParBlockS'240exec 'syntax region  juliaMacroCall	contained transparent start="\(@.\)\@=\1\%([^(]\|$\)" end="\ze\%([])};#]\|$\|\<for\>\|\<end\>\)" contains=@juliaExpressions,juliaMacro,juliaSymbolS,juliaQuotedParBlockS'241exec 'syntax region  juliaMacroCallP	contained transparent start="@' . s:idregex . '\%(\.' . s:idregex . '\)*(" end=")\@'.s:d(1).'<=" contains=juliaMacro,juliaParBlock'242exec 'syntax region  juliaMacroCallP	contained transparent start="@.(" end=")\@'.s:d(1).'<=" contains=juliaMacro,juliaParBlock'243 244exec 'syntax match   juliaNumbers	transparent "\%(^\|[' . s:nonidS_chars . s:op_chars_wc . ']\)\@'.s:d(1).'<=\d\|\.\d\|im\>" contains=juliaNumber,juliaFloat,juliaComplexUnit'245 246"integer regexes247let s:dec_regex = '\d\%(_\?\d\)*\%(\>\|im\>\|\ze\D\)'248let s:hex_regex = '0x\x\%(_\?\x\)*\%(\>\|im\>\|\ze\X\)'249let s:bin_regex = '0b[01]\%(_\?[01]\)*\%(\>\|im\>\|\ze[^01]\)'250let s:oct_regex = '0o\o\%(_\?\o\)*\%(\>\|im\>\|\ze\O\)'251 252let s:int_regex = '\%(' . s:hex_regex253      \         . '\|'  . s:bin_regex254      \         . '\|'  . s:oct_regex255      \         . '\|'  . s:dec_regex256      \         . '\)'257 258"floating point regexes259"  starting with a dot, optional exponent260let s:float_regex1 = '\.\d\%(_\?\d\)*\%([eEf][-+]\?\d\+\)\?\%(\>\|im\>\|\ze\D\)'261"  with dot, optional exponent262let s:float_regex2 = '\d\%(_\?\d\)*\.\%(\d\%(_\?\d\)*\)\?\%([eEf][-+]\?\d\+\)\?\%(\>\|im\>\|\ze\D\)'263"  without dot, with exponent264let s:float_regex3 = '\d\%(_\?\d\)*[eEf][-+]\?\d\+\%(\>\|im\>\|\ze\D\)'265 266"hex floating point numbers267"  starting with a dot268let s:hexfloat_regex1 = '0x\.\%\(\x\%(_\?\x\)*\)\?[pP][-+]\?\d\+\%(\>\|im\>\|\ze\X\)'269"  starting with a digit270let s:hexfloat_regex2 = '0x\x\%(_\?\x\)*\%\(\.\%\(\x\%(_\?\x\)*\)\?\)\?[pP][-+]\?\d\+\%(\>\|im\>\|\ze\X\)'271 272let s:float_regex = '\%(' . s:float_regex3273      \           . '\|'  . s:float_regex2274      \           . '\|'  . s:float_regex1275      \           . '\|'  . s:hexfloat_regex2276      \           . '\|'  . s:hexfloat_regex1277      \           . '\)'278 279exec 'syntax match   juliaNumber	contained "' . s:int_regex . '" contains=juliaComplexUnit'280exec 'syntax match   juliaFloat		contained "' . s:float_regex . '" contains=juliaComplexUnit'281syntax match   juliaComplexUnit		display	contained "\<im\>"282 283syntax match   juliaRangeOperator	display ":"284exec 'syntax match   juliaOperator	"' . s:operators . '"'285 286exec 'syntax region  juliaTernaryRegion	matchgroup=juliaTernaryOperator start="\s\zs?\ze\s" skip="\%(:\(:\|[^:[:space:]'."'".'"({[]\+\s*\ze:\)\|\%(?\s*\)\@'.s:d(6).'<=:(\)" end=":" contains=@juliaExpressions,juliaErrorSemicol'287 288let s:interp_dollar = '\([' . s:nonidS_chars . s:op_chars_wc . '!]\|^\)\@'.s:d(1).'<=\$'289 290exec 'syntax match   juliaDollarVar	display contained "' . s:interp_dollar . s:idregex . '"'291exec 'syntax region  juliaDollarPar	matchgroup=juliaDollarVar contained start="' .s:interp_dollar . '(" end=")" contains=@juliaExpressions'292exec 'syntax region  juliaDollarSqBra	matchgroup=juliaDollarVar contained start="' .s:interp_dollar . '\[" end="\]" contains=@juliaExpressions,juliaComprehensionFor,juliaSymbolS,juliaQuotedParBlockS'293 294syntax match   juliaChar		"'\\\?.'" contains=juliaSpecialChar295syntax match   juliaChar		display "'\\\o\{3\}'" contains=juliaOctalEscapeChar296syntax match   juliaChar		display "'\\x\x\{2\}'" contains=juliaHexEscapeChar297syntax match   juliaChar		display "'\\u\x\{1,4\}'" contains=juliaUniCharSmall298syntax match   juliaChar		display "'\\U\x\{1,8\}'" contains=juliaUniCharLarge299 300exec 'syntax match   juliaCTransOperator	"[[:space:]}' . s:nonid_chars . s:op_chars_wc . '!]\@'.s:d(1).'<!\.\?' . "'" . 'ᵀ\?"'301 302" TODO: some of these might be specialized; the rest could be just left to the303"       generic juliaStringPrefixed fallback304syntax region  juliaString		matchgroup=juliaStringDelim start=+\z("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaStringVars,@juliaSpecialChars,@juliaSpellcheckStrings305syntax region  juliaStringPrefixed	contained matchgroup=juliaStringDelim start=+[^{([:space:]<>"]\+\z("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaSpecialCharsRaw306syntax region  juliabString		matchgroup=juliaStringDelim start=+\<b\z("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaSpecialChars307syntax region  juliasString		matchgroup=juliaStringDelim start=+\<s\z("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaSpecialChars308 309syntax region  juliaDocString		matchgroup=juliaDocStringDelim fold start=+^"""+ skip=+\%(\\\\\)*\\"+ end=+"""+ contains=@juliaStringVars,@juliaSpecialChars,@juliaSpellcheckDocStrings310 311exec 'syntax region  juliaPrintfMacro		contained transparent start="@s\?printf(" end=")\@'.s:d(1).'<=" contains=juliaMacro,juliaPrintfParBlock'312syntax region  juliaPrintfMacro		contained transparent start="@s\?printf\s\+" end="\ze\%([])};#]\|$\|\<for\>\)" contains=@juliaExprsPrintf,juliaMacro,juliaSymbolS,juliaQuotedParBlockS313syntax region  juliaPrintfParBlock	contained matchgroup=juliaParDelim start="(" end=")" contains=@juliaExprsPrintf314syntax region  juliaPrintfString	contained matchgroup=juliaStringDelim start=+"+ skip=+\%(\\\\\)*\\"+ end=+"+ contains=@juliaSpecialChars,@juliaPrintfChars315 316exec 'syntax region  juliaDocMacroPre	contained transparent start=+@doc\s\+\%(' . s:idregex . '\%(\.' . s:idregex . '\)*\)\z("\%(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\(\z1\)\@'.s:d(3).'<=+ contains=juliaMacro,juliaDocStringMRaw'317exec 'syntax region  juliaDocMacro	contained transparent start=+@doc\s\+\z("\%(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\(\z1\)\@'.s:d(3).'<=+ contains=juliaMacro,juliaDocStringM'318syntax region  juliaDocStringMRaw	contained fold matchgroup=juliaDocStringDelim fold start=+\z\("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaSpellcheckDocStrings319syntax region  juliaDocStringM		contained fold matchgroup=juliaDocStringDelim fold start=+\z\("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaStringVars,@juliaSpecialChars,@juliaSpellcheckDocStrings320 321syntax region  juliaShellString		matchgroup=juliaStringDelim start=+`+ skip=+\%(\\\\\)*\\`+ end=+`+ contains=@juliaStringVars,juliaSpecialChar322 323syntax cluster juliaStringVars		contains=juliaStringVarsPar,juliaStringVarsSqBra,juliaStringVarsCurBra,juliaStringVarsPla324syntax region  juliaStringVarsPar	contained matchgroup=juliaStringVarDelim start="$(" end=")" contains=@juliaExpressions325syntax region  juliaStringVarsSqBra	contained matchgroup=juliaStringVarDelim start="$\[" end="\]" contains=@juliaExpressions,juliaComprehensionFor,juliaSymbolS,juliaQuotedParBlockS326syntax region  juliaStringVarsCurBra	contained matchgroup=juliaStringVarDelim start="${" end="}" contains=@juliaExpressions327exec 'syntax match   juliaStringVarsPla	contained "\$' . s:idregex . '"'328 329" TODO improve RegEx330syntax region  juliaRegEx		matchgroup=juliaStringDelim start=+\<r\z("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1[imsx]*+331 332syntax cluster juliaSpecialChars	contains=juliaSpecialChar,juliaDoubleBackslash,juliaEscapedQuote,juliaOctalEscapeChar,juliaHexEscapeChar,juliaUniCharSmall,juliaUniCharLarge333syntax match   juliaSpecialChar		display contained "\\."334syntax match   juliaOctalEscapeChar	display contained "\\\o\{3\}"335syntax match   juliaHexEscapeChar	display contained "\\x\x\{2\}"336syntax match   juliaUniCharSmall	display contained "\\u\x\{1,4\}"337syntax match   juliaUniCharLarge	display contained "\\U\x\{1,8\}"338syntax cluster juliaSpecialCharsRaw	contains=juliaDoubleBackslash,juliaEscapedQuote339syntax match   juliaDoubleBackslash	contained "\\\\"340syntax match   juliaEscapedQuote	contained "\\\""341 342syntax cluster juliaPrintfChars		contains=juliaErrorPrintfFmt,juliaPrintfFmt343syntax match   juliaErrorPrintfFmt	display contained "\\\?%."344syntax match   juliaPrintfFmt		display contained "%\%(\d\+\$\)\=[-+' #0]*\%(\d*\|\*\|\*\d\+\$\)\%(\.\%(\d*\|\*\|\*\d\+\$\)\)\=\%([hlLjqzt]\|ll\|hh\)\=[aAbdiuoxXDOUfFeEgGcCsSpn]"345syntax match   juliaPrintfFmt		display contained "%%"346syntax match   juliaPrintfFmt		display contained "\\%\%(\d\+\$\)\=[-+' #0]*\%(\d*\|\*\|\*\d\+\$\)\%(\.\%(\d*\|\*\|\*\d\+\$\)\)\=\%([hlLjqzt]\|ll\|hh\)\=[aAbdiuoxXDOUfFeEgGcCsSpn]"hs=s+1347syntax match   juliaPrintfFmt		display contained "\\%%"hs=s+1348 349" this is used to restrict the search for Symbols to when colons appear at all350" (for performance reasons)351syntax match   juliaPossibleSymbol	transparent ":\ze[^:]" contains=juliaSymbol,juliaQuotedParBlock,juliaQuotedQMarkPar,juliaColon352 353let s:quotable = '\%(' . s:idregex . '\|' . s:operators . '\|[?.]\|' . s:float_regex . '\|' . s:int_regex . '\)'354let s:quoting_colon = '\%(\%(^\s*\|\s\{6,\}\|[' . s:nonid_chars . s:op_chars_wc . ']\s*\)\@'.s:d(6).'<=\|\%(\<\%(return\|if\|else\%(if\)\?\|while\|try\|begin\)\s\+\)\@'.s:d(9).'<=\)\zs:'355let s:quoting_colonS = '\s\@'.s:d(1).'<=:'356 357" note: juliaSymbolS only works within whitespace-sensitive contexts,358" such as in macro calls without parentheses, or within square brackets.359" It is used to override the recognition of expressions like `a :b` as360" ranges rather than symbols in those contexts.361" (Note that such `a :b` expressions only allows at most 5 spaces between362" the identifier and the colon anyway.)363 364exec 'syntax match   juliaSymbol	contained "' . s:quoting_colon . s:quotable . '"'365exec 'syntax match   juliaSymbolS	contained "' . s:quoting_colonS . s:quotable . '"'366 367" same as above for quoted expressions such as :(expr)368exec 'syntax region   juliaQuotedParBlock	matchgroup=juliaQParDelim start="' . s:quoting_colon . '(" end=")" contains=@juliaExpressions'369exec 'syntax match    juliaQuotedQMarkPar	"' . s:quoting_colon . '(\s*?\s*)" contains=juliaQuotedQMark'370exec 'syntax region   juliaQuotedParBlockS	matchgroup=juliaQParDelim contained start="' . s:quoting_colonS . '(" end=")" contains=@juliaExpressions'371 372 373syntax match   juliaTypeOperatorR1	contained "[^{([:space:]<>\"]\+\%(\s*[<>]:\)\@="374 375" force precedence over Symbols376syntax match   juliaTypeOperator	contained "[<>:]:"377exec 'syntax match   juliaTypeOperatorR2	transparent "[<>:]:\s*\%(' . s:idregex . '\.\)*' . s:idregex . '" contains=juliaTypeOperator,juliaType,juliaDottedT,@juliaExpressions nextgroup=juliaTypeOperator'378syntax match   juliaIsaKeyword		contained "\<isa\>"379exec 'syntax match   juliaTypeOperatorR3	transparent "\<isa\s\+\%(' . s:idregex . '\.\)*' . s:idregex . '" contains=juliaIsaKeyword,juliaType,juliaDottedT,@juliaExpressions nextgroup=juliaIsaKeyword'380 381syntax match   juliaWhereKeyword       	"\<where\>"382exec 'syntax match   juliaWhereR	transparent "\<where\s\+' . s:idregex . '" contains=juliaWhereKeyword,juliaType,juliaDottedT,juliaIdSymbol'383 384syntax region  juliaCommentL		matchgroup=juliaCommentDelim excludenl start="#\ze\%([^=]\|$\)" end="$" contains=juliaTodo,@juliaSpellcheckComments385syntax region  juliaCommentM		matchgroup=juliaCommentDelim fold start="#=\ze\%([^#]\|$\)" end="=#" contains=juliaTodo,juliaCommentM,@juliaSpellcheckComments386syntax keyword juliaTodo		contained TODO FIXME XXX387 388" detect an end-of-line with only whitespace or comments before it389let s:eol = '\s*\%(\%(\%(#=\%(=#\@!\|[^=]\|\n\)\{-}=#\)\s*\)\+\)\?\%(#=\@!.*\)\?\n'390 391" a trailing comma, or colon, or an empty line in an import/using/export/public392" multi-line command. Used to recognize the as keyword, and for indentation393" (this needs to take precedence over normal commas and colons, and comments)394syntax cluster juliaContinuationItems	contains=juliaContinuationComma,juliaContinuationColon,juliaContinuationNone395exec 'syntax region  juliaContinuationComma	matchgroup=juliaComma contained start=",\ze'.s:eol.'" end="\n\+\ze." contains=@juliaCommentItems'396exec 'syntax region  juliaContinuationColon	matchgroup=juliaColon contained start=":\ze'.s:eol.'" end="\n\+\ze." contains=@juliaCommentItems'397exec 'syntax region  juliaContinuationNone	matchgroup=NONE contained start="\%(\<\%(import\|using\|export\|public\)\>\|^\)\@'.s:d(6).'<=\ze'.s:eol.'" end="\n\+\ze." contains=@juliaCommentItems,juliaAsKeyword'398exec 'syntax match   juliaMacroName		contained "@' . s:idregex . '\%(\.' . s:idregex . '\)*"'399 400" the following are disabled by default, but401" can be enabled by entering e.g.402"   :hi link juliaParDelim Delimiter403hi def link juliaParDelim		juliaNone404hi def link juliaSemicolon		juliaNone405hi def link juliaComma			juliaNone406hi def link juliaFunctionCall		juliaNone407 408hi def link juliaColon			juliaOperator409 410hi def link juliaFunctionName		juliaFunction411hi def link juliaFunctionName1		juliaFunction412hi def link juliaMacroName		juliaMacro413 414 415hi def link juliaKeyword		Keyword416hi def link juliaWhereKeyword		Keyword417hi def link juliaInfixKeyword		Keyword418hi def link juliaIsaKeyword		Keyword419hi def link juliaAsKeyword		Keyword420hi def link juliaRepKeyword		Keyword421hi def link juliaBlKeyword		Keyword422hi def link juliaConditional		Conditional423hi def link juliaRepeat			Repeat424hi def link juliaException		Exception425hi def link juliaOuter			Keyword426hi def link juliaBaseTypeBasic		Type427hi def link juliaBaseTypeNum		Type428hi def link juliaBaseTypeC		Type429hi def link juliaBaseTypeError		Type430hi def link juliaBaseTypeIter		Type431hi def link juliaBaseTypeString		Type432hi def link juliaBaseTypeArray		Type433hi def link juliaBaseTypeDict		Type434hi def link juliaBaseTypeSet		Type435hi def link juliaBaseTypeIO		Type436hi def link juliaBaseTypeProcess	Type437hi def link juliaBaseTypeRange		Type438hi def link juliaBaseTypeRegex		Type439hi def link juliaBaseTypeFact		Type440hi def link juliaBaseTypeSort		Type441hi def link juliaBaseTypeRound		Type442hi def link juliaBaseTypeSpecial	Type443hi def link juliaBaseTypeRandom		Type444hi def link juliaBaseTypeDisplay	Type445hi def link juliaBaseTypeTime		Type446hi def link juliaBaseTypeOther		Type447 448hi def link juliaType			Type449hi def link juliaParamType		Type450hi def link juliaTypeOperatorR1		Type451 452" NOTE: deprecated constants are not highlighted as such. For once,453" one can still legitimately use them by importing Base.MathConstants.454" Plus, one-letter variables like `e` and `γ` can be used with other455" meanings.456hi def link juliaConstNum		Constant457hi def link juliaEuler			Constant458 459hi def link juliaConstEnv		Constant460hi def link juliaConstC			Constant461hi def link juliaConstLimits		Constant462hi def link juliaConstGeneric		Constant463hi def link juliaRangeKeyword		Constant464hi def link juliaConstBool		Boolean465hi def link juliaConstIO		Boolean466 467hi def link juliaComprehensionFor	Keyword468hi def link juliaComprehensionIf	Keyword469 470hi def link juliaDollarVar		Identifier471 472hi def link juliaFunction		Function473hi def link juliaMacro			Macro474hi def link juliaSymbol			Identifier475hi def link juliaSymbolS		Identifier476hi def link juliaQParDelim		Identifier477hi def link juliaQuotedQMarkPar		Identifier478hi def link juliaQuotedQMark		juliaOperatorHL479 480hi def link juliaNumber			Number481hi def link juliaFloat			Float482hi def link juliaComplexUnit		Constant483 484hi def link juliaChar			Character485 486hi def link juliaString			String487hi def link juliaStringPrefixed		juliaString488hi def link juliabString		juliaString489hi def link juliasString		juliaString490hi def link juliavString		juliaString491hi def link juliarString		juliaString492hi def link juliaipString		juliaString493hi def link juliabigString		juliaString494hi def link juliaMIMEString		juliaString495hi def link juliarawString		juliaString496hi def link juliatestString		juliaString497hi def link juliahtmlString		juliaString498hi def link juliaint128String		juliaString499hi def link juliaPrintfString		juliaString500hi def link juliaShellString		juliaString501hi def link juliaDocString		juliaString502hi def link juliaDocStringM		juliaDocString503hi def link juliaDocStringMRaw		juliaDocString504hi def link juliaStringDelim		juliaString505hi def link juliaDocStringDelim		juliaDocString506hi def link juliaStringVarsPla		Identifier507hi def link juliaStringVarDelim		Identifier508 509hi def link juliaRegEx			String510 511hi def link juliaSpecialChar		SpecialChar512hi def link juliaOctalEscapeChar	SpecialChar513hi def link juliaHexEscapeChar		SpecialChar514hi def link juliaUniCharSmall		SpecialChar515hi def link juliaUniCharLarge		SpecialChar516hi def link juliaDoubleBackslash	SpecialChar517hi def link juliaEscapedQuote		SpecialChar518 519hi def link juliaPrintfFmt		SpecialChar520 521if s:julia_highlight_operators522  hi! def link juliaOperatorHL		Operator523else524  hi! def link juliaOperatorHL		juliaNone525endif526hi def link juliaOperator		juliaOperatorHL527hi def link juliaRangeOperator		juliaOperatorHL528hi def link juliaCTransOperator		juliaOperatorHL529hi def link juliaTernaryOperator	juliaOperatorHL530hi def link juliaTypeOperator		juliaOperatorHL531 532hi def link juliaCommentL		Comment533hi def link juliaCommentM		Comment534hi def link juliaCommentDelim		Comment535hi def link juliaTodo			Todo536 537hi def link juliaErrorPar		juliaError538hi def link juliaErrorEnd		juliaError539hi def link juliaErrorElse		juliaError540hi def link juliaErrorCatch		juliaError541hi def link juliaErrorFinally		juliaError542hi def link juliaErrorSemicol		juliaError543hi def link juliaErrorPrintfFmt		juliaError544 545hi def link juliaError			Error546 547syntax sync fromstart548 549let b:current_syntax = "julia"550 551let &cpo = s:cpo_save552unlet s:cpo_save553 
codekingpro/portable-devtools · Team Ai