Add applescript, closes #133

This commit is contained in:
Adam Stankiewicz 2016-07-26 14:08:59 +02:00
parent cb574b283f
commit 3019afa721
No known key found for this signature in database
GPG Key ID: A62480DCEAC884DF
6 changed files with 539 additions and 0 deletions

View File

@ -25,6 +25,7 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo
## Language packs
- [applescript](https://github.com/vim-scripts/applescript.vim) (syntax)
- [ansible](https://github.com/pearofducks/ansible-vim) (syntax, indent, ftplugin, ftdetect)
- [arduino](https://github.com/sudar/vim-arduino-syntax) (syntax, indent, ftdetect)
- [blade](https://github.com/jwalton512/vim-blade) (syntax, indent, ftplugin, ftdetect)

1
build
View File

@ -99,6 +99,7 @@ EOF
}
PACKS="
applescript:vim-scripts/applescript.vim
ansible:pearofducks/ansible-vim
arduino:sudar/vim-arduino-syntax
blade:jwalton512/vim-blade

View File

@ -90,3 +90,141 @@ if version >= 508 || !exists("did_javascript_syn_inits")
endif
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1
syntax region jsFlowTypeStatement start=/type/ end=/=/ oneline skipwhite skipempty nextgroup=jsFlowTypeObject
syntax region jsFlowDeclareBlock start=/declare/ end=/[;\n]/ oneline contains=jsFlow,jsFlowDeclareKeyword,jsFlowStorageClass
syntax region jsFlow start=/:/ end=/\%(\%([),=;\n]\|{\%(.*}\)\@!\|\%({.*}\)\@<=\s*{\)\@=\|void\)/ contains=@jsFlowCluster oneline skipwhite skipempty nextgroup=jsFuncBlock
syntax region jsFlowReturn contained start=/:/ end=/\%(\S\s*\%({\%(.*}\)\@!\)\@=\|\n\)/ contains=@jsFlowCluster oneline skipwhite skipempty nextgroup=jsFuncBlock keepend
syntax region jsFlowTypeObject contained start=/{/ end=/}/ contains=jsFlowTypeKey skipwhite skipempty nextgroup=jsFunctionBlock extend
syntax match jsFlowTypeKey contained /\<[0-9a-zA-Z_$?]*\>\(\s*:\)\@=/ skipwhite skipempty nextgroup=jsFlowTypeValue
syntax region jsFlowTypeValue contained matchgroup=jsFlowNoise start=/:/ end=/[,}]/ contains=@jsFlowCluster
syntax region jsFlowObject contained matchgroup=jsFlowNoise start=/{/ end=/}/ oneline contains=@jsFlowCluster
syntax region jsFlowArray contained matchgroup=jsFlowNoise start=/\[/ end=/\]/ oneline contains=@jsFlowCluster
syntax region jsFlowArrow contained matchgroup=jsFlowNoise start=/(/ end=/)\s*=>/ oneline contains=@jsFlowCluster
syntax keyword jsFlowDeclareKeyword contained declare
syntax keyword jsFlowType contained boolean number string null void any mixed JSON array function object Array
syntax match jsFlowClassProperty contained /\<[0-9a-zA-Z_$]*\>:\@=/ skipwhite skipempty nextgroup=jsFlow
syntax match jsFlowNoise contained /[:;,<>]/
syntax cluster jsFlowCluster contains=jsFlowType,jsFlowArray,jsFlowObject,jsFlowNoise,jsFlowArrow
syntax keyword jsFlowStorageClass contained const var let
syntax region jsFlowParenRegion contained start=/:\s*(/ end=/)\%(\s*:\)\@=/ oneline contains=@jsFlowCluster skipwhite skipempty nextgroup=jsObjectValue
syntax region jsFlowClass contained matchgroup=jsFlowNoise start=/</ end=/>/ oneline contains=@jsFlowCluster skipwhite skipempty nextgroup=jsClassBlock
if version >= 508 || !exists("did_javascript_syn_inits")
if version < 508
let did_javascript_syn_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink jsFlow PreProc
HiLink jsFlowReturn PreProc
HiLink jsFlowArray PreProc
HiLink jsFlowDeclareBlock PreProc
HiLink jsFlowObject PreProc
HiLink jsFlowParenRegion PreProc
HiLink jsFlowClass PreProc
HiLink jsFlowTypeObject PreProc
HiLink jsFlowTypeKey PreProc
HiLink jsFlowTypeValue PreProc
HiLink jsFlowClassProperty jsClassProperty
HiLink jsFlowType Type
HiLink jsFlowDeclareKeyword Type
HiLink jsFlowNoise Noise
delcommand HiLink
endif
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1
syntax region jsFlowTypeStatement start=/type/ end=/=/ oneline skipwhite skipempty nextgroup=jsFlowTypeObject
syntax region jsFlowDeclareBlock start=/declare/ end=/[;\n]/ oneline contains=jsFlow,jsFlowDeclareKeyword,jsFlowStorageClass
syntax region jsFlow start=/:/ end=/\%(\%([),=;\n]\|{\%(.*}\)\@!\|\%({.*}\)\@<=\s*{\)\@=\|void\)/ contains=@jsFlowCluster oneline skipwhite skipempty nextgroup=jsFuncBlock
syntax region jsFlowReturn contained start=/:/ end=/\%(\S\s*\%({\%(.*}\)\@!\)\@=\|\n\)/ contains=@jsFlowCluster oneline skipwhite skipempty nextgroup=jsFuncBlock keepend
syntax region jsFlowTypeObject contained start=/{/ end=/}/ contains=jsFlowTypeKey skipwhite skipempty nextgroup=jsFunctionBlock extend
syntax match jsFlowTypeKey contained /\<[0-9a-zA-Z_$?]*\>\(\s*:\)\@=/ skipwhite skipempty nextgroup=jsFlowTypeValue
syntax region jsFlowTypeValue contained matchgroup=jsFlowNoise start=/:/ end=/[,}]/ contains=@jsFlowCluster
syntax region jsFlowObject contained matchgroup=jsFlowNoise start=/{/ end=/}/ oneline contains=@jsFlowCluster
syntax region jsFlowArray contained matchgroup=jsFlowNoise start=/\[/ end=/\]/ oneline contains=@jsFlowCluster
syntax region jsFlowArrow contained matchgroup=jsFlowNoise start=/(/ end=/)\s*=>/ oneline contains=@jsFlowCluster
syntax keyword jsFlowDeclareKeyword contained declare
syntax keyword jsFlowType contained boolean number string null void any mixed JSON array function object Array
syntax match jsFlowClassProperty contained /\<[0-9a-zA-Z_$]*\>:\@=/ skipwhite skipempty nextgroup=jsFlow
syntax match jsFlowNoise contained /[:;,<>]/
syntax cluster jsFlowCluster contains=jsFlowType,jsFlowArray,jsFlowObject,jsFlowNoise,jsFlowArrow
syntax keyword jsFlowStorageClass contained const var let
syntax region jsFlowParenRegion contained start=/:\s*(/ end=/)\%(\s*:\)\@=/ oneline contains=@jsFlowCluster skipwhite skipempty nextgroup=jsObjectValue
syntax region jsFlowClass contained matchgroup=jsFlowNoise start=/</ end=/>/ oneline contains=@jsFlowCluster skipwhite skipempty nextgroup=jsClassBlock
if version >= 508 || !exists("did_javascript_syn_inits")
if version < 508
let did_javascript_syn_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink jsFlow PreProc
HiLink jsFlowReturn PreProc
HiLink jsFlowArray PreProc
HiLink jsFlowDeclareBlock PreProc
HiLink jsFlowObject PreProc
HiLink jsFlowParenRegion PreProc
HiLink jsFlowClass PreProc
HiLink jsFlowTypeObject PreProc
HiLink jsFlowTypeKey PreProc
HiLink jsFlowTypeValue PreProc
HiLink jsFlowClassProperty jsClassProperty
HiLink jsFlowType Type
HiLink jsFlowDeclareKeyword Type
HiLink jsFlowNoise Noise
delcommand HiLink
endif
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1
syntax region jsFlowTypeStatement start=/type/ end=/=/ oneline skipwhite skipempty nextgroup=jsFlowTypeObject
syntax region jsFlowDeclareBlock start=/declare/ end=/[;\n]/ oneline contains=jsFlow,jsFlowDeclareKeyword,jsFlowStorageClass
syntax region jsFlow start=/:/ end=/\%(\%([),=;\n]\|{\%(.*}\)\@!\|\%({.*}\)\@<=\s*{\)\@=\|void\)/ contains=@jsFlowCluster oneline skipwhite skipempty nextgroup=jsFuncBlock
syntax region jsFlowReturn contained start=/:/ end=/\%(\S\s*\%({\%(.*}\)\@!\)\@=\|\n\)/ contains=@jsFlowCluster oneline skipwhite skipempty nextgroup=jsFuncBlock keepend
syntax region jsFlowTypeObject contained start=/{/ end=/}/ contains=jsFlowTypeKey skipwhite skipempty nextgroup=jsFunctionBlock extend
syntax match jsFlowTypeKey contained /\<[0-9a-zA-Z_$?]*\>\(\s*:\)\@=/ skipwhite skipempty nextgroup=jsFlowTypeValue
syntax region jsFlowTypeValue contained matchgroup=jsFlowNoise start=/:/ end=/[,}]/ contains=@jsFlowCluster
syntax region jsFlowObject contained matchgroup=jsFlowNoise start=/{/ end=/}/ oneline contains=@jsFlowCluster
syntax region jsFlowArray contained matchgroup=jsFlowNoise start=/\[/ end=/\]/ oneline contains=@jsFlowCluster
syntax region jsFlowArrow contained matchgroup=jsFlowNoise start=/(/ end=/)\s*=>/ oneline contains=@jsFlowCluster
syntax keyword jsFlowDeclareKeyword contained declare
syntax keyword jsFlowType contained boolean number string null void any mixed JSON array function object Array
syntax match jsFlowClassProperty contained /\<[0-9a-zA-Z_$]*\>:\@=/ skipwhite skipempty nextgroup=jsFlow
syntax match jsFlowNoise contained /[:;,<>]/
syntax cluster jsFlowCluster contains=jsFlowType,jsFlowArray,jsFlowObject,jsFlowNoise,jsFlowArrow
syntax keyword jsFlowStorageClass contained const var let
syntax region jsFlowParenRegion contained start=/:\s*(/ end=/)\%(\s*:\)\@=/ oneline contains=@jsFlowCluster skipwhite skipempty nextgroup=jsObjectValue
syntax region jsFlowClass contained matchgroup=jsFlowNoise start=/</ end=/>/ oneline contains=@jsFlowCluster skipwhite skipempty nextgroup=jsClassBlock
if version >= 508 || !exists("did_javascript_syn_inits")
if version < 508
let did_javascript_syn_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink jsFlow PreProc
HiLink jsFlowReturn PreProc
HiLink jsFlowArray PreProc
HiLink jsFlowDeclareBlock PreProc
HiLink jsFlowObject PreProc
HiLink jsFlowParenRegion PreProc
HiLink jsFlowClass PreProc
HiLink jsFlowTypeObject PreProc
HiLink jsFlowTypeKey PreProc
HiLink jsFlowTypeValue PreProc
HiLink jsFlowClassProperty jsClassProperty
HiLink jsFlowType Type
HiLink jsFlowDeclareKeyword Type
HiLink jsFlowNoise Noise
delcommand HiLink
endif
endif

