Merge pull request #14048 from saadparwaiz1/runtime/haskell

Update Runtime Files For Haskell
This commit is contained in:
Jan Edmund Lazo 2021-03-04 22:48:16 -05:00 committed by GitHub
commit 8f4b9b8b7d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 136 additions and 44 deletions

View File

@ -2,7 +2,7 @@
" Language: Haskell " Language: Haskell
" Maintainer: Daniel Campoverde <alx@sillybytes.net> " Maintainer: Daniel Campoverde <alx@sillybytes.net>
" URL: https://github.com/alx741/haskellcomplete.vim " URL: https://github.com/alx741/haskellcomplete.vim
" Last Change: 2018 Aug 26 " Last Change: 2019 May 14
" Usage: setlocal omnifunc=haskellcomplete#Complete " Usage: setlocal omnifunc=haskellcomplete#Complete
@ -63,6 +63,7 @@ function! haskellcomplete#Complete(findstart, base)
call add(l:matches, extension) call add(l:matches, extension)
endif endif
endfor endfor
let b:completingLangExtension = 0
return l:matches return l:matches
endif endif
@ -78,6 +79,7 @@ function! haskellcomplete#Complete(findstart, base)
call add(l:matches, flag) call add(l:matches, flag)
endif endif
endfor endfor
let b:completingOptionsGHC = 0
return l:matches return l:matches
endif endif
@ -93,6 +95,7 @@ function! haskellcomplete#Complete(findstart, base)
call add(l:matches, module) call add(l:matches, module)
endif endif
endfor endfor
let b:completingModule = 0
return l:matches return l:matches
endif endif

View File

