diff options
author | Adam Stankiewicz <sheerun@sher.pl> | 2015-07-18 23:22:55 +0200 |
---|---|---|
committer | Adam Stankiewicz <sheerun@sher.pl> | 2015-07-18 23:22:55 +0200 |
commit | cf1e53bc39c96b9f5586a68efa118a13c615da13 (patch) | |
tree | eb6c96a71098df7fc2a38df4606f32a3bfcc925e /syntax/cabal.vim | |
parent | 92ab75408df8bff49bb29e113b3cc159d1ac3105 (diff) | |
download | vim-polyglot-cf1e53bc39c96b9f5586a68efa118a13c615da13.tar.gz vim-polyglot-cf1e53bc39c96b9f5586a68efa118a13c615da13.zip |
Changed haskell provider to raichoo/haskell-vim, closes #63
Diffstat (limited to 'syntax/cabal.vim')
-rw-r--r-- | syntax/cabal.vim | 188 |
1 files changed, 46 insertions, 142 deletions
diff --git a/syntax/cabal.vim b/syntax/cabal.vim index f0ede997..7a48a638 100644 --- a/syntax/cabal.vim +++ b/syntax/cabal.vim @@ -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 - -" 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:' - -" Other keywords -syn match cabalLit '\(:\s*\)\@<=\(true\|false\)' - -" 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' +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 |