View File

@ -84,3 +84,132 @@ if version >= 508 || !exists("did_javascript_syn_inits")
endif
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1
"" syntax coloring for javadoc comments (HTML)
syntax region jsComment matchgroup=jsComment start="/\*\s*" end="\*/" contains=jsDocTags,jsCommentTodo,jsCvsTag,@jsHtml,@Spell fold
" tags containing a param
syntax match jsDocTags contained "@\(alias\|api\|augments\|borrows\|class\|constructs\|default\|defaultvalue\|emits\|exception\|exports\|extends\|fires\|kind\|link\|listens\|member\|member[oO]f\|mixes\|module\|name\|namespace\|requires\|template\|throws\|var\|variation\|version\)\>" skipwhite nextgroup=jsDocParam
" tags containing type and param
syntax match jsDocTags contained "@\(arg\|argument\|cfg\|param\|property\|prop\)\>" skipwhite nextgroup=jsDocType
" tags containing type but no param
syntax match jsDocTags contained "@\(callback\|define\|enum\|external\|implements\|this\|type\|typedef\|return\|returns\)\>" skipwhite nextgroup=jsDocTypeNoParam
" tags containing references
syntax match jsDocTags contained "@\(lends\|see\|tutorial\)\>" skipwhite nextgroup=jsDocSeeTag
" other tags (no extra syntax)
syntax match jsDocTags contained "@\(abstract\|access\|accessor\|author\|classdesc\|constant\|const\|constructor\|copyright\|deprecated\|desc\|description\|dict\|event\|example\|file\|file[oO]verview\|final\|function\|global\|ignore\|inheritDoc\|inner\|instance\|interface\|license\|localdoc\|method\|mixin\|nosideeffects\|override\|overview\|preserve\|private\|protected\|public\|readonly\|since\|static\|struct\|todo\|summary\|undocumented\|virtual\)\>"
syntax region jsDocType contained matchgroup=jsDocTypeBrackets start="{" end="}" contains=jsDocTypeRecord oneline skipwhite nextgroup=jsDocParam
syntax match jsDocType contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+" skipwhite nextgroup=jsDocParam
syntax region jsDocTypeRecord contained start=/{/ end=/}/ contains=jsDocTypeRecord extend
syntax region jsDocTypeRecord contained start=/\[/ end=/\]/ contains=jsDocTypeRecord extend
syntax region jsDocTypeNoParam contained start="{" end="}" oneline
syntax match jsDocTypeNoParam contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+"
syntax match jsDocParam contained "\%(#\|\$\|-\|'\|\"\|{.\{-}}\|\w\|\.\|:\|\/\|\[.{-}]\|=\)\+"
syntax region jsDocSeeTag contained matchgroup=jsDocSeeTag start="{" end="}" contains=jsDocTags
if version >= 508 || !exists("did_javascript_syn_inits")
if version < 508
let did_javascript_syn_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink jsDocTags Special
HiLink jsDocSeeTag Function
HiLink jsDocType Type
HiLink jsDocTypeBrackets jsDocType
HiLink jsDocTypeRecord jsDocType
HiLink jsDocTypeNoParam Type
HiLink jsDocParam Label
delcommand HiLink
endif
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1
"" syntax coloring for javadoc comments (HTML)
syntax region jsComment matchgroup=jsComment start="/\*\s*" end="\*/" contains=jsDocTags,jsCommentTodo,jsCvsTag,@jsHtml,@Spell fold
" tags containing a param
syntax match jsDocTags contained "@\(alias\|api\|augments\|borrows\|class\|constructs\|default\|defaultvalue\|emits\|exception\|exports\|extends\|fires\|kind\|link\|listens\|member\|member[oO]f\|mixes\|module\|name\|namespace\|requires\|template\|throws\|var\|variation\|version\)\>" skipwhite nextgroup=jsDocParam
" tags containing type and param
syntax match jsDocTags contained "@\(arg\|argument\|cfg\|param\|property\|prop\)\>" skipwhite nextgroup=jsDocType
" tags containing type but no param
syntax match jsDocTags contained "@\(callback\|define\|enum\|external\|implements\|this\|type\|typedef\|return\|returns\)\>" skipwhite nextgroup=jsDocTypeNoParam
" tags containing references
syntax match jsDocTags contained "@\(lends\|see\|tutorial\)\>" skipwhite nextgroup=jsDocSeeTag
" other tags (no extra syntax)
syntax match jsDocTags contained "@\(abstract\|access\|accessor\|author\|classdesc\|constant\|const\|constructor\|copyright\|deprecated\|desc\|description\|dict\|event\|example\|file\|file[oO]verview\|final\|function\|global\|ignore\|inheritDoc\|inner\|instance\|interface\|license\|localdoc\|method\|mixin\|nosideeffects\|override\|overview\|preserve\|private\|protected\|public\|readonly\|since\|static\|struct\|todo\|summary\|undocumented\|virtual\)\>"
syntax region jsDocType contained matchgroup=jsDocTypeBrackets start="{" end="}" contains=jsDocTypeRecord oneline skipwhite nextgroup=jsDocParam
syntax match jsDocType contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+" skipwhite nextgroup=jsDocParam
syntax region jsDocTypeRecord contained start=/{/ end=/}/ contains=jsDocTypeRecord extend
syntax region jsDocTypeRecord contained start=/\[/ end=/\]/ contains=jsDocTypeRecord extend
syntax region jsDocTypeNoParam contained start="{" end="}" oneline
syntax match jsDocTypeNoParam contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+"
syntax match jsDocParam contained "\%(#\|\$\|-\|'\|\"\|{.\{-}}\|\w\|\.\|:\|\/\|\[.{-}]\|=\)\+"
syntax region jsDocSeeTag contained matchgroup=jsDocSeeTag start="{" end="}" contains=jsDocTags
if version >= 508 || !exists("did_javascript_syn_inits")
if version < 508
let did_javascript_syn_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink jsDocTags Special
HiLink jsDocSeeTag Function
HiLink jsDocType Type
HiLink jsDocTypeBrackets jsDocType
HiLink jsDocTypeRecord jsDocType
HiLink jsDocTypeNoParam Type
HiLink jsDocParam Label
delcommand HiLink
endif
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1
"" syntax coloring for javadoc comments (HTML)
syntax region jsComment matchgroup=jsComment start="/\*\s*" end="\*/" contains=jsDocTags,jsCommentTodo,jsCvsTag,@jsHtml,@Spell fold
" tags containing a param
syntax match jsDocTags contained "@\(alias\|api\|augments\|borrows\|class\|constructs\|default\|defaultvalue\|emits\|exception\|exports\|extends\|fires\|kind\|link\|listens\|member\|member[oO]f\|mixes\|module\|name\|namespace\|requires\|template\|throws\|var\|variation\|version\)\>" skipwhite nextgroup=jsDocParam
" tags containing type and param
syntax match jsDocTags contained "@\(arg\|argument\|cfg\|param\|property\|prop\)\>" skipwhite nextgroup=jsDocType
" tags containing type but no param
syntax match jsDocTags contained "@\(callback\|define\|enum\|external\|implements\|this\|type\|typedef\|return\|returns\)\>" skipwhite nextgroup=jsDocTypeNoParam
" tags containing references
syntax match jsDocTags contained "@\(lends\|see\|tutorial\)\>" skipwhite nextgroup=jsDocSeeTag
" other tags (no extra syntax)
syntax match jsDocTags contained "@\(abstract\|access\|accessor\|author\|classdesc\|constant\|const\|constructor\|copyright\|deprecated\|desc\|description\|dict\|event\|example\|file\|file[oO]verview\|final\|function\|global\|ignore\|inheritDoc\|inner\|instance\|interface\|license\|localdoc\|method\|mixin\|nosideeffects\|override\|overview\|preserve\|private\|protected\|public\|readonly\|since\|static\|struct\|todo\|summary\|undocumented\|virtual\)\>"
syntax region jsDocType contained matchgroup=jsDocTypeBrackets start="{" end="}" contains=jsDocTypeRecord oneline skipwhite nextgroup=jsDocParam
syntax match jsDocType contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+" skipwhite nextgroup=jsDocParam
syntax region jsDocTypeRecord contained start=/{/ end=/}/ contains=jsDocTypeRecord extend
syntax region jsDocTypeRecord contained start=/\[/ end=/\]/ contains=jsDocTypeRecord extend
syntax region jsDocTypeNoParam contained start="{" end="}" oneline
syntax match jsDocTypeNoParam contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+"
syntax match jsDocParam contained "\%(#\|\$\|-\|'\|\"\|{.\{-}}\|\w\|\.\|:\|\/\|\[.{-}]\|=\)\+"
syntax region jsDocSeeTag contained matchgroup=jsDocSeeTag start="{" end="}" contains=jsDocTags
if version >= 508 || !exists("did_javascript_syn_inits")
if version < 508
let did_javascript_syn_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink jsDocTags Special
HiLink jsDocSeeTag Function
HiLink jsDocType Type
HiLink jsDocTypeBrackets jsDocType
HiLink jsDocTypeRecord jsDocType
HiLink jsDocTypeNoParam Type
HiLink jsDocParam Label
delcommand HiLink
endif
endif

