summaryrefslogtreecommitdiffstats
path: root/syntax/elm.vim
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2015-12-06 11:53:26 +0100
committerAdam Stankiewicz <sheerun@sher.pl>2015-12-06 11:53:26 +0100
commit08ea94e01188531e819e5d6bea5c84a773b4eb98 (patch)
tree595c73c1476e2fdc8458529907efea083a405f68 /syntax/elm.vim
parentba7a783c7f3d3c923ef151e4d3e99e087831ef69 (diff)
downloadvim-polyglot-08ea94e01188531e819e5d6bea5c84a773b4eb98.tar.gz
vim-polyglot-08ea94e01188531e819e5d6bea5c84a773b4eb98.zip
Add elm support, closes #81
Diffstat (limited to 'syntax/elm.vim')
-rw-r--r--syntax/elm.vim81
1 files changed, 81 insertions, 0 deletions
diff --git a/syntax/elm.vim b/syntax/elm.vim
new file mode 100644
index 00000000..5825e228
--- /dev/null
+++ b/syntax/elm.vim
@@ -0,0 +1,81 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elm') == -1
+
+" Vim syntax file
+" Language: Elm (http://elm-lang.org/)
+" Maintainer: Alexander Noriega
+" Latest Revision: 19 April 2015
+
+if exists("b:current_syntax")
+ finish
+endif
+
+" Keywords
+syn keyword elmKeyword alias as case else exposing if import in let module of port then type where
+
+" Builtin operators
+syn match elmBuiltinOp "\~"
+syn match elmBuiltinOp "||"
+syn match elmBuiltinOp "|>"
+syn match elmBuiltinOp "|"
+syn match elmBuiltinOp "`"
+syn match elmBuiltinOp "\^"
+syn match elmBuiltinOp "\\"
+syn match elmBuiltinOp ">>"
+syn match elmBuiltinOp ">="
+syn match elmBuiltinOp ">"
+syn match elmBuiltinOp "=="
+syn match elmBuiltinOp "="
+syn match elmBuiltinOp "<\~"
+syn match elmBuiltinOp "<|"
+syn match elmBuiltinOp "<="
+syn match elmBuiltinOp "<<"
+syn match elmBuiltinOp "<-"
+syn match elmBuiltinOp "<"
+syn match elmBuiltinOp "::"
+syn match elmBuiltinOp ":"
+syn match elmBuiltinOp "/="
+syn match elmBuiltinOp "//"
+syn match elmBuiltinOp "/"
+syn match elmBuiltinOp "\.\."
+syn match elmBuiltinOp "\."
+syn match elmBuiltinOp "->"
+syn match elmBuiltinOp "-"
+syn match elmBuiltinOp "++"
+syn match elmBuiltinOp "+"
+syn match elmBuiltinOp "*"
+syn match elmBuiltinOp "&&"
+syn match elmBuiltinOp "%"
+
+" Special names
+syntax match specialName "^main "
+
+" Comments
+syn match elmTodo "[tT][oO][dD][oO]\|FIXME\|XXX" contained
+syn match elmLineComment "--.*" contains=elmTodo,@spell
+syn region elmComment matchgroup=elmComment start="{-|\=" end="-}" contains=elmTodo,elmComment,@spell
+
+" String literals
+syn region elmString start="\"" skip="\\\"" end="\"" contains=elmStringEscape
+syn match elmStringEscape "\\u[0-9a-fA-F]\{4}" contained
+syn match elmStringEscape "\\[nrfvbt\\\"]" contained
+
+" Number literals
+syn match elmNumber "\(\<\d\+\>\)"
+syn match elmNumber "\(\<\d\+\.\d\+\>\)"
+
+" Types
+syn match elmType "\<[A-Z][0-9A-Za-z_'-]*"
+
+let b:current_syntax = "elm"
+
+hi def link elmKeyword Keyword
+hi def link elmBuiltinOp Special
+hi def link elmType Type
+hi def link elmTodo Todo
+hi def link elmLineComment Comment
+hi def link elmComment Comment
+hi def link elmString String
+hi def link elmNumber Number
+hi def link specialName Special
+
+endif