summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md1
-rwxr-xr-xbuild1
-rw-r--r--ftdetect/polyglot.vim5
-rw-r--r--syntax/carp.vim127
4 files changed, 134 insertions, 0 deletions
diff --git a/README.md b/README.md
index 847ff420..be6ce2b6 100644
--- a/README.md
+++ b/README.md
@@ -46,6 +46,7 @@ If you need full functionality of any plugin, please use it directly with your p
- [c++11](https://github.com/octol/vim-cpp-enhanced-highlight) (syntax)
- [c/c++](https://github.com/vim-jp/vim-cpp) (syntax)
- [caddyfile](https://github.com/isobit/vim-caddyfile) (syntax, indent, ftplugin)
+- [carp](https://github.com/hellerve/carp-vim) (syntax)
- [cjsx](https://github.com/mtscout6/vim-cjsx) (syntax, ftplugin)
- [clojure](https://github.com/guns/vim-clojure-static) (syntax, indent, autoload, ftplugin)
- [cmake](https://github.com/pboettch/vim-cmake-syntax) (syntax, indent)
diff --git a/build b/build
index d991a885..b7c449c4 100755
--- a/build
+++ b/build
@@ -118,6 +118,7 @@ PACKS="
c++11:octol/vim-cpp-enhanced-highlight
c/c++:vim-jp/vim-cpp
caddyfile:isobit/vim-caddyfile
+ carp:hellerve/carp-vim
cjsx:mtscout6/vim-cjsx
clojure:guns/vim-clojure-static
cmake:pboettch/vim-cmake-syntax
diff --git a/ftdetect/polyglot.vim b/ftdetect/polyglot.vim
index d1a5f64a..ed5f39cd 100644
--- a/ftdetect/polyglot.vim
+++ b/ftdetect/polyglot.vim
@@ -83,6 +83,11 @@ au BufNewFile,BufRead Caddyfile set ft=caddyfile
augroup END
augroup filetypedetect
+" carp:hellerve/carp-vim
+au BufRead,BufNewFile *.carp set filetype=carp
+augroup END
+
+augroup filetypedetect
" cjsx:mtscout6/vim-cjsx
augroup CJSX
au!
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