summaryrefslogtreecommitdiffstats
path: root/syntax
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2015-10-18 16:08:51 +0200
committerAdam Stankiewicz <sheerun@sher.pl>2015-10-18 16:08:51 +0200
commit1f1e821192d25d630587aa9d53bd8d428fb09c4d (patch)
tree7b342264b1c5e2e8d2a644fbff86204061530fd4 /syntax
parentae882e85f81869dbf81b5c888c337aa4481fc8c3 (diff)
downloadvim-polyglot-2.2.2.tar.gz
vim-polyglot-2.2.2.zip
Change haskell provider to neovimhaskell/haskell-vim, closes #75v2.2.2
Diffstat (limited to 'syntax')
-rw-r--r--syntax/cabal.vim55
-rw-r--r--syntax/haskell.vim180
2 files changed, 235 insertions, 0 deletions
diff --git a/syntax/cabal.vim b/syntax/cabal.vim
new file mode 100644
index 00000000..7a48a638
--- /dev/null
+++ b/syntax/cabal.vim
@@ -0,0 +1,55 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haskell') == -1
+
+" syntax highlighting for cabal
+"
+" author: raichoo (raichoo@googlemail.com)
+
+if version < 600
+ syn clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+syn match cabalLineComment "---*\([^-!#$%&\*\+./<=>\?@\\^|~].*\)\?$" contains=@Spell
+syn match cabalIdentifier "[A-Za-z\-]*" contained
+syn match cabalOperator "[<=>&|!]"
+syn match cabalColon ":" contained
+syn match cabalNumber "\<[0-9][0-9\.*]*\>"
+syn match cabalDelimiter "[,()]"
+syn keyword cabalBool True False
+syn keyword cabalConditional if else
+syn match cabalCompilerFlag "\s\+-[^ -][^ ]*"
+syn match cabalDocBulletPoint "^\s\+\*"
+syn match cabalDocHeadline "^\s\+=.*$"
+syn match cabalDocCode "^\s\+>.*$"
+syn match cabalDocNewline "^\s\+\.\s*$"
+syn match cabalSection "^\c\(executable\|library\|flag\|source-repository\|test-suite\|benchmark\)"
+syn match cabalEntry "^\s*[A-Za-z][a-zA-Z\-]*:" contains=cabalIdentifier,cabalColon
+
+syn region cabalDescription start="^\s*[dD]escription:" end="^\<" keepend
+ \ contains=
+ \ cabalEntry,
+ \ cabalLineComment,
+ \ cabalDocBulletPoint,
+ \ cabalDocHeadline,
+ \ cabalDocNewline,
+ \ cabalDocCode
+
+highlight def link cabalIdentifier Identifier
+highlight def link cabalLineComment Comment
+highlight def link cabalOperator Operator
+highlight def link cabalColon Operator
+highlight def link cabalNumber Number
+highlight def link cabalSection Structure
+highlight def link cabalDelimiter Delimiter
+highlight def link cabalBool Boolean
+highlight def link cabalCompilerFlag Macro
+highlight def link cabalConditional Conditional
+highlight def link cabalDocBulletPoint Structure
+highlight def link cabalDocHeadline Include
+highlight def link cabalDocNewline Operator
+highlight def link cabalDocCode Macro
+
+let b:current_syntax = "cabal"
+
+endif
diff --git a/syntax/haskell.vim b/syntax/haskell.vim
new file mode 100644
index 00000000..c8048ca1
--- /dev/null
+++ b/syntax/haskell.vim
@@ -0,0 +1,180 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haskell') == -1
+
+" syntax highlighting for haskell
+"
+" Heavily modified version of the haskell syntax
+" highlighter to support haskell.
+"
+" author: raichoo (raichoo@googlemail.com)
+
+if version < 600
+ syn clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+syn match haskellRecordField contained containedin=haskellBlock
+ \ "[_a-z][a-zA-Z0-9_']*\(,\s*[_a-z][a-zA-Z0-9_']*\)*\(\s*::\|\n\s\+::\)"
+ \ contains=
+ \ haskellIdentifier,
+ \ haskellOperators,
+ \ haskellSeparator,
+ \ haskellParens,
+syn match haskellTypeSig
+ \ "^\s*\(where\s\+\|let\s\+\|default\s\+\)\?[_a-z][a-zA-Z0-9_']*\(,\s*[_a-z][a-zA-Z0-9_']*\)*\(\s*::\|\n\s\+::\)"
+ \ contains=
+ \ haskellWhere,
+ \ haskellLet,
+ \ haskellIdentifier,
+ \ haskellOperators,
+ \ haskellSeparator,
+ \ haskellParens,
+syn keyword haskelLWhere where
+syn keyword haskellLet let
+syn keyword haskellDeclKeyword module class instance newtype deriving in
+syn match haskellDecl "\<\(type\|data\)\>\s\+\(\<family\>\)\?"
+syn keyword haskellDefault default
+syn keyword haskellImportKeywords import qualified safe as hiding contained
+syn keyword haskellForeignKeywords foreign export import ccall safe unsafe interruptible capi prim contained
+syn region haskellForeignImport start="\<foreign\>" end="::" keepend
+ \ contains=
+ \ haskellString,
+ \ haskellOperators,
+ \ haskellForeignKeywords,
+ \ haskellIdentifier
+syn match haskellImport "^\<import\>\s\+\(\<safe\>\s\+\)\?\(\<qualified\>\s\+\)\?.\+\(\s\+\<as\>\s\+.\+\)\?\(\s\+\<hiding\>\)\?"
+ \ contains=
+ \ haskellParens,
+ \ haskellOperators,
+ \ haskellImportKeywords,
+ \ haskellType,
+ \ haskellLineComment,
+ \ haskellBlockComment,
+ \ haskellPragma,
+syn keyword haskellStatement do case of
+if exists('g:haskell_enable_static_pointers') && g:haskell_enable_static_pointers == 1
+ syn keyword haskellStatic static
+endif
+syn keyword haskellConditional if then else
+syn match haskellNumber "\<[0-9]\+\>\|\<0[xX][0-9a-fA-F]\+\>\|\<0[oO][0-7]\+\>\|\<0[bB][10]\+\>"
+syn match haskellFloat "\<[0-9]\+\.[0-9]\+\([eE][-+]\=[0-9]\+\)\=\>"
+syn match haskellSeparator "[,;]"
+syn region haskellParens matchgroup=haskellDelimiter start="(" end=")" contains=TOP,haskellTypeSig
+syn region haskellBrackets matchgroup=haskellDelimiter start="\[" end="]" contains=TOP,haskellTypeSig
+syn region haskellBlock matchgroup=haskellDelimiter start="{" end="}" contains=TOP
+syn keyword haskellInfix infix infixl infixr
+syn keyword haskellBottom undefined error
+syn match haskellOperators "[-!#$%&\*\+/<=>\?@\\^|~:.]\+\|\<_\>"
+syn match haskellQuote "\<'\+" contained
+syn match haskellQuotedType "[A-Z][a-zA-Z0-9_']*\>" contained
+syn region haskellQuoted start="\<'\+" end="\>"
+ \ contains=
+ \ haskellType,
+ \ haskellQuote,
+ \ haskellQuotedType,
+ \ haskellSeparator,
+ \ haskellParens,
+ \ haskellOperators,
+ \ haskellIdentifier
+syn match haskellLineComment "---*\([^-!#$%&\*\+./<=>\?@\\^|~].*\)\?$"
+ \ contains=
+ \ haskellTodo,
+ \ @Spell
+syn match haskellBacktick "`[A-Za-z_][A-Za-z0-9_\.']*`"
+syn region haskellString start=+"+ skip=+\\\\\|\\"+ end=+"+
+ \ contains=@Spell
+syn match haskellIdentifier "[_a-z][a-zA-z0-9_']*" contained
+syn match haskellChar "\<'[^'\\]'\|'\\.'\|'\\u[0-9a-fA-F]\{4}'\>"
+syn match haskellType "\<[A-Z][a-zA-Z0-9_']*\>"
+syn region haskellBlockComment start="{-" end="-}"
+ \ contains=
+ \ haskellBlockComment,
+ \ haskellTodo,
+ \ @Spell
+syn region haskellPragma start="{-#" end="#-}"
+syn match haskellQuasiQuoted "." containedin=haskellQuasiQuote contained
+syn region haskellQuasiQuote matchgroup=haskellTH start="\[[_a-z][a-zA-z0-9_']*|" end="|\]"
+syn region haskellTHBlock matchgroup=haskellTH start="\[\(d\|t\|p\)\?|" end="|]" contains=TOP
+syn region haskellTHDoubleBlock matchgroup=haskellTH start="\[||" end="||]" contains=TOP
+syn match haskellPreProc "^#.*$"
+syn keyword haskellTodo TODO FIXME contained
+" Treat a shebang line at the start of the file as a comment
+syn match haskellShebang "\%^#!.*$"
+if exists('g:haskell_enable_typeroles') && g:haskell_enable_typeroles == 1
+ syn keyword haskellTypeRoles phantom representational nominal contained
+ syn region haskellTypeRoleBlock matchgroup=haskellTypeRoles start="type\s\+role" end="$" keepend
+ \ contains=
+ \ haskellType,
+ \ haskellTypeRoles
+endif
+if exists('g:haskell_enable_quantification') && g:haskell_enable_quantification == 1
+ syn keyword haskellForall forall
+endif
+if exists('g:haskell_enable_recursivedo') && g:haskell_enable_recursivedo == 1
+ syn keyword haskellRecursiveDo mdo rec
+endif
+if exists('g:haskell_enable_arrowsyntax') && g:haskell_enable_arrowsyntax == 1
+ syn keyword haskellArrowSyntax proc
+endif
+if exists('g:haskell_enable_pattern_synonyms') && g:haskell_enable_pattern_synonyms == 1
+ syn keyword haskellPatternKeyword pattern
+endif
+
+highlight def link haskellBottom Macro
+highlight def link haskellTH Boolean
+highlight def link haskellBlockKeywords Structure
+highlight def link haskellIdentifier Identifier
+highlight def link haskellForeignKeywords Structure
+highlight def link haskellDeriving Structure
+highlight def link haskellStatement Statement
+highlight def link haskellDefault Statement
+highlight def link haskellConditional Conditional
+highlight def link haskellNumber Number
+highlight def link haskellFloat Float
+highlight def link haskellSeparator Delimiter
+highlight def link haskellDelimiter Delimiter
+highlight def link haskellInfix PreProc
+highlight def link haskellOperators Operator
+highlight def link haskellQuote Operator
+highlight def link haskellQuotedType Include
+highlight def link haskellType Include
+highlight def link haskellShebang Comment
+highlight def link haskellLineComment Comment
+highlight def link haskellBlockComment Comment
+highlight def link haskellPragma SpecialComment
+highlight def link haskellString String
+highlight def link haskellChar String
+highlight def link haskellBacktick Operator
+highlight def link haskellPreProc Macro
+highlight def link haskellTodo Todo
+highlight def link haskellAssocType Structure
+highlight def link haskellImportBlock Delimiter
+highlight def link haskellImportKeywords Structure
+highlight def link haskellDeclKeyword Structure
+highlight def link haskellDecl Structure
+highlight def link haskellWhere Structure
+highlight def link haskellLet Structure
+highlight def link haskellQuasiQuoted String
+
+if exists('g:haskell_enable_quantification') && g:haskell_enable_quantification == 1
+ highlight def link haskellForall Operator
+endif
+if exists('g:haskell_enable_recursivedo') && g:haskell_enable_recursivedo == 1
+ highlight def link haskellRecursiveDo Operator
+endif
+if exists('g:haskell_enable_arrowsyntax') && g:haskell_enable_arrowsyntax == 1
+ highlight def link haskellArrowSyntax Operator
+endif
+if exists('g:haskell_enable_pattern_synonyms') && g:haskell_enable_pattern_synonyms == 1
+ highlight def link haskellPatternKeyword Structure
+endif
+if exists('g:haskell_enable_typeroles') && g:haskell_enable_typeroles == 1
+ highlight def link haskellTypeRoles Structure
+endif
+if exists('g:haskell_enable_static_pointers') && g:haskell_enable_static_pointers == 1
+ highlight def link haskellStatic Statement
+endif
+
+let b:current_syntax = "haskell"
+
+endif