@ -4,7 +4,7 @@
" Maintainer: Marcin Szamotulski <profunctor@pm.me> " Maintainer: Marcin Szamotulski <profunctor@pm.me>
" Previous Maintainer: Vincent Berthoux <twinside@gmail.com> " Previous Maintainer: Vincent Berthoux <twinside@gmail.com>
" File Types: .cabal " File Types: .cabal
" Last Change: 15 May 2018 " Last Change: 21 Nov 2020
" v1.5: Incorporated changes from " v1.5: Incorporated changes from
" https://github.com/sdiehl/haskell-vim-proto/blob/master/vim/syntax/cabal.vim " https://github.com/sdiehl/haskell-vim-proto/blob/master/vim/syntax/cabal.vim
" Use `syn keyword` instead of `syn match`. " Use `syn keyword` instead of `syn match`.
@ -62,11 +62,12 @@ syn keyword cabalCategory contained
\ source-repository \ source-repository
\ flag \ flag
\ custom-setup \ custom-setup
\ common
syn match cabalCategoryTitle contained /[^{]*\ze{\?/ syn match cabalCategoryTitle contained /[^{]*\ze{\?/
syn match cabalCategoryRegion syn match cabalCategoryRegion
\ contains=cabalCategory,cabalCategoryTitle \ contains=cabalCategory,cabalCategoryTitle
\ nextgroup=cabalCategory skipwhite \ nextgroup=cabalCategory skipwhite
\ /^\c\s*\(contained\|executable\|library\|benchmark\|test-suite\|source-repository\|flag\|custom-setup\)\+\s*\%(.*$\|$\)/ \ /^\c\s*\(contained\|executable\|library\|benchmark\|test-suite\|source-repository\|flag\|custom-setup\|common\)\+\s*\%(.*$\|$\)/
syn keyword cabalTruth true false syn keyword cabalTruth true false
" cabalStatementRegion which limits the scope of cabalStatement keywords, this " cabalStatementRegion which limits the scope of cabalStatement keywords, this
@ -76,10 +77,14 @@ syn keyword cabalStatement contained containedin=cabalStatementRegion
\ default-language \ default-language
\ default-extensions \ default-extensions
\ author \ author
\ autogen-modules
\ asm-sources
\ asm-options
\ branch \ branch
\ bug-reports \ bug-reports
\ build-depends \ build-depends
\ build-tools \ build-tools
\ build-tools-depends
\ build-type \ build-type
\ buildable \ buildable
\ c-sources \ c-sources
@ -87,32 +92,46 @@ syn keyword cabalStatement contained containedin=cabalStatementRegion
\ category \ category
\ cc-options \ cc-options
\ copyright \ copyright
\ cmm-sources
\ cmm-options
\ cpp-options \ cpp-options
\ cxx-sources
\ data-dir \ data-dir
\ data-files \ data-files
\ default \ default
\ default-extensions
\ description \ description
\ executable \ executable
\ exposed-modules \ exposed-modules
\ exposed \ exposed
\ extensions \ extensions
\ extra-tmp-files \ extra-bundled-libraries
\ extra-doc-files \ extra-doc-files
\ extra-dynamic-library-flavours
\ extra-framework-dirs
\ extra-ghci-libraries
\ extra-lib-dirs \ extra-lib-dirs
\ extra-libraries \ extra-libraries
\ extra-library-flavours
\ extra-source-files \ extra-source-files
\ exta-tmp-files \ extra-tmp-files
\ for example \ for example
\ frameworks \ frameworks
\ ghc-options \ ghc-options
\ ghc-prof-options \ ghc-prof-options
\ ghc-shared-options \ ghc-shared-options
\ ghcjs-options
\ ghcjs-prof-options
\ ghcjs-shared-options
\ homepage \ homepage
\ hs-source-dir
\ hs-source-dirs \ hs-source-dirs
\ hugs-options \ hugs-options
\ import
\ include-dirs \ include-dirs
\ includes \ includes
\ install-includes \ install-includes
\ js-sources
\ ld-options \ ld-options
\ license \ license
\ license-file \ license-file
@ -120,10 +139,13 @@ syn keyword cabalStatement contained containedin=cabalStatementRegion
\ main-is \ main-is
\ maintainer \ maintainer
\ manual \ manual
\ mixins
\ module \ module
\ name \ name
\ nhc98-options \ nhc98-options
\ other-extensions \ other-extensions
\ other-language
\ other-languages
\ other-modules \ other-modules
\ package-url \ package-url
\ pkgconfig-depends \ pkgconfig-depends

View File

@ -0,0 +1,30 @@
" Vim syntax file
" Language: Cabal Config
" Maintainer: profunctor@pm.me
" Last Change: Marcin Szamotulski
" Original Author: Marcin Szamotulski
if exists("b:current_syntax")
finish
endif
syn match CabalConfigSection /^\S[[:alpha:]]\+\%(-[[:alpha:]]\+\)*[^:]*$/
syn region CabalConfigRegion matchgroup=CabalConfigKey start=/^\s*[[:alpha:]]\+\%(-[[:alpha:]]\+\)*:/ matchgroup=NONE end=/$/ contains=CabalConfigSeparator,CabalConfigKeyword,CabalConfigPath keepend
syn match CabalConfigComment /^\s*--.*$/
syn match CabalConfigValue /.*$/ contained
syn match CabalConfigKey /[[:alpha:]]\+\%(-[[:alpha:]]\+\)*\ze:/
syn keyword CabalConfigSeparator : contained
syn match CabalConfigVariable /\$[[:alpha:]]\+/
syn keyword CabalConfigKeyword True False ghc
syn match CabalConfigPath /\%([[:alpha:]]\+:\)\?\%(\/[[:print:]]\+\)\+/
hi def link CabalConfigComment Comment
hi def link CabalConfigSection Title
hi def link CabalConfigKey Statement
hi def link CabalConfigSeparator NonText
hi def link CabalConfigValue Normal
hi def link CabalConfigVariable Identifier
hi def link CabalConfigKeyword Keyword
hi def link CabalConfigPath Directory
let b:current_syntax = "cabal.config"

View File

@ -0,0 +1,28 @@
" Vim syntax file
" Language: Cabal Project
" Maintainer: profunctor@pm.me
" Last Change: Marcin Szamotulski
" Original Author: Marcin Szamotulski
if exists("b:current_syntax")
finish
endif
syn match CabalProjectComment /^\s*--.*/ contains=@Spell
syn match CabalProjectField /^\w\%(\w\|-\)\+/ contains=@NoSpell
syn keyword CabalProjectBoolean true false True False
syn keyword CabalProjectCompiler ghc ghcjs jhc lhc uhc haskell-suite
syn match CabalProjectNat /\<\d\+\>/
syn keyword CabalProjectJobs $ncpus
syn keyword CabalProjectProfilingLevel default none exported-functions toplevel-functions all-functions
hi def link CabalProjectComment Comment
hi def link CabalProjectField Statement
hi def link CabalProjectBoolean Boolean
hi def link CabalProjectCompiler Identifier
hi def link CabalProjectNat Number
hi def link CabalProjectJobs Number
hi def link CabalProjectProfilingLevel Statement
let b:current_syntax = "cabal.project"

View File

@ -1,7 +1,7 @@
" Vim syntax file " Vim syntax file
" Language: Haskell " Language: Haskell
" Maintainer: Haskell Cafe mailinglist <haskell-cafe@haskell.org> " Maintainer: Haskell Cafe mailinglist <haskell-cafe@haskell.org>
" Last Change: 2018 Mar 29 by Marcin Szamotulski " Last Change: 2020 Oct 4 by Marcin Szamotulski <profunctor@pm.me>
" Original Author: John Williams <jrw@pobox.com> " Original Author: John Williams <jrw@pobox.com>
" "
" Thanks to Ryan Crumley for suggestions and John Meacham for " Thanks to Ryan Crumley for suggestions and John Meacham for
@ -38,8 +38,8 @@ if exists("b:current_syntax")
endif endif
" (Qualified) identifiers (no default highlighting) " (Qualified) identifiers (no default highlighting)
syn match ConId "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=\<[A-Z][a-zA-Z0-9_']*\>" contains=@NoSpell syn match ConId "\(\<[A-Z][a-zA-Z0-9_']*\.\)*\<[A-Z][a-zA-Z0-9_']*\>" contains=@NoSpell
syn match VarId "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=\<[a-z][a-zA-Z0-9_']*\>" contains=@NoSpell syn match VarId "\(\<[A-Z][a-zA-Z0-9_']*\.\)*\<[a-z][a-zA-Z0-9_']*\>" contains=@NoSpell
" Infix operators--most punctuation characters and any (qualified) identifier " Infix operators--most punctuation characters and any (qualified) identifier
" enclosed in `backquotes`. An operator starting with : is a constructor, " enclosed in `backquotes`. An operator starting with : is a constructor,
@ -49,8 +49,11 @@ syn match hsConSym "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=:[-!#$%&\*\+./<=>\?@\\^|~:]*"
syn match hsVarSym "`\(\<[A-Z][a-zA-Z0-9_']*\.\)\=[a-z][a-zA-Z0-9_']*`" syn match hsVarSym "`\(\<[A-Z][a-zA-Z0-9_']*\.\)\=[a-z][a-zA-Z0-9_']*`"
syn match hsConSym "`\(\<[A-Z][a-zA-Z0-9_']*\.\)\=[A-Z][a-zA-Z0-9_']*`" syn match hsConSym "`\(\<[A-Z][a-zA-Z0-9_']*\.\)\=[A-Z][a-zA-Z0-9_']*`"
" (Non-qualified) identifiers which start with # are labels
syn match hsLabel "#[a-z][a-zA-Z0-9_']*\>"
" Reserved symbols--cannot be overloaded. " Reserved symbols--cannot be overloaded.
syn match hsDelimiter "(\|)\|\[\|\]\|,\|;\|_\|{\|}" syn match hsDelimiter "(\|)\|\[\|\]\|,\|;\|{\|}"
" Strings and constants " Strings and constants
syn match hsSpecialChar contained "\\\([0-9]\+\|o[0-7]\+\|x[0-9a-fA-F]\+\|[\"\\'&\\abfnrtv]\|^[A-Z^_\[\\\]]\)" syn match hsSpecialChar contained "\\\([0-9]\+\|o[0-7]\+\|x[0-9a-fA-F]\+\|[\"\\'&\\abfnrtv]\|^[A-Z^_\[\\\]]\)"
@ -62,37 +65,41 @@ syn match hsCharacter "^'\([^\\]\|\\[^']\+\|\\'\)'" contains=hsSpecialChar,hs
syn match hsNumber "\v<[0-9]%(_*[0-9])*>|<0[xX]_*[0-9a-fA-F]%(_*[0-9a-fA-F])*>|<0[oO]_*%(_*[0-7])*>|<0[bB]_*[01]%(_*[01])*>" syn match hsNumber "\v<[0-9]%(_*[0-9])*>|<0[xX]_*[0-9a-fA-F]%(_*[0-9a-fA-F])*>|<0[oO]_*%(_*[0-7])*>|<0[bB]_*[01]%(_*[01])*>"
syn match hsFloat "\v<[0-9]%(_*[0-9])*\.[0-9]%(_*[0-9])*%(_*[eE][-+]?[0-9]%(_*[0-9])*)?>|<[0-9]%(_*[0-9])*_*[eE][-+]?[0-9]%(_*[0-9])*>|<0[xX]_*[0-9a-fA-F]%(_*[0-9a-fA-F])*\.[0-9a-fA-F]%(_*[0-9a-fA-F])*%(_*[pP][-+]?[0-9]%(_*[0-9])*)?>|<0[xX]_*[0-9a-fA-F]%(_*[0-9a-fA-F])*_*[pP][-+]?[0-9]%(_*[0-9])*>" syn match hsFloat "\v<[0-9]%(_*[0-9])*\.[0-9]%(_*[0-9])*%(_*[eE][-+]?[0-9]%(_*[0-9])*)?>|<[0-9]%(_*[0-9])*_*[eE][-+]?[0-9]%(_*[0-9])*>|<0[xX]_*[0-9a-fA-F]%(_*[0-9a-fA-F])*\.[0-9a-fA-F]%(_*[0-9a-fA-F])*%(_*[pP][-+]?[0-9]%(_*[0-9])*)?>|<0[xX]_*[0-9a-fA-F]%(_*[0-9a-fA-F])*_*[pP][-+]?[0-9]%(_*[0-9])*>"
" Keyword definitions. These must be patterns instead of keywords " Keyword definitions.
" because otherwise they would match as keywords at the start of a syn keyword hsModule module
" "literate" comment (see lhs.vim). syn match hsImportGroup "\<import\>.*" contains=hsImport,hsImportModuleName,hsImportMod,hsLineComment,hsBlockComment,hsImportList,@NoSpell nextgroup=hsImport
syn match hsModule "\<module\>" syn keyword hsImport import contained nextgroup=hsImportModuleName
syn match hsImport "\<import\>.*"he=s+6 contains=hsImportMod,hsLineComment,hsBlockComment,@NoSpell syn match hsImportModuleName '\<[A-Z][A-Za-z.]*' contained
syn match hsImportMod contained "\<\(as\|qualified\|hiding\)\>" contains=@NoSpell syn region hsImportList start='(' skip='([^)]\{-})' end=')' keepend contained contains=ConId,VarId,hsDelimiter,hsBlockComment,hsTypedef,@NoSpell
syn match hsInfix "\<\(infix\|infixl\|infixr\)\>"
syn match hsStructure "\<\(class\|data\|deriving\|instance\|default\|where\)\>" syn keyword hsImportMod contained as qualified hiding
syn match hsTypedef "\<\(type\|newtype\)\>" syn keyword hsInfix infix infixl infixr
syn match hsStatement "\<\(do\|case\|of\|let\|in\)\>" syn keyword hsStructure class data deriving instance default where
syn match hsConditional "\<\(if\|then\|else\)\>" syn keyword hsTypedef type
syn keyword hsNewtypedef newtype
syn keyword hsTypeFam family
syn keyword hsStatement mdo do case of let in
syn keyword hsConditional if then else
" Not real keywords, but close. " Not real keywords, but close.
if exists("hs_highlight_boolean") if exists("hs_highlight_boolean")
" Boolean constants from the standard prelude. " Boolean constants from the standard prelude.
syn match hsBoolean "\<\(True\|False\)\>" syn keyword hsBoolean True False
endif endif
if exists("hs_highlight_types") if exists("hs_highlight_types")
" Primitive types from the standard prelude and libraries. " Primitive types from the standard prelude and libraries.
syn match hsType "\<\(Int\|Integer\|Char\|Bool\|Float\|Double\|IO\|Void\|Addr\|Array\|String\)\>" syn keyword hsType Int Integer Char Bool Float Double IO Void Addr Array String
endif endif
if exists("hs_highlight_more_types") if exists("hs_highlight_more_types")
" Types from the standard prelude libraries. " Types from the standard prelude libraries.
syn match hsType "\<\(Maybe\|Either\|Ratio\|Complex\|Ordering\|IOError\|IOResult\|ExitCode\)\>" syn keyword hsType Maybe Either Ratio Complex Ordering IOError IOResult ExitCode
syn match hsMaybe "\<Nothing\>" syn keyword hsMaybe Nothing
syn match hsExitCode "\<\(ExitSuccess\)\>" syn keyword hsExitCode ExitSuccess
syn match hsOrdering "\<\(GT\|LT\|EQ\)\>" syn keyword hsOrdering GT LT EQ
endif endif
if exists("hs_highlight_debug") if exists("hs_highlight_debug")
" Debugging functions from the standard prelude. " Debugging functions from the standard prelude.
syn match hsDebug "\<\(undefined\|error\|trace\)\>" syn keyword hsDebug undefined error trace
endif endif
@ -136,9 +143,11 @@ hi def link hsStatement Statement
hi def link hsConditional Conditional hi def link hsConditional Conditional
hi def link hsSpecialChar SpecialChar hi def link hsSpecialChar SpecialChar
hi def link hsTypedef Typedef hi def link hsTypedef Typedef
hi def link hsNewtypedef Typedef
hi def link hsVarSym hsOperator hi def link hsVarSym hsOperator
hi def link hsConSym hsOperator hi def link hsConSym hsOperator
hi def link hsOperator Operator hi def link hsOperator Operator
hi def link hsTypeFam Structure
if exists("hs_highlight_delimiters") if exists("hs_highlight_delimiters")
" Some people find this highlighting distracting. " Some people find this highlighting distracting.
hi def link hsDelimiter Delimiter hi def link hsDelimiter Delimiter
@ -160,6 +169,7 @@ hi def link hsMaybe hsEnumConst
hi def link hsOrdering hsEnumConst hi def link hsOrdering hsEnumConst
hi def link hsEnumConst Constant hi def link hsEnumConst Constant
hi def link hsDebug Debug hi def link hsDebug Debug
hi def link hsLabel Special
hi def link cCppString hsString hi def link cCppString hsString
hi def link cCommentStart hsComment hi def link cCommentStart hsComment
@ -176,7 +186,6 @@ hi def link cCppSkip cCppOut
hi def link cCppOut2 cCppOut hi def link cCppOut2 cCppOut
hi def link cCppOut Comment hi def link cCppOut Comment
let b:current_syntax = "haskell" let b:current_syntax = "haskell"
" Options for vi: ts=8 sw=2 sts=2 nowrap noexpandtab ft=vim " Options for vi: ts=8 sw=2 sts=2 nowrap noexpandtab ft=vim