mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-08 11:33:52 -05:00
Change powershell provider to PProvost, closes #177
This commit is contained in:
@@ -10,6 +10,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'powershell') ==
|
||||
" The following settings are available for tuning syntax highlighting:
|
||||
" let ps1_nofold_blocks = 1
|
||||
" let ps1_nofold_sig = 1
|
||||
" let ps1_nofold_region = 1
|
||||
|
||||
" Compatible VIM syntax file start
|
||||
if version < 600
|
||||
@@ -18,6 +19,9 @@ elseif exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
" Operators contain dashes
|
||||
setlocal iskeyword+=-
|
||||
|
||||
" PowerShell doesn't care about case
|
||||
syn case ignore
|
||||
|
||||
@@ -25,7 +29,7 @@ syn case ignore
|
||||
syn sync minlines=100
|
||||
|
||||
" Certain tokens can't appear at the top level of the document
|
||||
syn cluster ps1NotTop contains=@ps1Comment,ps1CDocParam,ps1Function
|
||||
syn cluster ps1NotTop contains=@ps1Comment,ps1CDocParam,ps1FunctionDeclaration
|
||||
|
||||
" Comments and special comment words
|
||||
syn keyword ps1CommentTodo TODO FIXME XXX TBD HACK NOTE contained
|
||||
@@ -42,10 +46,9 @@ syn match ps1Repeat /\<foreach\>/ nextgroup=ps1Block skipwhite
|
||||
syn match ps1Keyword /\<while\>/ nextgroup=ps1Block skipwhite
|
||||
syn match ps1Keyword /\<where\>/ nextgroup=ps1Block skipwhite
|
||||
|
||||
syn keyword ps1Exception begin process end exit
|
||||
syn keyword ps1Exception begin process end exit inlinescript parallel sequence
|
||||
syn keyword ps1Keyword try catch finally throw
|
||||
syn keyword ps1Keyword return filter in trap param data dynamicparam
|
||||
syn match ps1Keyword /&/
|
||||
syn keyword ps1Constant $true $false $null
|
||||
syn match ps1Constant +\$?+
|
||||
syn match ps1Constant +\$_+
|
||||
@@ -55,50 +58,70 @@ syn match ps1Constant +\$^+
|
||||
" Keywords reserved for future use
|
||||
syn keyword ps1Keyword class define from using var
|
||||
|
||||
" Functions and Cmdlets
|
||||
syn match ps1Cmdlet /\w\+-\w\+/
|
||||
syn keyword ps1Keyword function nextgroup=ps1Function skipwhite
|
||||
syn keyword ps1Keyword filter nextgroup=ps1Function skipwhite
|
||||
syn match ps1Function /\w\+-*\w*/ contained
|
||||
" Function declarations
|
||||
syn keyword ps1Keyword function nextgroup=ps1FunctionDeclaration skipwhite
|
||||
syn keyword ps1Keyword filter nextgroup=ps1FunctionDeclaration skipwhite
|
||||
syn keyword ps1Keyword workflow nextgroup=ps1FunctionDeclaration skipwhite
|
||||
syn keyword ps1Keyword configuration nextgroup=ps1FunctionDeclaration skipwhite
|
||||
syn keyword ps1Keyword class nextgroup=ps1FunctionDeclaration skipwhite
|
||||
syn keyword ps1Keyword enum nextgroup=ps1FunctionDeclaration skipwhite
|
||||
syn match ps1FunctionDeclaration /\w\+\(-\w\+\)*/ contained
|
||||
|
||||
" Function invocations
|
||||
syn match ps1FunctionInvocation /\w\+\(-\w\+\)\+/
|
||||
|
||||
" Type declarations
|
||||
syn match ps1Type /\[[a-z0-9_:.]\+\(\[\]\)\?\]/
|
||||
syn match ps1StandaloneType /[a-z0-9_.]\+/ contained
|
||||
syn keyword ps1Scope global local private script contained
|
||||
syn match ps1Type /\[[a-z_][a-z0-9_.,\[\]]\+\]/
|
||||
|
||||
" Variables and other user defined items
|
||||
syn match ps1Variable /\$\w\+/
|
||||
syn match ps1Variable /\${\w\+:\\\w\+}/
|
||||
syn match ps1ScopedVariable /\$\w\+:\w\+/ contains=ps1Scope
|
||||
syn match ps1VariableName /\w\+/ contained
|
||||
" Variable references
|
||||
syn match ps1ScopeModifier /\(global:\|local:\|private:\|script:\)/ contained
|
||||
syn match ps1Variable /\$\w\+\(:\w\+\)\?/ contains=ps1ScopeModifier
|
||||
syn match ps1Variable /\${\w\+\(:\w\+\)\?}/ contains=ps1ScopeModifier
|
||||
|
||||
" Operators all start w/ dash
|
||||
syn match ps1OperatorStart /-c\?/ nextgroup=ps1Operator
|
||||
syn keyword ps1Operator eq ne ge gt lt le like notlike match notmatch replace split /contains/ notcontains contained
|
||||
syn keyword ps1Operator ieq ine ige igt ile ilt ilike inotlike imatch inotmatch ireplace isplit icontains inotcontains contained
|
||||
syn keyword ps1Operator ceq cne cge cgt clt cle clike cnotlike cmatch cnotmatch creplace csplit ccontains cnotcontains contained
|
||||
syn keyword ps1Operator is isnot as join contained
|
||||
syn keyword ps1Operator and or not xor band bor bnot bxor contained
|
||||
syn keyword ps1Operator f contained
|
||||
" Operators
|
||||
syn keyword ps1Operator -eq -ne -ge -gt -lt -le -like -notlike -match -notmatch -replace -split -contains -notcontains
|
||||
syn keyword ps1Operator -ieq -ine -ige -igt -ile -ilt -ilike -inotlike -imatch -inotmatch -ireplace -isplit -icontains -inotcontains
|
||||
syn keyword ps1Operator -ceq -cne -cge -cgt -clt -cle -clike -cnotlike -cmatch -cnotmatch -creplace -csplit -ccontains -cnotcontains
|
||||
syn keyword ps1Operator -in -notin
|
||||
syn keyword ps1Operator -is -isnot -as -join
|
||||
syn keyword ps1Operator -and -or -not -xor -band -bor -bnot -bxor
|
||||
syn keyword ps1Operator -f
|
||||
syn match ps1Operator /!/
|
||||
syn match ps1Operator /=/
|
||||
syn match ps1Operator /+=/
|
||||
syn match ps1Operator /-=/
|
||||
syn match ps1Operator /\*=/
|
||||
syn match ps1Operator /\/=/
|
||||
syn match ps1Operator /%=/
|
||||
syn match ps1Operator /+/
|
||||
syn match ps1Operator /-\(\s\|\d\|\.\|\$\|(\)\@=/
|
||||
syn match ps1Operator /\*/
|
||||
syn match ps1Operator /\//
|
||||
syn match ps1Operator /|/
|
||||
syn match ps1Operator /%/
|
||||
syn match ps1Operator /&/
|
||||
syn match ps1Operator /::/
|
||||
syn match ps1Operator /,/
|
||||
syn match ps1Operator /\(^\|\s\)\@<=\. \@=/
|
||||
|
||||
" Regular Strings
|
||||
" These aren't precisely correct and could use some work
|
||||
syn region ps1String start=/"/ skip=/`"/ end=/"/ contains=@ps1StringSpecial
|
||||
syn region ps1String start=/"/ skip=/`"/ end=/"/ contains=@ps1StringSpecial,@Spell
|
||||
syn region ps1String start=/'/ skip=/''/ end=/'/
|
||||
|
||||
" Here-Strings
|
||||
syn region ps1String start=/@"$/ end=/^"@/ contains=@ps1StringSpecial
|
||||
syn region ps1String start=/@"$/ end=/^"@/ contains=@ps1StringSpecial,@Spell
|
||||
syn region ps1String start=/@'$/ end=/^'@/
|
||||
|
||||
" Interpolation
|
||||
syn match ps1Escape /`./ contained
|
||||
syn match ps1Escape /`./
|
||||
syn region ps1Interpolation matchgroup=ps1InterpolationDelimiter start="$(" end=")" contained contains=ALLBUT,@ps1NotTop
|
||||
syn region ps1NestedParentheses start="(" skip="\\\\\|\\)" matchgroup=ps1Interpolation end=")" transparent contained
|
||||
syn cluster ps1StringSpecial contains=ps1Escape,ps1Interpolation,ps1Variable,ps1Boolean,ps1Constant,ps1BuiltIn
|
||||
syn cluster ps1StringSpecial contains=ps1Escape,ps1Interpolation,ps1Variable,ps1Boolean,ps1Constant,ps1BuiltIn,@Spell
|
||||
|
||||
" Numbers
|
||||
syn match ps1Number "\<\(0[xX]\x\+\|\d\+\)\([KMGTP][B]\)\=\>"
|
||||
syn match ps1Number "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[dD]\="
|
||||
syn match ps1Number "\(\<\|-\)\@<=\(0[xX]\x\+\|\d\+\)\([KMGTP][B]\)\=\(\>\|-\)\@="
|
||||
syn match ps1Number "\(\(\<\|-\)\@<=\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[dD]\="
|
||||
syn match ps1Number "\<\d\+[eE][-+]\=\d\+[dD]\=\>"
|
||||
syn match ps1Number "\<\d\+\([eE][-+]\=\d\+\)\=[dD]\>"
|
||||
|
||||
@@ -115,6 +138,10 @@ if !exists('g:ps1_nofold_blocks')
|
||||
syn region ps1Block start=/{/ end=/}/ transparent fold
|
||||
endif
|
||||
|
||||
if !exists('g:ps1_nofold_region')
|
||||
syn region ps1Region start=/#region/ end=/#endregion/ transparent fold keepend extend
|
||||
endif
|
||||
|
||||
if !exists('g:ps1_nofold_sig')
|
||||
syn region ps1Signature start=/# SIG # Begin signature block/ end=/# SIG # End signature block/ transparent fold
|
||||
endif
|
||||
@@ -130,23 +157,21 @@ if version >= 508 || !exists("did_ps1_syn_inits")
|
||||
|
||||
HiLink ps1Number Number
|
||||
HiLink ps1Block Block
|
||||
HiLink ps1Region Region
|
||||
HiLink ps1Exception Exception
|
||||
HiLink ps1Constant Constant
|
||||
HiLink ps1String String
|
||||
HiLink ps1Escape SpecialChar
|
||||
HiLink ps1InterpolationDelimiter Delimiter
|
||||
HiLink ps1Conditional Conditional
|
||||
HiLink ps1Function Function
|
||||
HiLink ps1FunctionDeclaration Function
|
||||
HiLink ps1FunctionInvocation Function
|
||||
HiLink ps1Variable Identifier
|
||||
HiLink ps1ScopedVariable Identifier
|
||||
HiLink ps1VariableName Identifier
|
||||
HiLink ps1Boolean Boolean
|
||||
HiLink ps1Constant Constant
|
||||
HiLink ps1BuiltIn StorageClass
|
||||
HiLink ps1Type Type
|
||||
HiLink ps1Scope Type
|
||||
HiLink ps1StandaloneType Type
|
||||
HiLink ps1Number Number
|
||||
HiLink ps1ScopeModifier StorageClass
|
||||
HiLink ps1Comment Comment
|
||||
HiLink ps1CommentTodo Todo
|
||||
HiLink ps1CommentDoc Tag
|
||||
@@ -156,11 +181,9 @@ if version >= 508 || !exists("did_ps1_syn_inits")
|
||||
HiLink ps1RepeatAndCmdlet Repeat
|
||||
HiLink ps1Keyword Keyword
|
||||
HiLink ps1KeywordAndCmdlet Keyword
|
||||
HiLink ps1Cmdlet Statement
|
||||
delcommand HiLink
|
||||
endif
|
||||
|
||||
let b:current_syntax = "ps1"
|
||||
|
||||
|
||||
endif
|
||||
|
||||
Reference in New Issue
Block a user