From 8b3418cab8eb5267b3a5743e4d5fe5f698d48bc8 Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Wed, 27 Sep 2017 19:57:29 +0200 Subject: Update --- syntax/ansible.vim | 66 ++++++++++++++++++++++-- syntax/cpp.vim | 3 +- syntax/dart.vim | 51 ++++++++++++------- syntax/elixir.vim | 28 +++++------ syntax/erlang.vim | 6 +-- syntax/eruby.vim | 4 +- syntax/glsl.vim | 43 +++++++++++----- syntax/go.vim | 137 +++++++++++++++++++++++++++++++++++++------------- syntax/graphql.vim | 9 ++-- syntax/haskell.vim | 4 +- syntax/html.vim | 2 +- syntax/javascript.vim | 50 +++++++++--------- syntax/kotlin.vim | 10 ++-- syntax/mako.vim | 25 ++++++--- syntax/nginx.vim | 6 ++- syntax/php.vim | 33 ++++++++++-- syntax/plantuml.vim | 58 ++++++++++++--------- syntax/purescript.vim | 22 ++++++-- syntax/ruby.vim | 105 ++++++++++++++++++++++---------------- syntax/rust.vim | 19 ++++--- syntax/swift.vim | 8 +-- syntax/terraform.vim | 95 +++++++++++++++++++++++++++++++++- syntax/toml.vim | 2 + syntax/vala.vim | 3 +- syntax/vue.vim | 22 ++++---- 25 files changed, 577 insertions(+), 234 deletions(-) (limited to 'syntax') diff --git a/syntax/ansible.vim b/syntax/ansible.vim index 36167b65..c610c41d 100644 --- a/syntax/ansible.vim +++ b/syntax/ansible.vim @@ -47,6 +47,58 @@ highlight link yamlFlowString NONE " but it does make sense we visualize quotes easily highlight link yamlFlowStringDelimiter Delimiter +fun! s:normal_keywords_highlight(name) + if a:name == 'Comment' + highlight link ansible_normal_keywords Comment + elseif a:name == 'Constant' + highlight link ansible_normal_keywords Constant + elseif a:name == 'Identifier' + highlight link ansible_normal_keywords Identifier + elseif a:name == 'Statement' + highlight link ansible_normal_keywords Statement + elseif a:name == 'PreProc' + highlight link ansible_normal_keywords PreProc + elseif a:name == 'Type' + highlight link ansible_normal_keywords Type + elseif a:name == 'Special' + highlight link ansible_normal_keywords Special + elseif a:name == 'Underlined' + highlight link ansible_normal_keywords Underlined + elseif a:name == 'Ignore' + highlight link ansible_normal_keywords Ignore + elseif a:name == 'Error' + highlight link ansible_normal_keywords Error + elseif a:name == 'Todo' + highlight link ansible_normal_keywords Todo + endif +endfun + +fun! s:with_keywords_highlight(name) + if a:name == 'Comment' + highlight link ansible_with_keywords Comment + elseif a:name == 'Constant' + highlight link ansible_with_keywords Constant + elseif a:name == 'Identifier' + highlight link ansible_with_keywords Identifier + elseif a:name == 'Statement' + highlight link ansible_with_keywords Statement + elseif a:name == 'PreProc' + highlight link ansible_with_keywords PreProc + elseif a:name == 'Type' + highlight link ansible_with_keywords Type + elseif a:name == 'Special' + highlight link ansible_with_keywords Special + elseif a:name == 'Underlined' + highlight link ansible_with_keywords Underlined + elseif a:name == 'Ignore' + highlight link ansible_with_keywords Ignore + elseif a:name == 'Error' + highlight link ansible_with_keywords Error + elseif a:name == 'Todo' + highlight link ansible_with_keywords Todo + endif +endfun + fun! s:attribute_highlight(attributes) if a:attributes =~ 'a' syn match ansible_attributes "\v\w+\=" containedin=yamlPlainScalar @@ -85,11 +137,19 @@ if exists("g:ansible_extra_keywords_highlight") highlight link ansible_extra_special_keywords Statement endif -syn keyword ansible_special_keywords include until retries delay when only_if become become_user block rescue always notify containedin=yamlBlockMappingKey contained -highlight link ansible_special_keywords Statement +syn keyword ansible_normal_keywords include include_tasks import_tasks until retries delay when only_if become become_user block rescue always notify containedin=yamlBlockMappingKey contained +if exists("g:ansible_normal_keywords_highlight") + call s:normal_keywords_highlight(g:ansible_normal_keywords_highlight) +else + highlight link ansible_normal_keywords Statement +endif syn match ansible_with_keywords "\vwith_.+" containedin=yamlBlockMappingKey contained -highlight link ansible_with_keywords Statement +if exists("g:ansible_with_keywords_highlight") + call s:with_keywords_highlight(g:ansible_with_keywords_highlight) +else + highlight link ansible_with_keywords Statement +endif let b:current_syntax = "ansible" diff --git a/syntax/cpp.vim b/syntax/cpp.vim index ff0c7ec2..67e3e5ac 100644 --- a/syntax/cpp.vim +++ b/syntax/cpp.vim @@ -4,7 +4,6 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'c/c++') == -1 " Language: C++ " Current Maintainer: vim-jp (https://github.com/vim-jp/vim-cpp) " Previous Maintainer: Ken Shan -" Last Change: 2016 Oct 28 " quit when a syntax file was already loaded if exists("b:current_syntax") @@ -50,7 +49,7 @@ endif if !exists("cpp_no_cpp14") syn case ignore syn match cppNumber display "\<0b[01]\('\=[01]\+\)*\(u\=l\{0,2}\|ll\=u\)\>" - syn match cppNumber display "\<[1-9]\('\=\d\+\)*\(u\=l\{0,2}\|ll\=u\)\>" + syn match cppNumber display "\<[1-9]\('\=\d\+\)*\(u\=l\{0,2}\|ll\=u\)\>" contains=cFloat syn match cppNumber display "\<0x\x\('\=\x\+\)*\(u\=l\{0,2}\|ll\=u\)\>" syn case match endif diff --git a/syntax/dart.vim b/syntax/dart.vim index 21749b45..460c74a1 100644 --- a/syntax/dart.vim +++ b/syntax/dart.vim @@ -18,6 +18,8 @@ endif " Ensure long multiline strings are highlighted. syntax sync fromstart +syntax case match + " keyword definitions syntax keyword dartConditional if else switch syntax keyword dartRepeat do while for @@ -26,14 +28,14 @@ syntax keyword dartConstant null syntax keyword dartTypedef this super class typedef enum syntax keyword dartOperator new is as in syntax match dartOperator "+=\=\|-=\=\|*=\=\|/=\=\|%=\=\|\~/=\=\|<<=\=\|>>=\=\|[<>]=\=\|===\=\|\!==\=\|&=\=\|\^=\=\||=\=\|||\|&&\|\[\]=\=\|=>\|!\|\~\|?\|:" -syntax keyword dartType void var bool int double num dynamic +syntax keyword dartType void var bool int double num dynamic covariant syntax keyword dartStatement return syntax keyword dartStorageClass static abstract final const factory syntax keyword dartExceptions throw rethrow try on catch finally syntax keyword dartAssert assert syntax keyword dartClassDecl extends with implements syntax keyword dartBranch break continue nextgroup=dartUserLabelRef skipwhite -syntax keyword dartKeyword get set operator call external async await yield sync +syntax keyword dartKeyword get set operator call external async await yield sync native syntax match dartUserLabelRef "\k\+" contained syntax region dartLabelRegion transparent matchgroup=dartLabel start="\" matchgroup=NONE end=":" @@ -47,6 +49,24 @@ syntax match dartLibrary "^\(library\|part of\|part\)\>" syntax match dartMetadata "@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>" +" Numbers +syntax match dartNumber "\<\d\+\(\.\d\+\)\=\>" + +" Core libraries +if !exists('dart_corelib_highlight') || dart_corelib_highlight + syntax keyword dartCoreClasses BidirectionalIterator Comparable DateTime + \ Duration Expando Function Invocation Iterable Iterator List Map Match + \ Object Pattern RegExp RuneIterator Runes Set StackTrace Stopwatch String + \ StringBuffer StringSink Symbol Type + syntax keyword dartCoreTypedefs Comparator + syntax keyword dartCoreExceptions AbstractClassInstantiationError + \ ArgumentError AssertionError CastError ConcurrentModificationError + \ Error Exception FallThroughError FormatException + \ IntegerDivisionByZeroException NoSuchMethodError NullThrownError + \ OutOfMemoryError RangeError RuntimeError StackOverflowError StateError + \ TypeError UnimplementedError UnsupportedError +endif + " Comments syntax keyword dartTodo contained TODO FIXME XXX syntax region dartComment start="/\*" end="\*/" contains=dartComment,dartTodo,dartDocLink,@Spell @@ -55,21 +75,18 @@ syntax match dartLineDocComment "///.*" contains=dartTodo,dartDocLink,@Spell syntax region dartDocLink oneline contained start=+\[+ end=+\]+ " Strings -syntax region dartString start=+\z(["']\)+ end=+\z1+ contains=@Spell,dartInterpolation,dartSpecialChar -syntax region dartRawString start=+r\z(["']\)+ end=+\z1+ contains=@Spell -syntax region dartMultilineString start=+\z("\{3\}\|'\{3\}\)+ end=+\z1+ contains=@Spell,dartInterpolation,dartSpecialChar -syntax region dartRawMultilineString start=+r\z("\{3\}\|'\{3\}\)+ end=+\z1+ contains=@Spell -syntax match dartInterpolation contained "\$\(\w\+\|{[^}]\+}\)" -syntax match dartSpecialChar contained "\\\(u\x\{4\}\|u{\x\+}\|x\x\x\|x{\x\+}\|.\)" - -" Numbers -syntax match dartNumber "\<\d\+\(\.\d\+\)\=\>" - -" TODO(antonm): consider conditional highlighting of corelib classes. -syntax keyword dartCoreClasses BidirectionalIterator Comparable DateTime Duration Expando Function Invocation Iterable Iterator List Map Match Object Pattern RegExp RuneIterator Runes Set StackTrace Stopwatch String StringBuffer StringSink Symbol Type -syntax keyword dartCoreTypedefs Comparator -syntax keyword dartCoreExceptions AbstractClassInstantiationError ArgumentError AssertionError CastError ConcurrentModificationError Error Exception FallThroughError FormatException IntegerDivisionByZeroException NoSuchMethodError NullThrownError OutOfMemoryError RangeError RuntimeError StackOverflowError StateError TypeError UnimplementedError UnsupportedError - +syntax cluster dartRawStringContains contains=@Spell +if exists('dart_html_in_strings') && dart_html_in_strings + syntax include @HTML syntax/html.vim + syntax cluster dartRawStringContains add=@HTML +endif +syntax cluster dartStringContains contains=@dartRawStringContains,dartInterpolation,dartSpecialChar +syntax region dartString oneline start=+\z(["']\)+ end=+\z1+ contains=@dartStringContains keepend +syntax region dartRawString oneline start=+r\z(["']\)+ end=+\z1+ contains=@dartRawStringContains keepend +syntax region dartMultilineString start=+\z("\{3\}\|'\{3\}\)+ end=+\z1+ contains=@dartStringContains +syntax region dartRawMultilineString start=+r\z("\{3\}\|'\{3\}\)+ end=+\z1+ contains=@dartSRawtringContains +syntax match dartInterpolation contained "\$\(\w\+\|{[^}]\+}\)" extend +syntax match dartSpecialChar contained "\\\(u\x\{4\}\|u{\x\+}\|x\x\x\|x{\x\+}\|.\)" extend " The default highlighting. highlight default link dartBranch Conditional diff --git a/syntax/elixir.vim b/syntax/elixir.vim index 8fe0bf11..beb1317d 100644 --- a/syntax/elixir.vim +++ b/syntax/elixir.vim @@ -18,26 +18,27 @@ syn cluster elixirDeclaration contains=elixirFunctionDeclaration,elixirModuleDec syn match elixirComment '#.*' contains=elixirTodo,@Spell syn keyword elixirTodo FIXME NOTE TODO OPTIMIZE XXX HACK contained -syn match elixirId '\<[_a-zA-Z]\w*[!?]\?\>' +syn match elixirId '\<[_a-zA-Z]\w*[!?]\?\>' contains=elixirUnusedVariable,elixirKernelFunction syn match elixirKeyword '\(\.\)\@' syn match elixirKeyword '\(\.\)\@' syn match elixirKeyword '\(\.\)\@' " Kernel functions -syn match elixirKernelFunction contained containedin=elixirGuard '\<\(is_atom\|is_binary\|is_bitstring\|is_boolean\|is_float\|is_function\|is_integer\|is_list\|is_map\|is_nil\|is_number\|is_pid\|is_port\)\>\([ (]\)\@=' -syn match elixirKernelFunction contained containedin=elixirGuard '\<\(is_record\|is_reference\|is_tuple\|is_exception\|abs\|bit_size\|byte_size\|div\|elem\|hd\|length\|map_size\|node\|rem\|round\|tl\|trunc\|tuple_size\)\>\([ (]\)\@=' - -syn match elixirGuard '.*when.*' contains=ALLBUT,@elixirNotTop +syn keyword elixirKernelFunction contained is_atom is_binary is_bitstring is_boolean is_float +syn keyword elixirKernelFunction contained is_function is_integer is_list is_map is_nil +syn keyword elixirKernelFunction contained is_number is_pid is_port is_reference is_tuple +syn keyword elixirKernelFunction contained abs binary_part bit_size byte_size div elem hd length +syn keyword elixirKernelFunction contained map_size node rem round tl trunc tuple_size syn keyword elixirInclude import require alias use syn keyword elixirSelf self " This unfortunately also matches function names in function calls -syn match elixirUnusedVariable contained '\<_\w*\>' +syn match elixirUnusedVariable contained '\v%(^|[^.])@<=<_\w*>' -syn keyword elixirOperator and not or in +syn match elixirOperator '\v\.@' syn match elixirOperator '!==\|!=\|!' syn match elixirOperator '=\~\|===\|==\|=' syn match elixirOperator '<<<\|<<\|<=\|<-\|<' @@ -54,8 +55,6 @@ syn match elixirAtom '\(:\)\@=]\@!\)\?\|<>\|===\ syn match elixirAtom '\(:\)\@\|&&\?\|%\(()\|\[\]\|{}\)\|++\?\|--\?\|||\?\|!\|//\|[%&`/|]\)' syn match elixirAtom "\%([a-zA-Z_]\w*[?!]\?\):\(:\)\@!" -syn match elixirBlockInline "\<\(do\|else\)\>:\@=" - syn match elixirAlias '\([a-z]\)\@:\@!" end="\" contains=ALLBUT,elixirKernelFunction,@elixirNotTop fold syn region elixirAnonymousFunction matchgroup=elixirBlockDefinition start="\" end="\" contains=ALLBUT,elixirKernelFunction,@elixirNotTop fold -syn region elixirArguments start="(" end=")" contained contains=elixirOperator,elixirAtom,elixirPseudoVariable,elixirAlias,elixirBoolean,elixirVariable,elixirUnusedVariable,elixirNumber,elixirDocString,elixirAtomInterpolated,elixirRegex,elixirString,elixirStringDelimiter,elixirRegexDelimiter,elixirInterpolationDelimiter,elixirSigilDelimiter,elixirAnonymousFunction +syn region elixirArguments start="(" end=")" contained contains=elixirOperator,elixirAtom,elixirPseudoVariable,elixirAlias,elixirBoolean,elixirVariable,elixirUnusedVariable,elixirNumber,elixirDocString,elixirAtomInterpolated,elixirRegex,elixirString,elixirStringDelimiter,elixirRegexDelimiter,elixirInterpolationDelimiter,elixirSigil,elixirAnonymousFunction syn match elixirDelimEscape "\\[(<{\[)>}\]/\"'|]" transparent display contained contains=NONE @@ -174,7 +173,6 @@ syn match elixirExUnitMacro "\(^\s*\)\@<=\<\(test\|describe\|setup\|setup_all\| syn match elixirExUnitAssert "\(^\s*\)\@<=\<\(assert\|assert_in_delta\|assert_raise\|assert_receive\|assert_received\|catch_error\)\>" syn match elixirExUnitAssert "\(^\s*\)\@<=\<\(catch_exit\|catch_throw\|flunk\|refute\|refute_in_delta\|refute_receive\|refute_received\)\>" -hi def link elixirBlockInline Keyword hi def link elixirBlockDefinition Keyword hi def link elixirDefine Define hi def link elixirPrivateDefine Define diff --git a/syntax/erlang.vim b/syntax/erlang.vim index c01c0b2f..c6794a01 100644 --- a/syntax/erlang.vim +++ b/syntax/erlang.vim @@ -118,14 +118,14 @@ syn keyword erlangBIF garbage_collect get get_keys group_leader contained syn keyword erlangBIF halt hd integer_to_binary integer_to_list contained syn keyword erlangBIF iolist_to_binary iolist_size is_alive contained syn keyword erlangBIF is_atom is_binary is_bitstring is_boolean contained -syn keyword erlangBIF is_float is_function is_integer is_list contained +syn keyword erlangBIF is_float is_function is_integer is_list is_map contained syn keyword erlangBIF is_number is_pid is_port is_process_alive contained syn keyword erlangBIF is_record is_reference is_tuple length link contained syn keyword erlangBIF list_to_atom list_to_binary contained syn keyword erlangBIF list_to_bitstring list_to_existing_atom contained syn keyword erlangBIF list_to_float list_to_integer list_to_pid contained -syn keyword erlangBIF list_to_tuple load_module make_ref max min contained -syn keyword erlangBIF module_loaded monitor monitor_node node contained +syn keyword erlangBIF list_to_tuple load_module make_ref map_size max contained +syn keyword erlangBIF min module_loaded monitor monitor_node node contained syn keyword erlangBIF nodes now open_port pid_to_list port_close contained syn keyword erlangBIF port_command port_connect pre_loaded contained syn keyword erlangBIF process_flag process_flag process_info contained diff --git a/syntax/eruby.vim b/syntax/eruby.vim index e152e071..75354042 100644 --- a/syntax/eruby.vim +++ b/syntax/eruby.vim @@ -24,7 +24,7 @@ elseif !exists("b:eruby_subtype") && main_syntax == 'eruby' let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$") let b:eruby_subtype = matchstr(s:lines,'eruby_subtype=\zs\w\+') if b:eruby_subtype == '' - let b:eruby_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.erb\|\.eruby\|\.erubis\)\+$','',''),'\.\zs\w\+\%(\ze+\w\+\)\=$') + let b:eruby_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.erb\|\.eruby\|\.erubis\|\.example\)\+$','',''),'\.\zs\w\+\%(\ze+\w\+\)\=$') endif if b:eruby_subtype == 'rhtml' let b:eruby_subtype = 'html' @@ -49,7 +49,7 @@ if !b:eruby_nest_level let b:eruby_nest_level = 1 endif -if exists("b:eruby_subtype") && b:eruby_subtype != '' +if exists("b:eruby_subtype") && b:eruby_subtype != '' && b:eruby_subtype !=? 'eruby' exe "runtime! syntax/".b:eruby_subtype.".vim" unlet! b:current_syntax endif diff --git a/syntax/glsl.vim b/syntax/glsl.vim index e77354bb..73c2afa1 100644 --- a/syntax/glsl.vim +++ b/syntax/glsl.vim @@ -13,7 +13,7 @@ syn keyword glslRepeat for while do syn keyword glslStatement discard return break continue " Comments -syn keyword glslTodo contained TODO FIXME XXX +syn keyword glslTodo contained TODO FIXME XXX NOTE syn region glslCommentL start="//" skip="\\$" end="$" keepend contains=glslTodo,@Spell syn region glslComment matchgroup=glslCommentStart start="/\*" end="\*/" extend contains=glslTodo,@Spell @@ -28,15 +28,15 @@ syn region glslPreProc start="^\s*#\s*\(error\|pragma\|extension\|versi syn keyword glslBoolean true false " Integer Numbers -syn match glslDecimalInt display "\(0\|[1-9]\d*\)[uU]\?" -syn match glslOctalInt display "0\o\+[uU]\?" -syn match glslHexInt display "0[xX]\x\+[uU]\?" +syn match glslDecimalInt display "\<\(0\|[1-9]\d*\)[uU]\?" +syn match glslOctalInt display "\<0\o\+[uU]\?" +syn match glslHexInt display "\<0[xX]\x\+[uU]\?" " Float Numbers -syn match glslFloat display "\d\+\.\([eE][+-]\=\d\+\)\=\(lf\|LF\|f\|F\)\=" -syn match glslFloat display "\.\d\+\([eE][+-]\=\d\+\)\=\(lf\|LF\|f\|F\)\=" -syn match glslFloat display "\d\+[eE][+-]\=\d\+\(lf\|LF\|f\|F\)\=" -syn match glslFloat display "\d\+\.\d\+\([eE][+-]\=\d\+\)\=\(lf\|LF\|f\|F\)\=" +syn match glslFloat display "\<\d\+\.\([eE][+-]\=\d\+\)\=\(lf\|LF\|f\|F\)\=" +syn match glslFloat display "\<\.\d\+\([eE][+-]\=\d\+\)\=\(lf\|LF\|f\|F\)\=" +syn match glslFloat display "\<\d\+[eE][+-]\=\d\+\(lf\|LF\|f\|F\)\=" +syn match glslFloat display "\<\d\+\.\d\+\([eE][+-]\=\d\+\)\=\(lf\|LF\|f\|F\)\=" " Swizzles syn match glslSwizzle display /\.[xyzw]\{1,4\}\>/ @@ -44,10 +44,9 @@ syn match glslSwizzle display /\.[rgba]\{1,4\}\>/ syn match glslSwizzle display /\.[stpq]\{1,4\}\>/ " Structure -syn keyword glslStructure struct +syn keyword glslStructure struct nextgroup=glslIdentifier skipwhite skipempty -" This prevents numbers at ends of identifies from being highlighted as numbers -syn match glslIdentifier display "\I\i*" +syn match glslIdentifier contains=glslIdentifierPrime "\%([a-zA-Z_]\)\%([a-zA-Z0-9_]\)*" display contained " Types syn keyword glslType atomic_uint @@ -171,6 +170,7 @@ syn keyword glslType vec4 syn keyword glslType void " Qualifiers +syn keyword glslQualifier align syn keyword glslQualifier attribute syn keyword glslQualifier binding syn keyword glslQualifier buffer @@ -276,16 +276,22 @@ syn keyword glslQualifier varying syn keyword glslQualifier vertices syn keyword glslQualifier volatile syn keyword glslQualifier writeonly +syn keyword glslQualifier xfb_buffer +syn keyword glslQualifier xfb_stride +syn keyword glslQualifier xfb_offset " Built-in Constants +syn keyword glslBuiltinConstant gl_CullDistance syn keyword glslBuiltinConstant gl_MaxAtomicCounterBindings syn keyword glslBuiltinConstant gl_MaxAtomicCounterBufferSize syn keyword glslBuiltinConstant gl_MaxClipDistances syn keyword glslBuiltinConstant gl_MaxClipPlanes syn keyword glslBuiltinConstant gl_MaxCombinedAtomicCounterBuffers syn keyword glslBuiltinConstant gl_MaxCombinedAtomicCounters +syn keyword glslBuiltinConstant gl_MaxCombinedClipAndCullDistances syn keyword glslBuiltinConstant gl_MaxCombinedImageUniforms syn keyword glslBuiltinConstant gl_MaxCombinedImageUnitsAndFragmentOutputs +syn keyword glslBuiltinConstant gl_MaxCombinedShaderOutputResources syn keyword glslBuiltinConstant gl_MaxCombinedTextureImageUnits syn keyword glslBuiltinConstant gl_MaxComputeAtomicCounterBuffers syn keyword glslBuiltinConstant gl_MaxComputeAtomicCounters @@ -294,6 +300,7 @@ syn keyword glslBuiltinConstant gl_MaxComputeTextureImageUnits syn keyword glslBuiltinConstant gl_MaxComputeUniformComponents syn keyword glslBuiltinConstant gl_MaxComputeWorkGroupCount syn keyword glslBuiltinConstant gl_MaxComputeWorkGroupSize +syn keyword glslBuiltinConstant gl_MaxCullDistances syn keyword glslBuiltinConstant gl_MaxDrawBuffers syn keyword glslBuiltinConstant gl_MaxFragmentAtomicCounterBuffers syn keyword glslBuiltinConstant gl_MaxFragmentAtomicCounters @@ -317,6 +324,7 @@ syn keyword glslBuiltinConstant gl_MaxImageUnits syn keyword glslBuiltinConstant gl_MaxLights syn keyword glslBuiltinConstant gl_MaxPatchVertices syn keyword glslBuiltinConstant gl_MaxProgramTexelOffset +syn keyword glslBuiltinConstant gl_MaxSamples syn keyword glslBuiltinConstant gl_MaxTessControlAtomicCounterBuffers syn keyword glslBuiltinConstant gl_MaxTessControlAtomicCounters syn keyword glslBuiltinConstant gl_MaxTessControlImageUniforms @@ -337,6 +345,8 @@ syn keyword glslBuiltinConstant gl_MaxTessPatchComponents syn keyword glslBuiltinConstant gl_MaxTextureCoords syn keyword glslBuiltinConstant gl_MaxTextureImageUnits syn keyword glslBuiltinConstant gl_MaxTextureUnits +syn keyword glslBuiltinConstant gl_MaxTransformFeedbackBuffers +syn keyword glslBuiltinConstant gl_MaxTransformFeedbackInterleavedComponents syn keyword glslBuiltinConstant gl_MaxVaryingComponents syn keyword glslBuiltinConstant gl_MaxVaryingFloats syn keyword glslBuiltinConstant gl_MaxVaryingVectors @@ -382,6 +392,7 @@ syn keyword glslBuiltinVariable gl_FrontLightProduct syn keyword glslBuiltinVariable gl_FrontMaterial syn keyword glslBuiltinVariable gl_FrontSecondaryColor syn keyword glslBuiltinVariable gl_GlobalInvocationID +syn keyword glslBuiltinVariable gl_HelperInvocation syn keyword glslBuiltinVariable gl_InstanceID syn keyword glslBuiltinVariable gl_InvocationID syn keyword glslBuiltinVariable gl_Layer @@ -483,7 +494,11 @@ syn keyword glslBuiltinFunction cos syn keyword glslBuiltinFunction cosh syn keyword glslBuiltinFunction cross syn keyword glslBuiltinFunction dFdx +syn keyword glslBuiltinFunction dFdxCoarse +syn keyword glslBuiltinFunction dFdxFine syn keyword glslBuiltinFunction dFdy +syn keyword glslBuiltinFunction dFdyCoarse +syn keyword glslBuiltinFunction dFdyFine syn keyword glslBuiltinFunction degrees syn keyword glslBuiltinFunction determinant syn keyword glslBuiltinFunction distance @@ -502,6 +517,8 @@ syn keyword glslBuiltinFunction fract syn keyword glslBuiltinFunction frexp syn keyword glslBuiltinFunction ftransform syn keyword glslBuiltinFunction fwidth +syn keyword glslBuiltinFunction fwidthCoarse +syn keyword glslBuiltinFunction fwidthFine syn keyword glslBuiltinFunction greaterThan syn keyword glslBuiltinFunction greaterThanEqual syn keyword glslBuiltinFunction groupMemoryBarrier @@ -643,13 +660,15 @@ hi def link glslOctalInt glslInteger hi def link glslHexInt glslInteger hi def link glslInteger Number hi def link glslFloat Float +hi def link glslIdentifierPrime glslIdentifier +hi def link glslIdentifier Identifier hi def link glslStructure Structure hi def link glslType Type hi def link glslQualifier StorageClass hi def link glslBuiltinConstant Constant hi def link glslBuiltinFunction Function hi def link glslBuiltinVariable Identifier -hi def link glslSwizzle SpecialChar +hi def link glslSwizzle Identifier if !exists("b:current_syntax") let b:current_syntax = "glsl" diff --git a/syntax/go.vim b/syntax/go.vim index 3ea87319..69c2b011 100644 --- a/syntax/go.vim +++ b/syntax/go.vim @@ -5,36 +5,13 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'go') == -1 " license that can be found in the LICENSE file. " " go.vim: Vim syntax file for Go. -" -" Options: -" There are some options for customizing the highlighting; the recommended -" settings are the default values, but you can write: -" let OPTION_NAME = 0 -" in your ~/.vimrc file to disable particular options. You can also write: -" let OPTION_NAME = 1 -" to enable particular options. At present, all options default to off: -" -" - go_highlight_array_whitespace_error -" Highlights white space after "[]". -" - go_highlight_chan_whitespace_error -" Highlights white space around the communications operator that don't follow -" the standard style. -" - go_highlight_extra_types -" Highlights commonly used library types (io.Reader, etc.). -" - go_highlight_space_tab_error -" Highlights instances of tabs following spaces. -" - go_highlight_trailing_whitespace_error -" Highlights trailing white space. -" - go_highlight_string_spellcheck -" Specifies that strings should be spell checked -" - go_highlight_format_strings -" Highlights printf-style operators inside string literals. " Quit when a (custom) syntax file was already loaded if exists("b:current_syntax") finish endif +" Set settings to default values. if !exists("g:go_highlight_array_whitespace_error") let g:go_highlight_array_whitespace_error = 0 endif @@ -91,12 +68,52 @@ if !exists("g:go_highlight_generate_tags") let g:go_highlight_generate_tags = 0 endif +if !exists("g:go_highlight_variable_assignments") + let g:go_highlight_variable_assignments = 0 +endif + +if !exists("g:go_highlight_variable_declarations") + let g:go_highlight_variable_declarations = 0 +endif + +let s:fold_block = 1 +let s:fold_import = 1 +let s:fold_varconst = 1 +let s:fold_package_comment = 1 +let s:fold_comment = 0 + +if exists("g:go_fold_enable") + " Enabled by default. + if index(g:go_fold_enable, 'block') == -1 + let s:fold_block = 0 + endif + if index(g:go_fold_enable, 'import') == -1 + let s:fold_import = 0 + endif + if index(g:go_fold_enable, 'varconst') == -1 + let s:fold_varconst = 0 + endif + if index(g:go_fold_enable, 'package_comment') == -1 + let s:fold_package_comment = 0 + endif + + " Disabled by default. + if index(g:go_fold_enable, 'comment') > -1 + let s:fold_comment = 1 + endif +endif + syn case match -syn keyword goDirective package import -syn keyword goDeclaration var const +syn keyword goPackage package +syn keyword goImport import contained +syn keyword goVar var contained +syn keyword goConst const contained -hi def link goDirective Statement +hi def link goPackage Statement +hi def link goImport Statement +hi def link goVar Keyword +hi def link goConst Keyword hi def link goDeclaration Keyword " Keywords within functions @@ -137,8 +154,14 @@ hi def link goPredefinedIdentifiers goBoolean " Comments; their contents syn keyword goTodo contained TODO FIXME XXX BUG syn cluster goCommentGroup contains=goTodo -syn region goComment start="/\*" end="\*/" contains=@goCommentGroup,@Spell + syn region goComment start="//" end="$" contains=goGenerate,@goCommentGroup,@Spell +if s:fold_comment + syn region goComment start="/\*" end="\*/" contains=@goCommentGroup,@Spell fold + syn match goComment "\v(^\s*//.*\n)+" contains=goGenerate,@goCommentGroup,@Spell fold +else + syn region goComment start="/\*" end="\*/" contains=@goCommentGroup,@Spell +endif hi def link goComment Comment hi def link goTodo Todo @@ -191,8 +214,35 @@ syn region goCharacter start=+'+ skip=+\\\\\|\\'+ end=+'+ contains= hi def link goCharacter Character " Regions -syn region goBlock start="{" end="}" transparent fold syn region goParen start='(' end=')' transparent +if s:fold_block + syn region goBlock start="{" end="}" transparent fold +else + syn region goBlock start="{" end="}" transparent +endif + +" import +if s:fold_import + syn region goImport start='import (' end=')' transparent fold contains=goImport,goString,goComment +else + syn region goImport start='import (' end=')' transparent contains=goImport,goString,goComment +endif + +" var, const +if s:fold_varconst + syn region goVar start='var (' end='^\s*)$' transparent fold + \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar + syn region goConst start='const (' end='^\s*)$' transparent fold + \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar +else + syn region goVar start='var (' end='^\s*)$' transparent + \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar + syn region goConst start='const (' end='^\s*)$' transparent + \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar +endif + +" Single-line var, const, and import. +syn match goSingleDecl /\(import\|var\|const\) [^(]\@=/ contains=goImport,goVar,goConst " Integers syn match goDecimalInt "\<-\=\d\+\%([Ee][-+]\=\d\+\)\=\>" @@ -323,10 +373,10 @@ hi def link goField Identifier " Structs & Interfaces; if g:go_highlight_types != 0 - syn match goTypeConstructor /\<\w\+{/he=e-1 + syn match goTypeConstructor /\<\w\+{\@=/ syn match goTypeDecl /\/ nextgroup=goTypeName skipwhite skipnl syn match goTypeName /\w\+/ contained nextgroup=goDeclType skipwhite skipnl - syn match goDeclType /\/ skipwhite skipnl + syn match goDeclType /\<\(interface\|struct\)\>/ skipwhite skipnl hi def link goReceiverType Type else syn keyword goDeclType struct interface @@ -337,6 +387,18 @@ hi def link goTypeName Type hi def link goTypeDecl Keyword hi def link goDeclType Keyword +" Variable Assignments +if g:go_highlight_variable_assignments != 0 + syn match goVarAssign /\v[_.[:alnum:]]+(,\s*[_.[:alnum:]]+)*\ze(\s*([-^+|^\/%&]|\*|\<\<|\>\>|\&\^)?\=[^=])/ + hi def link goVarAssign Special +endif + +" Variable Declarations +if g:go_highlight_variable_declarations != 0 + syn match goVarDefs /\v\w+(,\s*\w+)*\ze(\s*:\=)/ + hi def link goVarDefs Special +endif + " Build Constraints if g:go_highlight_build_constraints != 0 syn match goBuildKeyword display contained "+build" @@ -358,15 +420,22 @@ if g:go_highlight_build_constraints != 0 hi def link goBuildCommentStart Comment hi def link goBuildDirectives Type hi def link goBuildKeyword PreProc +endif +if g:go_highlight_build_constraints != 0 || s:fold_package_comment " One or more line comments that are followed immediately by a "package" " declaration are treated like package documentation, so these must be " matched as comments to avoid looking like working build constraints. " The he, me, and re options let the "package" itself be highlighted by " the usual rules. - syn region goPackageComment start=/\v(\/\/.*\n)+\s*package/ - \ end=/\v\n\s*package/he=e-7,me=e-7,re=e-7 - \ contains=@goCommentGroup,@Spell + exe 'syn region goPackageComment start=/\v(\/\/.*\n)+\s*package/' + \ . ' end=/\v\n\s*package/he=e-7,me=e-7,re=e-7' + \ . ' contains=@goCommentGroup,@Spell' + \ . (s:fold_package_comment ? ' fold' : '') + exe 'syn region goPackageComment start=/\v\/\*.*\n(.*\n)*\s*\*\/\npackage/' + \ . ' end=/\v\n\s*package/he=e-7,me=e-7,re=e-7' + \ . ' contains=@goCommentGroup,@Spell' + \ . (s:fold_package_comment ? ' fold' : '') hi def link goPackageComment Comment endif diff --git a/syntax/graphql.vim b/syntax/graphql.vim index 71dc766a..8a7f07c5 100644 --- a/syntax/graphql.vim +++ b/syntax/graphql.vim @@ -4,7 +4,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1 " Language: GraphQL " Maintainer: Jon Parise -if exists("b:current_syntax") +if exists('b:current_syntax') finish endif @@ -20,9 +20,11 @@ syn keyword graphqlNull null syn match graphqlNumber "-\=\<\%(0\|[1-9]\d*\)\%(\.\d\+\)\=\%([eE][-+]\=\d\+\)\=\>" syn region graphqlString start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ +syn keyword graphqlKeyword on nextgroup=graphqlType skipwhite + syn keyword graphqlStructure enum scalar type union nextgroup=graphqlType skipwhite syn keyword graphqlStructure input interface subscription nextgroup=graphqlType skipwhite -syn keyword graphqlStructure implements on nextgroup=graphqlType skipwhite +syn keyword graphqlStructure implements nextgroup=graphqlType skipwhite syn keyword graphqlStructure query mutation fragment nextgroup=graphqlIdentifier skipwhite syn keyword graphqlStructure directive nextgroup=graphqlDirective skipwhite syn keyword graphqlStructure extend nextgroup=graphqlStructure skipwhite @@ -53,12 +55,13 @@ hi def link graphqlConstant Constant hi def link graphqlDirective PreProc hi def link graphqlIdentifier Identifier hi def link graphqlMetaFields Special +hi def link graphqlKeyword Keyword hi def link graphqlStructure Structure hi def link graphqlType Type hi def link graphqlVariable Identifier syn sync minlines=500 -let b:current_syntax = "graphql" +let b:current_syntax = 'graphql' endif diff --git a/syntax/haskell.vim b/syntax/haskell.vim index 1a26d1c0..bd5c02ce 100644 --- a/syntax/haskell.vim +++ b/syntax/haskell.vim @@ -20,14 +20,14 @@ endif syn spell notoplevel syn match haskellRecordField contained containedin=haskellBlock - \ "[_a-z][a-zA-Z0-9_']*\(,\s*[_a-z][a-zA-Z0-9_']*\)*\_s\+::\s" + \ "[_a-z][a-zA-Z0-9_']*\(,\s*[_a-z][a-zA-Z0-9_']*\)*\_s\+::\_s" \ contains= \ haskellIdentifier, \ haskellOperators, \ haskellSeparator, \ haskellParens syn match haskellTypeSig - \ "^\s*\(where\s\+\|let\s\+\|default\s\+\)\?[_a-z][a-zA-Z0-9_']*\(,\s*[_a-z][a-zA-Z0-9_']*\)*\_s\+::\s" + \ "^\s*\(where\s\+\|let\s\+\|default\s\+\)\?[_a-z][a-zA-Z0-9_']*#\?\(,\s*[_a-z][a-zA-Z0-9_']*#\?\)*\_s\+::\_s" \ contains= \ haskellWhere, \ haskellLet, diff --git a/syntax/html.vim b/syntax/html.vim index 9ae35217..e494e404 100644 --- a/syntax/html.vim +++ b/syntax/html.vim @@ -106,7 +106,7 @@ syn keyword htmlArg contained form autocomplete autofocus list min max step syn keyword htmlArg contained formaction autofocus formenctype formmethod formtarget formnovalidate syn keyword htmlArg contained required placeholder pattern " ,
,