View File

@ -12,3 +12,24 @@ syntax match jsDocType contained "\%(#\|\$\|\w\|\"\|-\|\.\|:\|\/\)\+" n
syntax match jsDocParam contained "\%(#\|\$\|\w\|\"\|-\|\.\|:\|{\|}\|\/\|\[\|]\|=\)\+"
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1
syntax match jsDocTags contained /@\(link\|method[oO]f\|ngdoc\|ng[iI]nject\|restrict\)/ nextgroup=jsDocParam skipwhite
syntax match jsDocType contained "\%(#\|\$\|\w\|\"\|-\|\.\|:\|\/\)\+" nextgroup=jsDocParam skipwhite
syntax match jsDocParam contained "\%(#\|\$\|\w\|\"\|-\|\.\|:\|{\|}\|\/\|\[\|]\|=\)\+"
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1
syntax match jsDocTags contained /@\(link\|method[oO]f\|ngdoc\|ng[iI]nject\|restrict\)/ nextgroup=jsDocParam skipwhite
syntax match jsDocType contained "\%(#\|\$\|\w\|\"\|-\|\.\|:\|\/\)\+" nextgroup=jsDocParam skipwhite
syntax match jsDocParam contained "\%(#\|\$\|\w\|\"\|-\|\.\|:\|{\|}\|\/\|\[\|]\|=\)\+"
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1
syntax match jsDocTags contained /@\(link\|method[oO]f\|ngdoc\|ng[iI]nject\|restrict\)/ nextgroup=jsDocParam skipwhite
syntax match jsDocType contained "\%(#\|\$\|\w\|\"\|-\|\.\|:\|\/\)\+" nextgroup=jsDocParam skipwhite
syntax match jsDocParam contained "\%(#\|\$\|\w\|\"\|-\|\.\|:\|{\|}\|\/\|\[\|]\|=\)\+"
endif

