Update runtime files
This commit is contained in:
105
runtime/syntax/elm.vim
Normal file
105
runtime/syntax/elm.vim
Normal file
@ -0,0 +1,105 @@
|
||||
" Vim syntax file
|
||||
" Language: Elm
|
||||
" Maintainer: Andreas Scharf <as@99n.de>
|
||||
" Original Author: Joseph Hager <ajhager@gmail.com>
|
||||
" Copyright: Joseph Hager <ajhager@gmail.com>
|
||||
" License: BSD3
|
||||
" Latest Revision: 2020-05-29
|
||||
|
||||
if exists('b:current_syntax')
|
||||
finish
|
||||
endif
|
||||
|
||||
" Keywords
|
||||
syn keyword elmConditional else if of then case
|
||||
syn keyword elmAlias alias
|
||||
syn keyword elmTypedef contained type port
|
||||
syn keyword elmImport exposing as import module where
|
||||
|
||||
" Operators
|
||||
" elm/core
|
||||
syn match elmOperator contained "\(<|\||>\|||\|&&\|==\|/=\|<=\|>=\|++\|::\|+\|-\|*\|/\|//\|^\|<>\|>>\|<<\|<\|>\|%\)"
|
||||
" elm/parser
|
||||
syn match elmOperator contained "\(|.\||=\)"
|
||||
" elm/url
|
||||
syn match elmOperator contained "\(</>\|<?>\)"
|
||||
|
||||
" Types
|
||||
syn match elmType "\<[A-Z][0-9A-Za-z_-]*"
|
||||
syn keyword elmNumberType number
|
||||
|
||||
" Modules
|
||||
syn match elmModule "\<\([A-Z][0-9A-Za-z_'-\.]*\)\+\.[A-Za-z]"me=e-2
|
||||
syn match elmModule "^\(module\|import\)\s\+[A-Z][0-9A-Za-z_'-\.]*\(\s\+as\s\+[A-Z][0-9A-Za-z_'-\.]*\)\?\(\s\+exposing\)\?" contains=elmImport
|
||||
|
||||
" Delimiters
|
||||
syn match elmDelimiter "[,;]"
|
||||
syn match elmBraces "[()[\]{}]"
|
||||
|
||||
" Functions
|
||||
syn match elmTupleFunction "\((,\+)\)"
|
||||
|
||||
" Comments
|
||||
syn keyword elmTodo TODO FIXME XXX contained
|
||||
syn match elmLineComment "--.*" contains=elmTodo,@spell
|
||||
syn region elmComment matchgroup=elmComment start="{-|\=" end="-}" contains=elmTodo,elmComment,@spell fold
|
||||
|
||||
" Strings
|
||||
syn match elmStringEscape "\\u[0-9a-fA-F]\{4}" contained
|
||||
syn match elmStringEscape "\\[nrfvbt\\\"]" contained
|
||||
syn region elmString start="\"" skip="\\\"" end="\"" contains=elmStringEscape,@spell
|
||||
syn region elmTripleString start="\"\"\"" skip="\\\"" end="\"\"\"" contains=elmStringEscape,@spell
|
||||
syn match elmChar "'[^'\\]'\|'\\.'\|'\\u[0-9a-fA-F]\{4}'"
|
||||
|
||||
" Lambda
|
||||
syn region elmLambdaFunc start="\\"hs=s+1 end="->"he=e-2
|
||||
|
||||
" Debug
|
||||
syn match elmDebug "Debug.\(log\|todo\|toString\)"
|
||||
|
||||
" Numbers
|
||||
syn match elmInt "-\?\<\d\+\>"
|
||||
syn match elmFloat "-\?\(\<\d\+\.\d\+\>\)"
|
||||
|
||||
" Identifiers
|
||||
syn match elmTopLevelDecl "^\s*[a-zA-Z][a-zA-z0-9_]*\('\)*\s\+:\(\r\n\|\r\|\n\|\s\)\+" contains=elmOperator
|
||||
syn match elmFuncName /^\l\w*/
|
||||
|
||||
" Folding
|
||||
syn region elmTopLevelTypedef start="type" end="\n\(\n\n\)\@=" contains=ALL fold
|
||||
syn region elmTopLevelFunction start="^[a-zA-Z].\+\n[a-zA-Z].\+=" end="^\(\n\+\)\@=" contains=ALL fold
|
||||
syn region elmCaseBlock matchgroup=elmCaseBlockDefinition start="^\z\(\s\+\)\<case\>" end="^\z1\@!\W\@=" end="\(\n\n\z1\@!\)\@=" end="\n\z1\@!\(\n\n\)\@=" contains=ALL fold
|
||||
syn region elmCaseItemBlock start="^\z\(\s\+\).\+->$" end="^\z1\@!\W\@=" end="\(\n\n\z1\@!\)\@=" end="\(\n\z1\S\)\@=" contains=ALL fold
|
||||
syn region elmLetBlock matchgroup=elmLetBlockDefinition start="\<let\>" end="\<in\>" contains=ALL fold
|
||||
|
||||
hi def link elmFuncName Function
|
||||
hi def link elmCaseBlockDefinition Conditional
|
||||
hi def link elmCaseBlockItemDefinition Conditional
|
||||
hi def link elmLetBlockDefinition TypeDef
|
||||
hi def link elmTopLevelDecl Function
|
||||
hi def link elmTupleFunction Normal
|
||||
hi def link elmTodo Todo
|
||||
hi def link elmComment Comment
|
||||
hi def link elmLineComment Comment
|
||||
hi def link elmString String
|
||||
hi def link elmTripleString String
|
||||
hi def link elmChar String
|
||||
hi def link elmStringEscape Special
|
||||
hi def link elmInt Number
|
||||
hi def link elmFloat Float
|
||||
hi def link elmDelimiter Delimiter
|
||||
hi def link elmBraces Delimiter
|
||||
hi def link elmTypedef TypeDef
|
||||
hi def link elmImport Include
|
||||
hi def link elmConditional Conditional
|
||||
hi def link elmAlias Delimiter
|
||||
hi def link elmOperator Operator
|
||||
hi def link elmType Type
|
||||
hi def link elmNumberType Identifier
|
||||
hi def link elmLambdaFunc Function
|
||||
hi def link elmDebug Debug
|
||||
hi def link elmModule Type
|
||||
|
||||
syn sync minlines=500
|
||||
|
||||
let b:current_syntax = 'elm'
|
||||
Reference in New Issue
Block a user