From e77ec4b16a7d9ad0121654a6863e618e1e8ef54c Mon Sep 17 00:00:00 2001 From: Jason Turner Date: Thu, 1 Apr 2010 19:01:18 +0000 Subject: [PATCH] Clean up the vim syntax a bit, add escape characters and incorporate changes from bram --- contrib/vim/syntax/chaiscript.vim | 101 ++++++++++++++++++------------ 1 file changed, 60 insertions(+), 41 deletions(-) diff --git a/contrib/vim/syntax/chaiscript.vim b/contrib/vim/syntax/chaiscript.vim index b9ca849..5a64bdb 100644 --- a/contrib/vim/syntax/chaiscript.vim +++ b/contrib/vim/syntax/chaiscript.vim @@ -2,74 +2,93 @@ " Language: ChaiScript " Maintainer: Jason Turner +" Quit when a (custom) syntax file was already loaded +if exists("b:current_syntax") + finish +end + syn case match " syncing method syn sync fromstart " Strings -syn region chaiscriptString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=chaiscriptSpecial,@Spell +syn region chaiscriptString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=chaiscriptSpecial,chaiscriptEval,@Spell +" Escape characters +syn match chaiscriptSpecial contained "\\[\\abfnrtv\'\"]\|\\\d\{,3}" +" String evals +syn region chaiscriptEval contained start="${" end="}" + " integer number -syn match chaiscriptNumber "\<\d\+\>" +syn match chaiscriptNumber "\<\d\+\>" + " floating point number, with dot, optional exponent -syn match chaiscriptFloat "\<\d\+\.\d*\%(e[-+]\=\d\+\)\=\>" +syn match chaiscriptFloat "\<\d\+\.\d*\%(e[-+]\=\d\+\)\=\>" + " floating point number, starting with a dot, optional exponent -syn match chaiscriptFloat "\.\d\+\%(e[-+]\=\d\+\)\=\>" +syn match chaiscriptFloat "\.\d\+\%(e[-+]\=\d\+\)\=\>" + " floating point number, without dot, with exponent -syn match chaiscriptFloat "\<\d\+e[-+]\=\d\+\>" +syn match chaiscriptFloat "\<\d\+e[-+]\=\d\+\>" -syn match chaiscriptNumber "\<0x\x\+\>" +" Hex strings +syn match chaiscriptNumber "\<0x\x\+\>" -syn keyword chaiscriptCond if else +" Binary strings +syn match chaiscriptNumber "\<0b[01]\+\>" -syn keyword chaiscriptRepeat while for do -syn keyword chaiscriptStatement break continue return - -syn keyword chaiscriptExceptions try catch throw +" Various language features +syn keyword chaiscriptCond if else +syn keyword chaiscriptRepeat while for do +syn keyword chaiscriptStatement break continue return +syn keyword chaiscriptExceptions try catch throw "Keyword -syn keyword chaiscriptKeyword def true false attr +syn keyword chaiscriptKeyword def true false attr -syn keyword chaiscriptType fun var +"Built in types +syn keyword chaiscriptType fun var -"Built in funcs -syn keyword chaiscriptFunc eval throw +"Built in funcs, keep it simple +syn keyword chaiscriptFunc eval throw "Let's treat all backtick operator function lookups as built in too -syn region chaiscriptFunc matchgroup=chaiscriptFunc start="`" end="`" +syn region chaiscriptFunc matchgroup=chaiscriptFunc start="`" end="`" -syn match chaiscriptOperator "\.\." +" Account for the "[1..10]" syntax, treating it as an operator +" Intentionally leaving out all of the normal, well known operators +syn match chaiscriptOperator "\.\." + +" Guard seperator as an operator +syn match chaiscriptOperator ":" " Comments -syn match chaiscriptComment "//.*$" contains=@Spell -syn region chaiscriptComment matchgroup=chaiscriptComment start="/\*" end="\*/" contains=@Spell +syn match chaiscriptComment "//.*$" contains=@Spell +syn region chaiscriptComment matchgroup=chaiscriptComment start="/\*" end="\*/" contains=@Spell -command -nargs=+ HiLink hi def link - -HiLink chaiscriptExceptions Exception -HiLink chaiscriptKeyword Keyword -HiLink chaiscriptStatement Statement -HiLink chaiscriptRepeat Repeat -HiLink chaiscriptString String -HiLink chaiscriptNumber Number -HiLink chaiscriptFloat Float -HiLink chaiscriptOperator Operator -HiLink chaiscriptConstant Constant -HiLink chaiscriptCond Conditional -HiLink chaiscriptFunction Function -HiLink chaiscriptComment Comment -HiLink chaiscriptTodo Todo -HiLink chaiscriptError Error -HiLink chaiscriptSpecial SpecialChar -HiLink chaiscriptFunc Identifier -HiLink chaiscriptType Type - -delcommand HiLink +hi def link chaiscriptExceptions Exception +hi def link chaiscriptKeyword Keyword +hi def link chaiscriptStatement Statement +hi def link chaiscriptRepeat Repeat +hi def link chaiscriptString String +hi def link chaiscriptNumber Number +hi def link chaiscriptFloat Float +hi def link chaiscriptOperator Operator +hi def link chaiscriptConstant Constant +hi def link chaiscriptCond Conditional +hi def link chaiscriptFunction Function +hi def link chaiscriptComment Comment +hi def link chaiscriptTodo Todo +hi def link chaiscriptError Error +hi def link chaiscriptSpecial SpecialChar +hi def link chaiscriptFunc Identifier +hi def link chaiscriptType Type +hi def link chaiscriptEval Special let b:current_syntax = "chaiscript" -" vim: nowrap sw=2 sts=2 ts=8 noet ff=unix: +" vim: nowrap sw=2 sts=2 ts=8 noet