Changed haskell provider to raichoo/haskell-vim, closes #63

This commit is contained in:
Adam Stankiewicz
2015-07-18 23:22:55 +02:00
parent 92ab75408d
commit cf1e53bc39
11 changed files with 584 additions and 569 deletions

View File

@@ -1,151 +1,55 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haskell') == -1
" Vim syntax file
" Language: Cabal
" Author: Tristan Ravitch
" Version: 0.0.1
" syntax highlighting for cabal
"
" author: raichoo (raichoo@googlemail.com)
if version < 600
syntax clear
elseif exists('b:current_syntax')
syn clear
elseif exists("b:current_syntax")
finish
endif
syn sync minlines=50 maxlines=200
syn case ignore
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
" Top-level package keywords
syn match cabalKey '^name:'
syn match cabalKey '^version:'
syn match cabalKey '^cabal-version:'
syn match cabalKey '^build-type:'
syn match cabalKey '^license:'
syn match cabalKey '^license-file:'
syn match cabalKey '^copyright:'
syn match cabalKey '^author:'
syn match cabalKey '^maintainer:'
syn match cabalKey '^stability:'
syn match cabalKey '^homepage:'
syn match cabalKey '^bug-reports:'
syn match cabalKey '^package-url:'
syn match cabalKey '^synopsis:'
syn match cabalKey '^description:'
syn match cabalKey '^category:'
syn match cabalKey '^tested-with:'
syn match cabalKey '^data-files:'
syn match cabalKey '^data-dir:'
syn match cabalKey '^extra-source-files:'
syn match cabalKey '^extra-tmp-files:'
syn region cabalDescription start="^\s*[dD]escription:" end="^\<" keepend
\ contains=
\ cabalEntry,
\ cabalLineComment,
\ cabalDocBulletPoint,
\ cabalDocHeadline,
\ cabalDocNewline,
\ cabalDocCode
" Other keywords
syn match cabalLit '\(:\s*\)\@<=\(true\|false\)'
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
" Library-specifics
syn region cabalLibraryR start='^library\(\s\|$\)\@=' end='^\w' transparent keepend contains=cabalLibrayKey,cabalBuildKey,cabalCondition,cabalOperator
syn match cabalLibraryKey '^library\(\s\|$\)\@='
syn match cabalLibraryKey '\(^\s\+\)\@<=exposed-modules:'
syn match cabalLibraryKey '\(^\s\+\)\@<=exposed:'
" Executable-specifics
syn region cabalExeR start='^executable\s\@=' end='^\w' transparent keepend contains=cabalExeKey,cabalBuildKey,cabalCondition,cabalOperator,cabalBuildableName
syn match cabalExeKey '^executable\s\@='
syn match cabalExeKey '\(^\s\+\)\@<=main-is:'
" Test-specifics
syn region cabalTestR start='^test-suite\s\@=' end='^\w' transparent keepend contains=cabalTestKey,cabalBuildKey,cabalCondition,cabalOperator,cabalBuildableName
syn match cabalTestKey '^test-suite\s\@='
syn match cabalTestKey '\(^\s\+\)\@<=type:'
syn match cabalTestKey '\(^\s\+\)\@<=main-is:'
syn match cabalTestKey '\(^\s\+\)\@<=test-module:'
" Benchmark-specifics
syn region cabalBenchR start='^benchmark\s\@=' end='^\w' transparent keepend contains=cabalBenchKey,cabalBuildKey,cabalCondition,cabalOperator,cabalBuildableName
syn match cabalBenchKey '^benchmark\s\@='
syn match cabalBenchKey '\(^\s\+\)\@<=type:'
syn match cabalBenchKey '\(^\s\+\)\@<=main-is:'
syn match cabalBuildableName '\(^\(^benchmark\|test-suite\|executable\)\s\+\)\@<=\w\+'
" General build info
syn match cabalBuildKey '\(^\s\+\)\@<=default-language:'
syn match cabalBuildKey '\(^\s\+\)\@<=build-depends:'
syn match cabalBuildKey '\(^\s\+\)\@<=other-modules:'
syn match cabalBuildKey '\(^\s\+\)\@<=hs-source-dirs:'
syn match cabalBuildKey '\(^\s\+\)\@<=extensions:'
syn match cabalBuildKey '\(^\s\+\)\@<=build-tools:'
syn match cabalBuildKey '\(^\s\+\)\@<=buildable:'
syn match cabalBuildKey '\(^\s\+\)\@<=ghc-options:'
syn match cabalBuildKey '\(^\s\+\)\@<=ghc-prof-options:'
syn match cabalBuildKey '\(^\s\+\)\@<=ghc-shared-options:'
syn match cabalBuildKey '\(^\s\+\)\@<=hugs-options:'
syn match cabalBuildKey '\(^\s\+\)\@<=nch98-options:'
syn match cabalBuildKey '\(^\s\+\)\@<=includes:'
syn match cabalBuildKey '\(^\s\+\)\@<=install-includes:'
syn match cabalBuildKey '\(^\s\+\)\@<=include-dirs:'
syn match cabalBuildKey '\(^\s\+\)\@<=c-sources:'
syn match cabalBuildKey '\(^\s\+\)\@<=extra-libraries:'
syn match cabalBuildKey '\(^\s\+\)\@<=extra-lib-dirs:'
syn match cabalBuildKey '\(^\s\+\)\@<=cc-options:'
syn match cabalBuildKey '\(^\s\+\)\@<=cpp-options:'
syn match cabalBuildKey '\(^\s\+\)\@<=ld-options:'
syn match cabalBuildKey '\(^\s\+\)\@<=pkgconfig-depends:'
syn match cabalBuildKey '\(^\s\+\)\@<=frameworks:'
syn region cabalFlagR start='^flag\s\@=' end='^\w' transparent keepend contains=cabalFlagKey,cabalCondition,cabalFlag
syn match cabalFlagKey '^flag\s\@='
syn match cabalFlagKey '\(^\s\+\)\@<=description:'
syn match cabalFlagKey '\(^\s\+\)\@<=default:'
syn match cabalFlagKey '\(^\s\+\)\@<=manual:'
syn match cabalFlag '\(flag\s\+\)\@<=\w\+'
syn match cabalFlag '\(flag(\)\@<=\w\+)\@='
syn region cabalSourceR start='^source-repository' end='^\w' transparent keepend contains=cabalSourceKey
syn match cabalSourceKey '^source-repository\s\@='
syn match cabalSourceKey '\(^\s\+\)\@<=type:'
syn match cabalSourceKey '\(^\s\+\)\@<=location:'
syn match cabalSourceKey '\(^\s\+\)\@<=module:'
syn match cabalSourceKey '\(^\s\+\)\@<=branch:'
syn match cabalSourceKey '\(^\s\+\)\@<=tag:'
syn match cabalSourceKey '\(^\s\+\)\@<=subdir:'
syn match cabalCondition '\(^\s\+\)\@<=if\((\|\s\)\@='
syn match cabalCondition '\(^\s\+\)\@<=else\($\|\s\)\@='
syn match cabalCondition '\(^\s\+\)\@<=if\((\|\s\)\@='
syn match cabalCondition '\(^\s\+\)\@<=else\($\|\s\)\@='
syn match cabalOperator '\W\@<=os\((.\+)\)\@='
syn match cabalOperator '\W\@<=arch\((.\+)\)\@='
syn match cabalOperator '\W\@<=impl\((.\+)\)\@='
syn match cabalOperator '\W\@<=flag\((.\+)\)\@='
syn match cabalOperator '\(^\s*--.*\)\@<!\(<\|>\|=\|||\|&&\)'
syn match cabalComment '--.*$' contains=@Spell
if version >= 508 || !exists('did_cabal_syntax_inits')
if version < 508
let did_cabal_syntax_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink cabalBuildableName Structure
HiLink cabalFlag Special
HiLink cabalComment Comment
HiLink cabalCondition Conditional
HiLink cabalSourceKey Keyword
HiLink cabalOperator Operator
HiLink cabalKey Keyword
HiLink cabalLibraryKey Keyword
HiLink cabalTestKey Keyword
HiLink cabalExeKey Keyword
HiLink cabalBenchKey Keyword
HiLink cabalBuildKey Keyword
HiLink cabalFlagKey Keyword
HiLink cabalLit Constant
delcommand HiLink
endif
let b:current_syntax = 'cabal'
let b:current_syntax = "cabal"
endif