From ed677c34d55a0e025b7008f29419498a3989cde2 Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Mon, 4 Mar 2019 09:15:44 +0100 Subject: Update --- syntax/julia.vim | 54 +++++++++++++++++++++++++++++------------------------- 1 file changed, 29 insertions(+), 25 deletions(-) (limited to 'syntax/julia.vim') diff --git a/syntax/julia.vim b/syntax/julia.vim index e599647e..5f40db60 100644 --- a/syntax/julia.vim +++ b/syntax/julia.vim @@ -156,37 +156,41 @@ syntax region juliaParBlockInRange matchgroup=juliaParDelim contained start="(" syntax region juliaSqBraBlock matchgroup=juliaParDelim start="\[" end="\]" contains=@juliaExpressions,juliaParBlockInRange,juliaRangeEnd,juliaComprehensionFor,juliaSymbolS,juliaQuotedParBlockS,juliaQuotedQMarkParS syntax region juliaCurBraBlock matchgroup=juliaParDelim start="{" end="}" contains=@juliaExpressions -syntax match juliaKeyword display "\<\%(return\|local\|global\|import\%(all\)\?\|export\|using\|const\|where\)\>" +" This is really ugly. It would be better to mask most keywords when a dot is +" found, introducing some kind of dot-environment +let s:nodot = '\%(\.\)\@'.s:d(1).'1"' syntax match juliaInfixKeyword display "\%(=\s*\)\@\S\@!\%(\s*=\)\@!" -syntax match juliaRepKeyword display "\<\%(break\|continue\)\>" -syntax region juliaConditionalBlock matchgroup=juliaConditional start="\" end="\" contains=@juliaExpressions,juliaConditionalEIBlock,juliaConditionalEBlock fold -syntax region juliaConditionalEIBlock matchgroup=juliaConditional transparent contained start="\" end="\<\%(end\|else\|elseif\)\>"me=s-1 contains=@juliaExpressions,juliaConditionalEIBlock,juliaConditionalEBlock -syntax region juliaConditionalEBlock matchgroup=juliaConditional transparent contained start="\" end="\"me=s-1 contains=@juliaExpressions -syntax region juliaWhileBlock matchgroup=juliaRepeat start="\" end="\" contains=@juliaExpressions fold -syntax region juliaForBlock matchgroup=juliaRepeat start="\" end="\" contains=@juliaExpressions,juliaOuter fold -syntax region juliaBeginBlock matchgroup=juliaBlKeyword start="\" end="\" contains=@juliaExpressions fold -syntax region juliaFunctionBlock matchgroup=juliaBlKeyword start="\" end="\" contains=@juliaExpressions fold -syntax region juliaMacroBlock matchgroup=juliaBlKeyword start="\" end="\" contains=@juliaExpressions fold -syntax region juliaQuoteBlock matchgroup=juliaBlKeyword start="\" end="\" contains=@juliaExpressions fold +exec 'syntax match juliaRepKeyword display "'.s:nodot.'\<\%(break\|continue\)\>"' +exec 'syntax region juliaConditionalBlock matchgroup=juliaConditional start="'.s:nodot.'\" end="'.s:nodot.'\" contains=@juliaExpressions,juliaConditionalEIBlock,juliaConditionalEBlock fold' +exec 'syntax region juliaConditionalEIBlock matchgroup=juliaConditional transparent contained start="'.s:nodot.'\" end="'.s:nodot.'\<\%(end\|else\|elseif\)\>"me=s-1 contains=@juliaExpressions,juliaConditionalEIBlock,juliaConditionalEBlock' +exec 'syntax region juliaConditionalEBlock matchgroup=juliaConditional transparent contained start="'.s:nodot.'\" end="'.s:nodot.'\"me=s-1 contains=@juliaExpressions' +exec 'syntax region juliaWhileBlock matchgroup=juliaRepeat start="'.s:nodot.'\" end="'.s:nodot.'\" contains=@juliaExpressions fold' +exec 'syntax region juliaForBlock matchgroup=juliaRepeat start="'.s:nodot.'\" end="'.s:nodot.'\" contains=@juliaExpressions,juliaOuter fold' +exec 'syntax region juliaBeginBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\" end="'.s:nodot.'\" contains=@juliaExpressions fold' +exec 'syntax region juliaFunctionBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\" end="'.s:nodot.'\" contains=@juliaExpressions fold' +exec 'syntax region juliaMacroBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\" end="'.s:nodot.'\" contains=@juliaExpressions fold' +exec 'syntax region juliaQuoteBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\" end="'.s:nodot.'\" contains=@juliaExpressions fold' if b:julia_syntax_version <= 10 - syntax region juliaTypeBlock matchgroup=juliaBlKeyword06 start="\" end="\" contains=@juliaExpressions fold - syntax region juliaImmutableBlock matchgroup=juliaBlKeyword06 start="\" end="\" contains=@juliaExpressions fold + exec 'syntax region juliaTypeBlock matchgroup=juliaBlKeyword06 start="'.s:nodot.'\" end="'.s:nodot.'\" contains=@juliaExpressions fold' + exec 'syntax region juliaImmutableBlock matchgroup=juliaBlKeyword06 start="'.s:nodot.'\" end="'.s:nodot.'\" contains=@juliaExpressions fold' endif -syntax region juliaStructBlock matchgroup=juliaBlKeyword start="\" end="\" contains=@juliaExpressions fold -syntax region juliaMutableStructBlock matchgroup=juliaBlKeyword start="\" end="\" contains=@juliaExpressions fold -syntax region juliaLetBlock matchgroup=juliaBlKeyword start="\" end="\" contains=@juliaExpressions fold -syntax region juliaDoBlock matchgroup=juliaBlKeyword start="\" end="\" contains=@juliaExpressions fold +exec 'syntax region juliaStructBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\" end="'.s:nodot.'\" contains=@juliaExpressions fold' +exec 'syntax region juliaMutableStructBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\" end="'.s:nodot.'\" contains=@juliaExpressions fold' +exec 'syntax region juliaLetBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\" end="'.s:nodot.'\" contains=@juliaExpressions fold' +exec 'syntax region juliaDoBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\" end="'.s:nodot.'\" contains=@juliaExpressions fold' exec 'syntax region juliaModuleBlock matchgroup=juliaBlKeyword start="\%(\%(\.\s*\)\@'.s:d(6).'" end="\" contains=@juliaExpressions fold' -syntax region juliaExceptionBlock matchgroup=juliaException start="\" end="\" contains=@juliaExpressions,juliaCatchBlock,juliaFinallyBlock fold -syntax region juliaCatchBlock matchgroup=juliaException transparent contained start="\" end="\"me=s-1 contains=@juliaExpressions,juliaFinallyBlock -syntax region juliaFinallyBlock matchgroup=juliaException transparent contained start="\" end="\"me=s-1 contains=@juliaExpressions -syntax match juliaTypedef "\<\%(abstract\|typealias\|bitstype\)\>" +exec 'syntax region juliaExceptionBlock matchgroup=juliaException start="'.s:nodot.'\" end="'.s:nodot.'\" contains=@juliaExpressions,juliaCatchBlock,juliaFinallyBlock fold' +exec 'syntax region juliaCatchBlock matchgroup=juliaException transparent contained start="'.s:nodot.'\" end="'.s:nodot.'\"me=s-1 contains=@juliaExpressions,juliaFinallyBlock' +exec 'syntax region juliaFinallyBlock matchgroup=juliaException transparent contained start="'.s:nodot.'\" end="'.s:nodot.'\"me=s-1 contains=@juliaExpressions' +exec 'syntax match juliaTypedef "'.s:nodot.'\<\%(abstract\|typealias\|bitstype\)\>"' " AbstractBlock needs to come after to take precedence -syntax region juliaAbstractBlock matchgroup=juliaBlKeyword start="\" end="\" fold contains=@juliaExpressions -syntax region juliaPrimitiveBlock matchgroup=juliaBlKeyword start="\" end="\" fold contains=@juliaExpressions +exec 'syntax region juliaAbstractBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\" end="'.s:nodot.'\" fold contains=@juliaExpressions' +exec 'syntax region juliaPrimitiveBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\" end="'.s:nodot.'\" fold contains=@juliaExpressions' exec 'syntax region juliaComprehensionFor matchgroup=juliaComprehensionFor transparent contained start="\%([^[:space:],;:({[]\_s*\)\@'.s:d(80).'<=\" end="\ze[]);]" contains=@juliaExpressions,juliaComprehensionIf,juliaComprehensionFor' -syntax match juliaComprehensionIf contained "\" +exec 'syntax match juliaComprehensionIf contained "'.s:nodot.'\"' exec 'syntax match juliaOuter contained "\"' @@ -219,7 +223,7 @@ syntax match juliaBaseTypeRange display "\<\%(Dims\|RangeIndex\|\%(Ordinal\|St syntax match juliaBaseTypeRange06 display "\" syntax match juliaBaseTypeRange1011 display "\<\(Abstract\|Lin\)Range\>" syntax match juliaBaseTypeRegex display "\" -syntax match juliaBaseTypeFact display "\" +syntax match juliaBaseTypeFact display "\<\%(Factorization\|BunchKaufman\|\%(Cholesky\|QR\)\%(Pivoted\)\?\|\%(Generalized\)\?\%(Eigen\|SVD\|Schur\)\|Hessenberg\|LDLt\|LQ\|LU\)\>" syntax match juliaBaseTypeSort display "\<\%(Insertion\|\(Partial\)\?Quick\|Merge\)Sort\>" syntax match juliaBaseTypeRound display "\" syntax match juliaBaseTypeSpecial display "\<\%(LocalProcess\|ClusterManager\)\>" -- cgit v1.2.3