@ -11,15 +11,19 @@ elseif exists("b:current_syntax")
finish
finish
endif
endif
syn case ignore
" Highlight unmatched parens
" Highlight unmatched parens
syn match racketError , []}) ],
syn match racketError , []}) ],
if version < 600
if version < 600
set iskeyword = 33 , 35 -39 , 42 -58 , 60 -90 , 94 , 95 , 97 -122 , 126 , _
set iskeyword = 33 , 35 -39 , 42 -58 , 60 -90 , 94 , 95 , 97 -122 , 126 , _
else
else
setlocal iskeyword = 33 , 35 -39 , 42 -58 , 60 -90 , 94 , 95 , 97 -122 , 126 , _
" syntax iskeyword 33,35-39,42-58,60-90,94,95,97-122,126,_
" converted from decimal to char
" :s/\d\+/\=submatch(0)->str2nr()->nr2char()/g
" but corrected to remove duplicate _, move ^ to end
syntax iskeyword @, ! , #- ', *- :, < - Z , a - z , ~ , _ , ^
" expanded
" syntax iskeyword !,#,$,%,&,',*,+,,,-,.,/,0-9,:,<,=,>,?,@,A-Z,_,a-z,~,^
endif
endif
" Forms in order of appearance at
" Forms in order of appearance at
@ -213,7 +217,7 @@ syn keyword racketFunc locale-string-encoding
syn keyword racketFunc char ? char - > integer integer - > char
syn keyword racketFunc char ? char - > integer integer - > char
syn keyword racketFunc char = ? char < ? char < = ? char > ? char > = ?
syn keyword racketFunc char = ? char < ? char < = ? char > ? char > = ?
syn keyword racketFunc char - ci = ? char - ci < ? char - ci < = ? char - ci > ? char - ci > = ?
syn keyword racketFunc char - ci = ? char - ci < ? char - ci < = ? char - ci > ? char - ci > = ?
syn keyword racketFunc char - alphabetic ? char - lowercase ? char - uppercase ? char - title - case ?
syn keyword racketFunc char - alphabetic ? char - lower - case ? char - upper - case ? char - title - case ?
syn keyword racketFunc char - numeric ? char - symbolic ? char - punctuation ? char - graphic ?
syn keyword racketFunc char - numeric ? char - symbolic ? char - punctuation ? char - graphic ?
syn keyword racketFunc char - whitespace ? char - blank ?
syn keyword racketFunc char - whitespace ? char - blank ?
syn keyword racketFunc char - iso - control ? char - general - category
syn keyword racketFunc char - iso - control ? char - general - category
@ -470,38 +474,53 @@ syn keyword racketFunc seconds->date current-milliseconds
syn match racketDelimiter ! \< \.\> !
syn match racketDelimiter ! \< \.\> !
syn match racketSymbol , \k + , contained
syn cluster racketTop contains = racketSyntax , racketFunc , racketDelimiter
syn cluster racketNormal contains = racketSyntax , racketFunc , racketDelimiter
syn cluster racketQuotedStuff contains = racketSymbol
syn cluster racketQuotedOrNormal contains = racketDelimiter
syn match racketConstant , \< \*\k \+ \*\> ,
syn match racketConstant , \< \*\k \+ \*\> ,
syn match racketConstant , \< < \k \+ > \> ,
syn match racketConstant , \< < \k \+ > \> ,
syn region racketQuotedStruc start = "(" rs = s + 1 end = ")" re = e -1 contains = @racketQuotedStuff , @racketQuotedOrNormal contained
" Non-quoted lists, and strings
syn region racketQuotedStruc start = "#(" rs = s + 2 end = ")" re = e -1 contains = @racketQuotedStuff , @racketQuotedOrNormal contained
syn region racketStruc matchgroup = racketParen start = "(" rs = s + 1 end = ")" re = e -1 contains = @racketTop
syn region racketQuotedStruc start = "{" rs = s + 1 end = "}" re = e -1 contains = @racketQuotedStuff , @racketQuotedOrNormal contained
syn region racketStruc matchgroup = racketParen start = "#(" rs = s + 2 end = ")" re = e -1 contains = @racketTop
syn region racketQuotedStruc start = "#{" rs = s + 2 end = "}" re = e -1 contains = @racketQuotedStuff , @racketQuotedOrNormal contained
syn region racketStruc matchgroup = racketParen start = "{" rs = s + 1 end = "}" re = e -1 contains = @racketTop
syn region racketQuotedStruc start = "\[" rs = s + 1 end = "\]" re = e -1 contains = @racketQuotedStuff , @racketQuotedOrNormal contained
syn region racketStruc matchgroup = racketParen start = "#{" rs = s + 2 end = "}" re = e -1 contains = @racketTop
syn region racketQuotedStruc start = "#\[" rs = s + 2 end = "\]" re = e -1 contains = @racketQuotedStuff , @racketQuotedOrNormal contained
syn region racketStruc matchgroup = racketParen start = "\[" rs = s + 1 end = "\]" re = e -1 contains = @racketTop
syn region racketStruc matchgroup = racketParen start = "#\[" rs = s + 2 end = "\]" re = e -1 contains = @racketTop
syn cluster racketQuotedStuff add = racketQuotedStruc
for lit in ['hash' , 'hasheq' , 'hasheqv' ]
execute printf ( 'syntax match racketLit "\<%s\>" nextgroup=@racketParen containedin=ALLBUT,.*String,.*Comment' , '#' .lit )
endfor
" Non-quoted lists, and strings
for lit in ['rx' , 'rx#' , 'px' , 'px#' ]
syn region racketStruc matchgroup = Delimiter start = "(" rs = s + 1 matchgroup = Delimiter end = ")" re = e -1 contains = @racketNormal
execute printf ( 'syntax match racketRe "\<%s\>" nextgroup=@racketString containedin=ALLBUT,.*String,.*Comment,' , '#' .lit )
syn region racketStruc matchgroup = Delimiter start = "#(" rs = s + 2 matchgroup = Delimiter end = ")" re = e -1 contains = @racketNormal
endfor
syn region racketStruc matchgroup = Delimiter start = "{" rs = s + 1 matchgroup = Delimiter end = "}" re = e -1 contains = @racketNormal
syn region racketStruc matchgroup = Delimiter start = "#{" rs = s + 2 matchgroup = Delimiter end = "}" re = e -1 contains = @racketNormal
unlet lit
syn region racketStruc matchgroup = Delimiter start = "\[" rs = s + 1 matchgroup = Delimiter end = "\]" re = e -1 contains = @racketNormal
syn region racketStruc matchgroup = Delimiter start = "#\[" rs = s + 2 matchgroup = Delimiter end = "\]" re = e -1 contains = @racketNormal
" Simple literals
" Simple literals
syn region racketString start = /\%(\\\)\@<!"/ skip = /\\[\\"]/ end = /"/
syn region racketString start = /#<<\z(.*\)$/ end = /^\z1$/
syn cluster racketNormal add = racketError , racketConstant , racketStruc , racketString
" Strings
syn cluster racketQuotedOrNormal add = racketString
syn match racketStringEscapeError "\\." contained display
syn match racketStringEscape "\\[abtnvfre'" \\]" contained display
syn match racketStringEscape "\\$" contained display
syn match racketStringEscape "\\\o\{1,3}\|\\x\x\{1,2}" contained display
syn match racketUStringEscape "\\u\x\{1,4}\|\\U\x\{1,8}" contained display
syn match racketUStringEscape "\\u\x\{4}\\u\x\{4}" contained display
syn region racketString start = /\%(\\\)\@<!"/ skip = /\\[\\"]/ end = /"/ contains = racketStringEscapeError , racketStringEscape , racketUStringEscape
syn region racketString start = /#"/ skip = /\\[\\"]/ end = /"/ contains = racketStringEscapeError , racketStringEscape
if exists ( "racket_no_string_fold" )
syn region racketString start = /#<<\z(.*\)$/ end = /^\z1$/
else
syn region racketString start = /#<<\z(.*\)$/ end = /^\z1$/ fold
endif
syn cluster racketTop add = racketError , racketConstant , racketStruc , racketString
" Numbers
" Numbers
@ -561,12 +580,11 @@ syn match racketChar "\<#\\linefeed\>"
syn match racketChar "\<#\\vtab\>"
syn match racketChar "\<#\\vtab\>"
syn match racketChar "\<#\\page\>"
syn match racketChar "\<#\\page\>"
syn match racketChar "\<#\\rubout\>"
syn match racketChar "\<#\\rubout\>"
syn match racketChar "\<#\\[0-7] \{1,3}\>"
syn match racketChar "\<#\\\o \{1,3}\>"
syn match racketChar "\<#\\x[0-9a-f] \{1,2}\>"
syn match racketChar "\<#\\x\x \{1,2}\>"
syn match racketChar "\<#\\u[0-9a-f] \{1,6}\>"
syn match racketChar "\<#\\u\x \{1,6}\>"
syn cluster racketNormal add = racketNumber , racketBoolean , racketChar
syn cluster racketTop add = racketNumber , racketBoolean , racketChar
syn cluster racketQuotedOrNormal add = racketNumber , racketBoolean
" Command-line parsing
" Command-line parsing
syn keyword racketExtFunc command - line current - command - line - arguments once - any help - labels multi once - each
syn keyword racketExtFunc command - line current - command - line - arguments once - any help - labels multi once - each
@ -574,45 +592,26 @@ syn keyword racketExtFunc command-line current-command-line-arguments once-any h
syn match racketSyntax "#lang "
syn match racketSyntax "#lang "
syn match racketExtSyntax "#:\k\+"
syn match racketExtSyntax "#:\k\+"
syn cluster racketNormal add = racketExtFunc , racketExtSyntax
syn cluster racketTop add = racketExtFunc , racketExtSyntax
" syntax quoting, unquoting and quasiquotation
" syntax quoting, unquoting and quasiquotation
syn region racketQuoted matchgroup = Delimiter start = "['`]" end = ! [ \t ( ) \[\]";]! me = e -1 contains = @racketQuotedStuff , @racketQuotedOrNormal
syn match racketQuote "#\?['`]"
syn region racketQuoted matchgroup = Delimiter start = "['`](" matchgroup = Delimiter end = ")" contains = @racketQuotedStuff , @racketQuotedOrNormal
syn region racketQuoted matchgroup = Delimiter start = "['`]\?#(" matchgroup = Delimiter end = ")" contains = @racketQuotedStuff , @racketQuotedOrNormal
syn match racketUnquote "#,"
syn match racketUnquote "#,@"
syn region racketUnquote matchgroup = Delimiter start = "#," rs = s + 2 end = ! [ \t \[\]( ) ";]! re = e -1 , me = e -1 contained contains = @racketNormal
syn match racketUnquote ","
syn region racketUnquote matchgroup = Delimiter start = "#,@" rs = s + 3 end = ! [ \t \[\]( ) ";]! re = e -1 , me = e -1 contained contains = @racketNormal
syn match racketUnquote ",@"
syn region racketUnquote matchgroup = Delimiter start = "#,(" rs = s + 3 end = ")" re = e -1 contained contains = @racketNormal
syn region racketUnquote matchgroup = Delimiter start = "#,@(" rs = s + 4 end = ")" re = e -1 contained contains = @racketNormal
syn region racketUnquote matchgroup = Delimiter start = "#,\[" rs = s + 3 end = "\]" re = e -1 contained contains = @racketNormal
syn region racketUnquote matchgroup = Delimiter start = "#,@\[" rs = s + 4 end = "\]" re = e -1 contained contains = @racketNormal
syn region racketUnquote matchgroup = Delimiter start = "," rs = s + 1 end = ! [ \t \[\]( ) ";]! re = e -1 , me = e -1 contained contains = @racketNormal
syn region racketUnquote matchgroup = Delimiter start = ",@" rs = s + 2 end = ! [ \t \[\]( ) ";]! re = e -1 , me = e -1 contained contains = @racketNormal
syn region racketUnquote matchgroup = Delimiter start = ",(" rs = s + 2 end = ")" re = e -1 contained contains = @racketNormal
syn region racketUnquote matchgroup = Delimiter start = ",@(" rs = s + 3 end = ")" re = e -1 contained contains = @racketNormal
syn region racketUnquote matchgroup = Delimiter start = ",#(" rs = s + 3 end = ")" re = e -1 contained contains = @racketNormal
syn region racketUnquote matchgroup = Delimiter start = ",@#(" rs = s + 4 end = ")" re = e -1 contained contains = @racketNormal
syn region racketUnquote matchgroup = Delimiter start = ",\[" rs = s + 2 end = "\]" re = e -1 contained contains = @racketNormal
syn region racketUnquote matchgroup = Delimiter start = ",@\[" rs = s + 3 end = "\]" re = e -1 contained contains = @racketNormal
syn region racketUnquote matchgroup = Delimiter start = ",#\[" rs = s + 3 end = "\]" re = e -1 contained contains = @racketNormal
syn region racketUnquote matchgroup = Delimiter start = ",@#\[" rs = s + 4 end = "\]" re = e -1 contained contains = @racketNormal
syn cluster racketQuotedStuff add = racketUnquote
syn region racketQuoted matchgroup = Delimiter start = "#['`]" rs = s + 2 end = ! [ \t ( ) \[\]";]! re = e -1 , me = e -1 contains = @racketQuotedStuff , @racketQuotedOrNormal
syn region racketQuoted matchgroup = Delimiter start = "#['`](" rs = s + 3 matchgroup = Delimiter end = ")" re = e -1 contains = @racketQuotedStuff , @racketQuotedOrNormal
" Comments
" Comments
syn match racketSharpBang "\%^#![ /].*" display
syn match racketComment /;.*$/ contains = racketTodo , racketNote , @Spell
syn match racketComment /;.*$/ contains = racketTodo , racketNote , @Spell
syn region racketMultilineComment start = /#|/ end = /|#/ contains = racketMultilineComment , racketTodo , racketNote , @Spell
syn region racketMultilineComment start = /#|/ end = /|#/ contains = racketMultilineComment , racketTodo , racketNote , @Spell
syn match racketFormComment "#;" nextgroup = @racketTop
syn keyword racketTodo FIXME TODO XXX contained
syn match racketTodo /\C\<\(FIXME\|TODO\|XXX\)\ze:\?\>/ contained
syntax match racketNote /\CNOTE\ze:\?/ contained
syntax match racketNote /\CNOTE\ze:\?/ contained
syn cluster racketNormal add = racketQuoted , racketComment , racketMultilineComment
syn cluster racketTop add = racketQuote , racketUnquote , racketComment , racketMultilineComment , racketFormComment
syn cluster racketQuotedOrNormal add = racketComment , racketMultilineComment
" Synchronization and the wrapping up...
" Synchronization and the wrapping up...
syn sync match matchPlace grouphere NONE "^[^ \t]"
syn sync match matchPlace grouphere NONE "^[^ \t]"
@ -633,6 +632,9 @@ if version >= 508 || !exists("did_racket_syntax_inits")
HiLink racketFunc Function
HiLink racketFunc Function
HiLink racketString String
HiLink racketString String
HiLink racketStringEscape Special
HiLink racketUStringEscape Special
HiLink racketStringEscapeError Error
HiLink racketChar Character
HiLink racketChar Character
HiLink racketBoolean Boolean
HiLink racketBoolean Boolean
@ -640,15 +642,20 @@ if version >= 508 || !exists("did_racket_syntax_inits")
HiLink racketNumberError Error
HiLink racketNumberError Error
HiLink racketContainedNumberError Error
HiLink racketContainedNumberError Error
HiLink racketQuoted Structure
HiLink racketQuote SpecialChar
HiLink racketQuotedStruc Structure
HiLink racketUnquote SpecialChar
HiLink racketSymbol Structure
HiLink racketDelimiter Delimiter
HiLink racketDelimiter Delimiter
HiLink racketParen Delimiter
HiLink racketConstant Constant
HiLink racketConstant Constant
HiLink racketLit Type
HiLink racketRe Type
HiLink racketComment Comment
HiLink racketComment Comment
HiLink racketMultilineComment Comment
HiLink racketMultilineComment Comment
HiLink racketFormComment SpecialChar
HiLink racketSharpBang Comment
HiLink racketTodo Todo
HiLink racketTodo Todo
HiLink racketNote SpecialComment
HiLink racketNote SpecialComment
HiLink racketError Error
HiLink racketError Error