249
syntax/applescript.vim Normal file
View File

@ -0,0 +1,249 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'applescript') == -1
" Vim syntax file
" Language: AppleScript
" Maintainer: Jim Eberle <jim.eberle@fastnlight.com>
" Last Change: Mar 18, 2010
" URL: http://www.fastnlight.com/syntax/applescript.vim
" Use :syn w/in a buffer to see language element breakdown
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
" --- Statement ---
syn keyword scptStmt get set count copy run global local prop property
syn keyword scptStmt close put delete duplicate exists
syn keyword scptStmt launch open print quit make move reopen save
syn keyword scptStmt saving into
hi def link scptStmt Statement
" --- Type ---
syn keyword scptType text string number integer real color date
hi def link scptType Type
" --- Operator ---
syn keyword scptOp div mod not and or as
syn match scptOp "[-+*/^&]"
" MacRoman single char :- (divide)
exec 'syn match scptOp "'.nr2char(214).'"'
syn match scptOp "\<\(a \)\?\(ref\( to\)\?\|reference to\)\>"
hi def link scptOp Operator
" Containment
syn match scptIN "\<starts\? with\>"
syn match scptIN "\<begins\? with\>"
syn match scptIN "\<ends\? with\>"
syn match scptIN "\<contains\>"
syn match scptIN "\<does not contain\>"
syn match scptIN "\<doesn't contain\>"
syn match scptIN "\<is in\>"
syn match scptIN "\<is contained by\>"
syn match scptIN "\<is not in\>"
syn match scptIN "\<is not contained by\>"
syn match scptIN "\<isn't contained by\>"
hi def link scptIN scptOp
" Equals
syn match scptEQ "="
syn match scptEQ "\<equal\>"
syn match scptEQ "\<equals\>"
syn match scptEQ "\<equal to\>"
syn match scptEQ "\<is\>"
syn match scptEQ "\<is equal to\>"
hi def link scptEQ scptOp
" Not Equals
syn match scptNE "\<does not equal\>"
syn match scptNE "\<doesn't equal\>"
syn match scptNE "\<is not\>"
syn match scptNE "\<is not equal\( to\)\?\>"
syn match scptNE "\<isn't\>"
syn match scptNE "\<isn't equal\( to\)\?\>"
hi def link scptNE scptOp
" MacRoman single char /=
exec 'syn match scptNE "'.nr2char(173).'"'
" Less Than
syn match scptLT "<"
syn match scptLT "\<comes before\>"
syn match scptLT "\(is \)\?less than"
syn match scptLT "\<is not greater than or equal\( to\)\?\>"
syn match scptLT "\<isn't greater than or equal\( to\)\?\>"
hi def link scptLT scptOp
" Greater Than
syn match scptGT ">"
syn match scptGT "\<comes after\>"
syn match scptGT "\(is \)\?greater than"
syn match scptGT "\<is not less than or equal\( to\)\?\>"
syn match scptGT "\<isn't less than or equal\( to\)\?\>"
hi def link scptGT scptOp
" Less Than or Equals
syn match scptLE "<="
syn match scptLE "\<does not come after\>"
syn match scptLE "\<doesn't come after\>"
syn match scptLE "\(is \)\?less than or equal\( to\)\?"
syn match scptLE "\<is not greater than\>"
syn match scptLE "\<isn't greater than\>"
hi def link scptLE scptOp
" MacRoman single char <=
exec 'syn match scptLE "'.nr2char(178).'"'
" Greater Than or Equals
syn match scptGE ">="
syn match scptGE "\<does not come before\>"
syn match scptGE "\<doesn't come before\>"
syn match scptGE "\(is \)\?greater than or equal\( to\)\?"
syn match scptGE "\<is not less than\>"
syn match scptGE "\<isn't less than\>"
hi def link scptGE scptOp
" MacRoman single char >=
exec 'syn match scptGE "'.nr2char(179).'"'
" --- Constant String ---
syn region scptString start=+"+ skip=+\\\\\|\\"+ end=+"+
hi def link scptString String
" --- Constant Number ---
syn match scptNumber "\<-\?\d\+\>"
hi def link scptNumber Number
" --- Constant Float ---
syn match scptFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\="
syn match scptFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=\>"
syn match scptFloat display contained "\d\+e[-+]\>"
hi def link scptFloat Float
" --- Constant Boolean ---
syn keyword scptBoolean true false yes no ask
hi def link scptBoolean Boolean
" --- Other Constants ---
syn keyword scptConst it me version pi result space tab anything
syn match scptConst "\<missing value\>"
" Considering and Ignoring
syn match scptConst "\<application responses\>"
syn match scptConst "\<current application\>"
syn match scptConst "\<white space\>"
syn keyword scptConst case diacriticals expansion hyphens punctuation
hi def link scptConst Constant
" Style
syn match scptStyle "\<all caps\>"
syn match scptStyle "\<all lowercase\>"
syn match scptStyle "\<small caps\>"
syn keyword scptStyle bold condensed expanded hidden italic outline plain
syn keyword scptStyle shadow strikethrough subscript superscript underline
hi def link scptStyle scptConst
" Day
syn keyword scptDay Mon Tue Wed Thu Fri Sat Sun
syn keyword scptDay Monday Tuesday Wednesday Thursday Friday Saturday Sunday
syn keyword scptDay weekday
hi def link scptDay scptConst
" Month
syn keyword scptMonth Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
syn keyword scptMonth January February March
syn keyword scptMonth April May June
syn keyword scptMonth July August September
syn keyword scptMonth October November December
syn keyword scptMonth month
hi def link scptMonth scptConst
" Time
syn keyword scptTime minutes hours days weeks
hi def link scptTime scptConstant
" --- Conditional ---
syn keyword scptCond if then else
syn match scptCond "\<end if\>"
hi def link scptCond Conditional
" --- Repeat ---
syn keyword scptRepeat repeat with from to by continue
syn match scptRepeat "\<repeat while\>"
syn match scptRepeat "\<repeat until\>"
syn match scptRepeat "\<repeat with\>"
syn match scptRepeat "\<end repeat\>"
hi def link scptRepeat Repeat
" --- Exception ---
syn keyword scptException try error
syn match scptException "\<on error\>"
syn match scptException "\<end try\>"
syn match scptException "\<end error\>"
hi def link scptException Exception
" --- Keyword ---
syn keyword scptKeyword end tell times exit
syn keyword scptKeyword application file alias activate
syn keyword scptKeyword script on return without given
syn keyword scptKeyword considering ignoring items delimiters
syn keyword scptKeyword some each every whose where id index item its
syn keyword scptKeyword first second third fourth fifth sixth seventh
syn keyword scptKeyword eighth ninth tenth container
syn match scptKeyword "\d\+\(st\|nd\|rd\|th\)"
syn keyword scptKeyword last front back middle named thru through
syn keyword scptKeyword before after in of the
syn match scptKeyword "\<text \>"
syn match scptKeyword "\<partial result\>"
syn match scptKeyword "\<but ignoring\>"
syn match scptKeyword "\<but considering\>"
syn match scptKeyword "\<with timeout\>"
syn match scptKeyword "\<with transaction\>"
syn match scptKeyword "\<do script\>"
syn match scptKeyword "\<POSIX path\>"
syn match scptKeyword "\<quoted form\>"
syn match scptKeyword "'s"
hi def link scptKeyword Keyword
" US Units
syn keyword scptUnitUS quarts gallons ounces pounds inches feet yards miles
syn match scptUnitUS "\<square feet\>"
syn match scptUnitUS "\<square yards\>"
syn match scptUnitUS "\<square miles\>"
syn match scptUnitUS "\<cubic inches\>"
syn match scptUnitUS "\<cubic feet\>"
syn match scptUnitUS "\<cubic yards\>"
syn match scptUnitUS "\<degrees Fahrenheit\>"
hi def link scptUnitUS scptKey
" British Units
syn keyword scptUnitBT litres centimetres metres kilometres
syn match scptUnitBT "\<square metres\>"
syn match scptUnitBT "\<square kilometres\>"
syn match scptUnitBT "\<cubic centimetres\>"
syn match scptUnitBT "\<cubic metres\>"
hi def link scptUnitBT scptKey
" Metric Units
syn keyword scptUnitMT liters centimeters meters kilometers grams kilograms
syn match scptUnitMT "\<square meters\>"
syn match scptUnitMT "\<square kilometers\>"
syn match scptUnitMT "\<cubic centimeters\>"
syn match scptUnitMT "\<cubic meters\>"
syn match scptUnitMT "\<degrees Celsius\>"
syn match scptUnitMT "\<degrees Kelvin\>"
hi def link scptUnitMT scptKey
" --- Comment ---
syn match scptComment "--.*"
syn match scptComment "#.*"
syn region scptComment start="(\*" end="\*)"
hi def link scptComment Comment
" --- Todo ---
syn keyword scptTodo contained TODO FIXME XXX
hi def link scptTodo Todo
let b:current_syntax = "applescript"
endif