mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-15 15:03:50 -05:00
Add all vim filetypes
This commit is contained in:
245
syntax/cabal-2.vim
Normal file
245
syntax/cabal-2.vim
Normal file
@@ -0,0 +1,245 @@
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'cabal') == -1
|
||||
|
||||
" Vim syntax file
|
||||
" Language: Haskell Cabal Build file
|
||||
" Author: Vincent Berthoux <twinside@gmail.com>
|
||||
" Maintainer: Marcin Szamotulski <profunctor@pm.me>
|
||||
" Previous Maintainer: Vincent Berthoux <twinside@gmail.com>
|
||||
" File Types: .cabal
|
||||
" Last Change: 15 May 2018
|
||||
" v1.5: Incorporated changes from
|
||||
" https://github.com/sdiehl/haskell-vim-proto/blob/master/vim/syntax/cabal.vim
|
||||
" Use `syn keyword` instead of `syn match`.
|
||||
" Added cabalStatementRegion to limit matches of keywords, which fixes
|
||||
" the highlighting of description's value.
|
||||
" Added cabalVersionRegion to limit the scope of cabalVersionOperator
|
||||
" and cabalVersion matches.
|
||||
" Added cabalLanguage keyword.
|
||||
" Added calbalTitle, cabalAuthor and cabalMaintainer syntax groups.
|
||||
" Added ! and ^>= operators (calbal 2.0)
|
||||
" Added build-type keywords
|
||||
" v1.4: Add benchmark support, thanks to Simon Meier
|
||||
" v1.3: Updated to the last version of cabal
|
||||
" Added more highlighting for cabal function, true/false
|
||||
" and version number. Also added missing comment highlighting.
|
||||
" Cabal known compiler are highlighted too.
|
||||
"
|
||||
" V1.2: Added cpp-options which was missing. Feature implemented
|
||||
" by GHC, found with a GHC warning, but undocumented.
|
||||
" Whatever...
|
||||
"
|
||||
" v1.1: Fixed operator problems and added ftdetect file
|
||||
" (thanks to Sebastian Schwarz)
|
||||
"
|
||||
" v1.0: Cabal syntax in vimball format
|
||||
" (thanks to Magnus Therning)
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
" this file uses line continuation
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
" set iskeyword for this syntax script
|
||||
syn iskeyword @,48-57,192-255,-
|
||||
|
||||
" Case sensitive matches
|
||||
syn case match
|
||||
|
||||
syn keyword cabalConditional if else
|
||||
syn keyword cabalFunction os arche impl flag
|
||||
syn match cabalComment /--.*$/
|
||||
|
||||
" Case insensitive matches
|
||||
syn case ignore
|
||||
|
||||
syn keyword cabalCategory contained
|
||||
\ executable
|
||||
\ library
|
||||
\ benchmark
|
||||
\ test-suite
|
||||
\ source-repository
|
||||
\ flag
|
||||
\ custom-setup
|
||||
syn match cabalCategoryTitle contained /[^{]*\ze{\?/
|
||||
syn match cabalCategoryRegion
|
||||
\ contains=cabalCategory,cabalCategoryTitle
|
||||
\ nextgroup=cabalCategory skipwhite
|
||||
\ /^\c\s*\(contained\|executable\|library\|benchmark\|test-suite\|source-repository\|flag\|custom-setup\)\+\s*\%(.*$\|$\)/
|
||||
syn keyword cabalTruth true false
|
||||
|
||||
" cabalStatementRegion which limits the scope of cabalStatement keywords, this
|
||||
" way they are not highlighted in description.
|
||||
syn region cabalStatementRegion start=+^\s*\(--\)\@<!\k\+\s*:+ end=+:+
|
||||
syn keyword cabalStatement contained containedin=cabalStatementRegion
|
||||
\ default-language
|
||||
\ default-extensions
|
||||
\ author
|
||||
\ branch
|
||||
\ bug-reports
|
||||
\ build-depends
|
||||
\ build-tools
|
||||
\ build-type
|
||||
\ buildable
|
||||
\ c-sources
|
||||
\ cabal-version
|
||||
\ category
|
||||
\ cc-options
|
||||
\ copyright
|
||||
\ cpp-options
|
||||
\ data-dir
|
||||
\ data-files
|
||||
\ default
|
||||
\ description
|
||||
\ executable
|
||||
\ exposed-modules
|
||||
\ exposed
|
||||
\ extensions
|
||||
\ extra-tmp-files
|
||||
\ extra-doc-files
|
||||
\ extra-lib-dirs
|
||||
\ extra-libraries
|
||||
\ extra-source-files
|
||||
\ exta-tmp-files
|
||||
\ for example
|
||||
\ frameworks
|
||||
\ ghc-options
|
||||
\ ghc-prof-options
|
||||
\ ghc-shared-options
|
||||
\ homepage
|
||||
\ hs-source-dirs
|
||||
\ hugs-options
|
||||
\ include-dirs
|
||||
\ includes
|
||||
\ install-includes
|
||||
\ ld-options
|
||||
\ license
|
||||
\ license-file
|
||||
\ location
|
||||
\ main-is
|
||||
\ maintainer
|
||||
\ manual
|
||||
\ module
|
||||
\ name
|
||||
\ nhc98-options
|
||||
\ other-extensions
|
||||
\ other-modules
|
||||
\ package-url
|
||||
\ pkgconfig-depends
|
||||
\ setup-depends
|
||||
\ stability
|
||||
\ subdir
|
||||
\ synopsis
|
||||
\ tag
|
||||
\ tested-with
|
||||
\ type
|
||||
\ version
|
||||
\ virtual-modules
|
||||
|
||||
" operators and version operators
|
||||
syn match cabalOperator /&&\|||\|!/
|
||||
syn match cabalVersionOperator contained
|
||||
\ /!\|==\|\^\?>=\|<=\|<\|>/
|
||||
" match version: `[%]\@<!` is to exclude `%20` in http addresses.
|
||||
syn match cabalVersion contained
|
||||
\ /[%$_-]\@<!\<\d\+\%(\.\d\+\)*\%(\.\*\)\?\>/
|
||||
" cabalVersionRegion which limits the scope of cabalVersion pattern.
|
||||
syn match cabalVersionRegionA
|
||||
\ contains=cabalVersionOperator,cabalVersion
|
||||
\ keepend
|
||||
\ /\%(==\|\^\?>=\|<=\|<\|>\)\s*\d\+\%(\.\d\+\)*\%(\.\*\)\?\>/
|
||||
" version inside `version: ...`
|
||||
syn match cabalVersionRegionB
|
||||
\ contains=cabalStatementRegion,cabalVersionOperator,cabalVersion
|
||||
\ /^\s*\%(cabal-\)\?version\s*:.*$/
|
||||
|
||||
syn keyword cabalLanguage Haskell98 Haskell2010
|
||||
|
||||
" title region
|
||||
syn match cabalName contained /:\@<=.*/
|
||||
syn match cabalNameRegion
|
||||
\ contains=cabalStatementRegion,cabalName
|
||||
\ nextgroup=cabalStatementRegion
|
||||
\ oneline
|
||||
\ /^\c\s*name\s*:.*$/
|
||||
|
||||
" author region
|
||||
syn match cabalAuthor contained /:\@<=.*/
|
||||
syn match cabalAuthorRegion
|
||||
\ contains=cabalStatementRegion,cabalStatement,cabalAuthor
|
||||
\ nextgroup=cabalStatementRegion
|
||||
\ oneline
|
||||
\ /^\c\s*author\s*:.*$/
|
||||
|
||||
" maintainer region
|
||||
syn match cabalMaintainer contained /:\@<=.*/
|
||||
syn match cabalMaintainerRegion
|
||||
\ contains=cabalStatementRegion,cabalStatement,cabalMaintainer
|
||||
\ nextgroup=cabalStatementRegion
|
||||
\ oneline
|
||||
\ /^\c\s*maintainer\s*:.*$/
|
||||
|
||||
" license region
|
||||
syn match cabalLicense contained /:\@<=.*/
|
||||
syn match cabalLicenseRegion
|
||||
\ contains=cabalStatementRegion,cabalStatement,cabalLicense
|
||||
\ nextgroup=cabalStatementRegion
|
||||
\ oneline
|
||||
\ /^\c\s*license\s*:.*$/
|
||||
|
||||
" license-file region
|
||||
syn match cabalLicenseFile contained /:\@<=.*/
|
||||
syn match cabalLicenseFileRegion
|
||||
\ contains=cabalStatementRegion,cabalStatement,cabalLicenseFile
|
||||
\ nextgroup=cabalStatementRegion
|
||||
\ oneline
|
||||
\ /^\c\s*license-file\s*:.*$/
|
||||
|
||||
" tested-with region with compilers and versions
|
||||
syn keyword cabalCompiler contained ghc nhc yhc hugs hbc helium jhc lhc
|
||||
syn match cabalTestedWithRegion
|
||||
\ contains=cabalStatementRegion,cabalStatement,cabalCompiler,cabalVersionRegionA
|
||||
\ nextgroup=cabalStatementRegion
|
||||
\ oneline
|
||||
\ /^\c\s*tested-with\s*:.*$/
|
||||
|
||||
" build type keywords
|
||||
syn keyword cabalBuildType contained
|
||||
\ simple custom configure
|
||||
syn match cabalBuildTypeRegion
|
||||
\ contains=cabalStatementRegion,cabalStatement,cabalBuildType
|
||||
\ nextgroup=cabalStatementRegion
|
||||
\ /^\c\s*build-type\s*:.*$/
|
||||
|
||||
" Define the default highlighting.
|
||||
" Only when an item doesn't have highlighting yet
|
||||
hi def link cabalName Title
|
||||
hi def link cabalAuthor Normal
|
||||
hi def link cabalMaintainer Normal
|
||||
hi def link cabalCategoryTitle Title
|
||||
hi def link cabalLicense Normal
|
||||
hi def link cabalLicenseFile Normal
|
||||
hi def link cabalBuildType Keyword
|
||||
hi def link cabalVersion Number
|
||||
hi def link cabalTruth Boolean
|
||||
hi def link cabalComment Comment
|
||||
hi def link cabalStatement Statement
|
||||
hi def link cabalLanguage Type
|
||||
hi def link cabalCategory Type
|
||||
hi def link cabalFunction Function
|
||||
hi def link cabalConditional Conditional
|
||||
hi def link cabalOperator Operator
|
||||
hi def link cabalVersionOperator Operator
|
||||
hi def link cabalCompiler Constant
|
||||
|
||||
let b:current_syntax = "cabal"
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet! s:cpo_save
|
||||
|
||||
" vim: ts=8
|
||||
|
||||
endif
|
||||
Reference in New Issue
Block a user