diff options
author | Adam Stankiewicz <sheerun@sher.pl> | 2017-12-30 11:29:09 +0100 |
---|---|---|
committer | Adam Stankiewicz <sheerun@sher.pl> | 2017-12-30 11:29:38 +0100 |
commit | f3556c1eca72d5816bee766fad7de55e012629ab (patch) | |
tree | b5f996ea82c8b8c14d087419c937ea58bcff00a8 /syntax | |
parent | 4855e5ee82a6871b4330ee00626dead1ee874f5b (diff) | |
download | vim-polyglot-f3556c1eca72d5816bee766fad7de55e012629ab.tar.gz vim-polyglot-f3556c1eca72d5816bee766fad7de55e012629ab.zip |
Add carp language support, closes #258
Diffstat (limited to 'syntax')
-rw-r--r-- | syntax/carp.vim | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/syntax/carp.vim b/syntax/carp.vim new file mode 100644 index 00000000..13d96cd9 --- /dev/null +++ b/syntax/carp.vim @@ -0,0 +1,127 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'carp') == -1 + +" Vim syntax file +" Language: Carp +" Maintainer: Veit Heller <veit@veitheller.de> +" URL: http://github.com/hellerve/carp-vim.git +" Description: Contains all of the keywords in #lang carp + +if exists("b:current_syntax") + finish +endif + +syn match carpError ,[]})], + +if version < 600 + set iskeyword=33,35-39,42-43,45-58,60-63,65-90,94,95,97-122,124,126,_ +else + setlocal iskeyword=33,35-39,42-43,45-58,60-63,65-90,94,95,97-122,124,126,_ +endif + +syn keyword carpSyntax def defn let do if while ref address set! the +syn keyword carpSyntax defmacro defdynamic quote car cdr cons list array +syn keyword carpSyntax expand deftype register system-include register-type +syn keyword carpSyntax defmodule copy use module defalias definterface eval +syn keyword carpSyntax expand instantiate type info help quit env build run +syn keyword carpSyntax cat use project-set! local-include system-include +syn keyword carpSyntax add-cflag add-lib project load reload + +syn keyword carpFunc Int Float Double Bool String Char Array Fn Ref Long +syn keyword carpFunc not or and + - * / = /= >= <= > < inc dec +syn keyword carpFunc println print get-line from-string mod seed random +syn keyword carpFunc random-between str mask delete append count duplicate +syn keyword carpFunc cstr chars from-chars to-int from-int sin cos sqrt acos +syn keyword carpFunc atan2 exit time srand for cond floor abs neg to-float +syn keyword carpFunc from-float tan asin atan cosh sinh tanh exp frexp ldexp +syn keyword carpFunc log log10 modf pow ceil clamp approx refstr foreach +syn keyword carpFunc => ==> repeat nth replicate range raw aset aset! count +syn keyword carpFunc push-back pop-back sort index-of element-count + + +syn match carpSymbol ,\k+, contained +syn match carpTodo /\v<(FIXME|NOTE|TODO|OPTIMIZE)/ containedin=carpComment,carpString + +syn cluster carpNormal contains=carpSyntax,carpFunc,carpDelimiter +syn cluster carpQuotedStuff contains=carpSymbol +syn cluster carpQuotedOrNormal contains=carpDelimiter + +syn region carpQuotedStruc start="@("rs=s+2 end=")"re=e-1 contains=@carpQuotedStuff,@carpQuotedOrNormal contained +syn region carpQuotedStruc start="&("rs=s+2 end=")"re=e-1 contains=@carpQuotedStuff,@carpQuotedOrNormal contained +syn region carpQuotedStruc start="("rs=s+1 end=")"re=e-1 contains=@carpQuotedStuff,@carpQuotedOrNormal contained +syn region carpQuotedStruc start="\["rs=s+1 end="\]"re=e-1 contains=@carpQuotedStuff,@carpQuotedOrNormal contained + +syn cluster carpQuotedStuff add=carpQuotedStruc + +syn region carpStruc matchgroup=Delimiter start="@("rs=s+2 matchgroup=Delimiter end=")"re=e-1 contains=@carpNormal +syn region carpStruc matchgroup=Delimiter start="&("rs=s+2 matchgroup=Delimiter end=")"re=e-1 contains=@carpNormal +syn region carpStruc matchgroup=Delimiter start="&"rs=s+1 end=![ \t()\[\]";]!me=e-1 contains=@carpNormal +syn region carpStruc matchgroup=Delimiter start="@"rs=s+1 end=![ \t()\[\]";]!me=e-1 contains=@carpNormal +syn region carpStruc matchgroup=Delimiter start="("rs=s+1 matchgroup=Delimiter end=")"re=e-1 contains=@carpNormal +syn region carpStruc matchgroup=Delimiter start="\["rs=s+1 matchgroup=Delimiter end="\]"re=e-1 contains=@carpNormal + +syn region carpString start=/\%(\\\)\@<!"/ skip=/\\[\\"]/ end=/"/ + +syn cluster carpNormal add=carpError,carpStruc,carpString +syn cluster carpQuotedOrNormal add=carpString + +syn match carpNumber "\<[-+]\?\(\d\+\|\d\+#*\.\|\d*\.\d\+\)#*\(/\d\+#*\)\?[lf]\?\>" contains=carpContainedNumberError +syn match carpNumber "\<[-+]\?\d\+/\d\+[lf]\?\>" contains=carpContainedNumberError + + +syn keyword carpBoolean true false + +syn match carpChar "\<\\.\w\@!" + +syn region carpQuoted matchgroup=Delimiter start="['`]" end=![ \t()\[\]";]!me=e-1 contains=@carpQuotedStuff,@carpQuotedOrNormal +syn region carpQuoted matchgroup=Delimiter start="['`](" matchgroup=Delimiter end=")" contains=@carpQuotedStuff,@carpQuotedOrNormal + +syn cluster carpNormal add=carpNumber,carpBoolean,carpChar +syn cluster carpQuotedOrNormal add=carpNumber,carpBoolean + +syn match carpComment /;.*$/ contains=@Spell + +syn region carpQuoted matchgroup=Delimiter start="#['`]"rs=s+2 end=![ \t()\[\]";]!re=e-1,me=e-1 contains=@carpQuotedStuff,@carpQuotedOrNormal +syn region carpQuoted matchgroup=Delimiter start="#['`]("rs=s+3 matchgroup=Delimiter end=")"re=e-1 contains=@carpQuotedStuff,@carpQuotedOrNormal + +syn cluster carpNormal add=carpQuoted,carpComment +syn cluster carpQuotedOrNormal add=carpComment + +syn sync match matchPlace grouphere NONE "^[^ \t]" + +if version >= 508 || !exists("carp_syntax_init") + if version < 508 + let carp_syntax_init = 1 + command -nargs=+ HiLink hi link <args> + else + command -nargs=+ HiLink hi def link <args> + endif + + HiLink carpSyntax Statement + HiLink carpFunc Function + HiLink carpCopy Function + + HiLink carpString String + HiLink carpChar Character + HiLink carpBoolean Boolean + + HiLink carpNumber Number + HiLink carpNumberError Error + HiLink carpContainedNumberError Error + + HiLink carpQuoted Structure + HiLink carpQuotedStruc Structure + HiLink carpSymbol Structure + HiLink carpAtom Structure + + HiLink carpDelimiter Delimiter + HiLink carpConstant Constant + + HiLink carpTodo Todo + HiLink carpComment Comment + HiLink carpError Error + delcommand HiLink +endif + +let b:current_syntax = "carp" + +endif |