Mercurial > vim
comparison runtime/syntax/elm.vim @ 20753:661eb972cb22
Update runtime files
Commit: https://github.com/vim/vim/commit/acc224064033e5cea21ef7f1eefb356ca06ff11d
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jun 7 21:07:18 2020 +0200
Update runtime files
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 07 Jun 2020 21:15:04 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
20752:47b5de84b7f7 | 20753:661eb972cb22 |
---|---|
1 " Vim syntax file | |
2 " Language: Elm | |
3 " Maintainer: Andreas Scharf <as@99n.de> | |
4 " Original Author: Joseph Hager <ajhager@gmail.com> | |
5 " Copyright: Joseph Hager <ajhager@gmail.com> | |
6 " License: BSD3 | |
7 " Latest Revision: 2020-05-29 | |
8 | |
9 if exists('b:current_syntax') | |
10 finish | |
11 endif | |
12 | |
13 " Keywords | |
14 syn keyword elmConditional else if of then case | |
15 syn keyword elmAlias alias | |
16 syn keyword elmTypedef contained type port | |
17 syn keyword elmImport exposing as import module where | |
18 | |
19 " Operators | |
20 " elm/core | |
21 syn match elmOperator contained "\(<|\||>\|||\|&&\|==\|/=\|<=\|>=\|++\|::\|+\|-\|*\|/\|//\|^\|<>\|>>\|<<\|<\|>\|%\)" | |
22 " elm/parser | |
23 syn match elmOperator contained "\(|.\||=\)" | |
24 " elm/url | |
25 syn match elmOperator contained "\(</>\|<?>\)" | |
26 | |
27 " Types | |
28 syn match elmType "\<[A-Z][0-9A-Za-z_-]*" | |
29 syn keyword elmNumberType number | |
30 | |
31 " Modules | |
32 syn match elmModule "\<\([A-Z][0-9A-Za-z_'-\.]*\)\+\.[A-Za-z]"me=e-2 | |
33 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 | |
34 | |
35 " Delimiters | |
36 syn match elmDelimiter "[,;]" | |
37 syn match elmBraces "[()[\]{}]" | |
38 | |
39 " Functions | |
40 syn match elmTupleFunction "\((,\+)\)" | |
41 | |
42 " Comments | |
43 syn keyword elmTodo TODO FIXME XXX contained | |
44 syn match elmLineComment "--.*" contains=elmTodo,@spell | |
45 syn region elmComment matchgroup=elmComment start="{-|\=" end="-}" contains=elmTodo,elmComment,@spell fold | |
46 | |
47 " Strings | |
48 syn match elmStringEscape "\\u[0-9a-fA-F]\{4}" contained | |
49 syn match elmStringEscape "\\[nrfvbt\\\"]" contained | |
50 syn region elmString start="\"" skip="\\\"" end="\"" contains=elmStringEscape,@spell | |
51 syn region elmTripleString start="\"\"\"" skip="\\\"" end="\"\"\"" contains=elmStringEscape,@spell | |
52 syn match elmChar "'[^'\\]'\|'\\.'\|'\\u[0-9a-fA-F]\{4}'" | |
53 | |
54 " Lambda | |
55 syn region elmLambdaFunc start="\\"hs=s+1 end="->"he=e-2 | |
56 | |
57 " Debug | |
58 syn match elmDebug "Debug.\(log\|todo\|toString\)" | |
59 | |
60 " Numbers | |
61 syn match elmInt "-\?\<\d\+\>" | |
62 syn match elmFloat "-\?\(\<\d\+\.\d\+\>\)" | |
63 | |
64 " Identifiers | |
65 syn match elmTopLevelDecl "^\s*[a-zA-Z][a-zA-z0-9_]*\('\)*\s\+:\(\r\n\|\r\|\n\|\s\)\+" contains=elmOperator | |
66 syn match elmFuncName /^\l\w*/ | |
67 | |
68 " Folding | |
69 syn region elmTopLevelTypedef start="type" end="\n\(\n\n\)\@=" contains=ALL fold | |
70 syn region elmTopLevelFunction start="^[a-zA-Z].\+\n[a-zA-Z].\+=" end="^\(\n\+\)\@=" contains=ALL fold | |
71 syn region elmCaseBlock matchgroup=elmCaseBlockDefinition start="^\z\(\s\+\)\<case\>" end="^\z1\@!\W\@=" end="\(\n\n\z1\@!\)\@=" end="\n\z1\@!\(\n\n\)\@=" contains=ALL fold | |
72 syn region elmCaseItemBlock start="^\z\(\s\+\).\+->$" end="^\z1\@!\W\@=" end="\(\n\n\z1\@!\)\@=" end="\(\n\z1\S\)\@=" contains=ALL fold | |
73 syn region elmLetBlock matchgroup=elmLetBlockDefinition start="\<let\>" end="\<in\>" contains=ALL fold | |
74 | |
75 hi def link elmFuncName Function | |
76 hi def link elmCaseBlockDefinition Conditional | |
77 hi def link elmCaseBlockItemDefinition Conditional | |
78 hi def link elmLetBlockDefinition TypeDef | |
79 hi def link elmTopLevelDecl Function | |
80 hi def link elmTupleFunction Normal | |
81 hi def link elmTodo Todo | |
82 hi def link elmComment Comment | |
83 hi def link elmLineComment Comment | |
84 hi def link elmString String | |
85 hi def link elmTripleString String | |
86 hi def link elmChar String | |
87 hi def link elmStringEscape Special | |
88 hi def link elmInt Number | |
89 hi def link elmFloat Float | |
90 hi def link elmDelimiter Delimiter | |
91 hi def link elmBraces Delimiter | |
92 hi def link elmTypedef TypeDef | |
93 hi def link elmImport Include | |
94 hi def link elmConditional Conditional | |
95 hi def link elmAlias Delimiter | |
96 hi def link elmOperator Operator | |
97 hi def link elmType Type | |
98 hi def link elmNumberType Identifier | |
99 hi def link elmLambdaFunc Function | |
100 hi def link elmDebug Debug | |
101 hi def link elmModule Type | |
102 | |
103 syn sync minlines=500 | |
104 | |
105 let b:current_syntax = 'elm' |