Mercurial > vim
annotate runtime/syntax/sml.vim @ 27503:4cea92e99a5a v8.2.4279
patch 8.2.4279: Vim9: cannot change item type with map() after range()
Commit: https://github.com/vim/vim/commit/8133018f50bc447570825801e93d5ed67e8dac90
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Feb 1 12:11:58 2022 +0000
patch 8.2.4279: Vim9: cannot change item type with map() after range()
Problem: Vim9: cannot change item type with map() after range().
Solution: Split the return type in current type and declared type.
(closes #9665)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 01 Feb 2022 13:15:03 +0100 |
parents | 9c221ad9634a |
children | 6dd88e45d47d |
rev | line source |
---|---|
7 | 1 " Vim syntax file |
2 " Language: SML | |
3 " Filenames: *.sml *.sig | |
659 | 4 " Maintainers: Markus Mottl <markus.mottl@gmail.com> |
20 | 5 " Fabrizio Zeno Cornelli <zeno@filibusta.crema.unimi.it> |
25880 | 6 " Last Change: 2021 Oct 04 |
23466 | 7 " 2015 Aug 31 - Fixed opening of modules (Ramana Kumar) |
8 " 2006 Oct 23 - Fixed character highlighting bug (MM) | |
7 | 9 |
10048
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
1120
diff
changeset
|
10 " quit when a syntax file was already loaded |
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
1120
diff
changeset
|
11 if exists("b:current_syntax") |
25880 | 12 finish |
13 endif | |
23466 | 14 |
15 " Disable spell checking of syntax. | |
16 syn spell notoplevel | |
17 | |
7 | 18 " SML is case sensitive. |
19 syn case match | |
20 | |
21 " lowercase identifier - the standard way to match | |
22 syn match smlLCIdentifier /\<\(\l\|_\)\(\w\|'\)*\>/ | |
23 | |
24 syn match smlKeyChar "|" | |
25 | |
26 " Errors | |
27 syn match smlBraceErr "}" | |
28 syn match smlBrackErr "\]" | |
29 syn match smlParenErr ")" | |
30 syn match smlCommentErr "\*)" | |
31 syn match smlThenErr "\<then\>" | |
32 | |
33 " Error-highlighting of "end" without synchronization: | |
34 " as keyword or as error (default) | |
35 if exists("sml_noend_error") | |
36 syn match smlKeyword "\<end\>" | |
37 else | |
38 syn match smlEndErr "\<end\>" | |
39 endif | |
40 | |
41 " Some convenient clusters | |
42 syn cluster smlAllErrs contains=smlBraceErr,smlBrackErr,smlParenErr,smlCommentErr,smlEndErr,smlThenErr | |
43 | |
44 syn cluster smlAENoParen contains=smlBraceErr,smlBrackErr,smlCommentErr,smlEndErr,smlThenErr | |
45 | |
46 syn cluster smlContained contains=smlTodo,smlPreDef,smlModParam,smlModParam1,smlPreMPRestr,smlMPRestr,smlMPRestr1,smlMPRestr2,smlMPRestr3,smlModRHS,smlFuncWith,smlFuncStruct,smlModTypeRestr,smlModTRWith,smlWith,smlWithRest,smlModType,smlFullMod | |
47 | |
48 | |
49 " Enclosing delimiters | |
50 syn region smlEncl transparent matchgroup=smlKeyword start="(" matchgroup=smlKeyword end=")" contains=ALLBUT,@smlContained,smlParenErr | |
51 syn region smlEncl transparent matchgroup=smlKeyword start="{" matchgroup=smlKeyword end="}" contains=ALLBUT,@smlContained,smlBraceErr | |
52 syn region smlEncl transparent matchgroup=smlKeyword start="\[" matchgroup=smlKeyword end="\]" contains=ALLBUT,@smlContained,smlBrackErr | |
53 syn region smlEncl transparent matchgroup=smlKeyword start="#\[" matchgroup=smlKeyword end="\]" contains=ALLBUT,@smlContained,smlBrackErr | |
54 | |
55 | |
56 " Comments | |
23466 | 57 syn region smlComment start="(\*" end="\*)" contains=smlComment,smlTodo,@Spell |
7 | 58 syn keyword smlTodo contained TODO FIXME XXX |
59 | |
60 | |
61 " let | |
62 syn region smlEnd matchgroup=smlKeyword start="\<let\>" matchgroup=smlKeyword end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr | |
63 | |
64 " local | |
65 syn region smlEnd matchgroup=smlKeyword start="\<local\>" matchgroup=smlKeyword end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr | |
66 | |
67 " abstype | |
68 syn region smlNone matchgroup=smlKeyword start="\<abstype\>" matchgroup=smlKeyword end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr | |
69 | |
70 " begin | |
71 syn region smlEnd matchgroup=smlKeyword start="\<begin\>" matchgroup=smlKeyword end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr | |
72 | |
73 " if | |
74 syn region smlNone matchgroup=smlKeyword start="\<if\>" matchgroup=smlKeyword end="\<then\>" contains=ALLBUT,@smlContained,smlThenErr | |
75 | |
76 | |
77 "" Modules | |
78 | |
79 " "struct" | |
80 syn region smlStruct matchgroup=smlModule start="\<struct\>" matchgroup=smlModule end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr | |
81 | |
82 " "sig" | |
83 syn region smlSig matchgroup=smlModule start="\<sig\>" matchgroup=smlModule end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr,smlModule | |
84 syn region smlModSpec matchgroup=smlKeyword start="\<structure\>" matchgroup=smlModule end="\<\u\(\w\|'\)*\>" contained contains=@smlAllErrs,smlComment skipwhite skipempty nextgroup=smlModTRWith,smlMPRestr | |
85 | |
86 " "open" | |
23466 | 87 syn region smlNone matchgroup=smlKeyword start="\<open\>" matchgroup=smlModule end="\<\w\(\w\|'\)*\(\.\w\(\w\|'\)*\)*\>" contains=@smlAllErrs,smlComment |
7 | 88 |
89 " "structure" - somewhat complicated stuff ;-) | |
90 syn region smlModule matchgroup=smlKeyword start="\<\(structure\|functor\)\>" matchgroup=smlModule end="\<\u\(\w\|'\)*\>" contains=@smlAllErrs,smlComment skipwhite skipempty nextgroup=smlPreDef | |
91 syn region smlPreDef start="."me=e-1 matchgroup=smlKeyword end="\l\|="me=e-1 contained contains=@smlAllErrs,smlComment,smlModParam,smlModTypeRestr,smlModTRWith nextgroup=smlModPreRHS | |
92 syn region smlModParam start="([^*]" end=")" contained contains=@smlAENoParen,smlModParam1 | |
93 syn match smlModParam1 "\<\u\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=smlPreMPRestr | |
94 | |
95 syn region smlPreMPRestr start="."me=e-1 end=")"me=e-1 contained contains=@smlAllErrs,smlComment,smlMPRestr,smlModTypeRestr | |
96 | |
97 syn region smlMPRestr start=":" end="."me=e-1 contained contains=@smlComment skipwhite skipempty nextgroup=smlMPRestr1,smlMPRestr2,smlMPRestr3 | |
98 syn region smlMPRestr1 matchgroup=smlModule start="\ssig\s\=" matchgroup=smlModule end="\<end\>" contained contains=ALLBUT,@smlContained,smlEndErr,smlModule | |
99 syn region smlMPRestr2 start="\sfunctor\(\s\|(\)\="me=e-1 matchgroup=smlKeyword end="->" contained contains=@smlAllErrs,smlComment,smlModParam skipwhite skipempty nextgroup=smlFuncWith | |
100 syn match smlMPRestr3 "\w\(\w\|'\)*\(\.\w\(\w\|'\)*\)*" contained | |
101 syn match smlModPreRHS "=" contained skipwhite skipempty nextgroup=smlModParam,smlFullMod | |
102 syn region smlModRHS start="." end=".\w\|([^*]"me=e-2 contained contains=smlComment skipwhite skipempty nextgroup=smlModParam,smlFullMod | |
103 syn match smlFullMod "\<\u\(\w\|'\)*\(\.\u\(\w\|'\)*\)*" contained skipwhite skipempty nextgroup=smlFuncWith | |
104 | |
105 syn region smlFuncWith start="([^*]"me=e-1 end=")" contained contains=smlComment,smlWith,smlFuncStruct | |
106 syn region smlFuncStruct matchgroup=smlModule start="[^a-zA-Z]struct\>"hs=s+1 matchgroup=smlModule end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr | |
107 | |
108 syn match smlModTypeRestr "\<\w\(\w\|'\)*\(\.\w\(\w\|'\)*\)*\>" contained | |
109 syn region smlModTRWith start=":\s*("hs=s+1 end=")" contained contains=@smlAENoParen,smlWith | |
110 syn match smlWith "\<\(\u\(\w\|'\)*\.\)*\w\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=smlWithRest | |
111 syn region smlWithRest start="[^)]" end=")"me=e-1 contained contains=ALLBUT,@smlContained | |
112 | |
113 " "signature" | |
114 syn region smlKeyword start="\<signature\>" matchgroup=smlModule end="\<\w\(\w\|'\)*\>" contains=smlComment skipwhite skipempty nextgroup=smlMTDef | |
115 syn match smlMTDef "=\s*\w\(\w\|'\)*\>"hs=s+1,me=s | |
116 | |
117 syn keyword smlKeyword and andalso case | |
118 syn keyword smlKeyword datatype else eqtype | |
119 syn keyword smlKeyword exception fn fun handle | |
120 syn keyword smlKeyword in infix infixl infixr | |
121 syn keyword smlKeyword match nonfix of orelse | |
122 syn keyword smlKeyword raise handle type | |
123 syn keyword smlKeyword val where while with withtype | |
124 | |
125 syn keyword smlType bool char exn int list option | |
126 syn keyword smlType real string unit | |
127 | |
128 syn keyword smlOperator div mod not or quot rem | |
129 | |
130 syn keyword smlBoolean true false | |
131 syn match smlConstructor "(\s*)" | |
132 syn match smlConstructor "\[\s*\]" | |
133 syn match smlConstructor "#\[\s*\]" | |
134 syn match smlConstructor "\u\(\w\|'\)*\>" | |
135 | |
136 " Module prefix | |
137 syn match smlModPath "\u\(\w\|'\)*\."he=e-1 | |
138 | |
1120 | 139 syn match smlCharacter +#"\\""\|#"."\|#"\\\d\d\d"+ |
7 | 140 syn match smlCharErr +#"\\\d\d"\|#"\\\d"+ |
23466 | 141 syn region smlString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell |
7 | 142 |
143 syn match smlFunDef "=>" | |
144 syn match smlRefAssign ":=" | |
145 syn match smlTopStop ";;" | |
146 syn match smlOperator "\^" | |
147 syn match smlOperator "::" | |
148 syn match smlAnyVar "\<_\>" | |
149 syn match smlKeyChar "!" | |
150 syn match smlKeyChar ";" | |
151 syn match smlKeyChar "\*" | |
152 syn match smlKeyChar "=" | |
153 | |
23466 | 154 syn match smlNumber "\<-\=\d\+\>" |
155 syn match smlNumber "\<-\=0[x|X]\x\+\>" | |
156 syn match smlReal "\<-\=\d\+\.\d*\([eE][-+]\=\d\+\)\=[fl]\=\>" | |
7 | 157 |
158 " Synchronization | |
159 syn sync minlines=20 | |
160 syn sync maxlines=500 | |
161 | |
162 syn sync match smlEndSync grouphere smlEnd "\<begin\>" | |
163 syn sync match smlEndSync groupthere smlEnd "\<end\>" | |
164 syn sync match smlStructSync grouphere smlStruct "\<struct\>" | |
165 syn sync match smlStructSync groupthere smlStruct "\<end\>" | |
166 syn sync match smlSigSync grouphere smlSig "\<sig\>" | |
167 syn sync match smlSigSync groupthere smlSig "\<end\>" | |
168 | |
169 " Define the default highlighting. | |
10048
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
1120
diff
changeset
|
170 " Only when an item doesn't have highlighting yet |
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
1120
diff
changeset
|
171 |
23466 | 172 hi def link smlBraceErr Error |
173 hi def link smlBrackErr Error | |
174 hi def link smlParenErr Error | |
10051
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
175 |
23466 | 176 hi def link smlCommentErr Error |
7 | 177 |
23466 | 178 hi def link smlEndErr Error |
179 hi def link smlThenErr Error | |
7 | 180 |
23466 | 181 hi def link smlCharErr Error |
7 | 182 |
23466 | 183 hi def link smlComment Comment |
7 | 184 |
23466 | 185 hi def link smlModPath Include |
186 hi def link smlModule Include | |
187 hi def link smlModParam1 Include | |
188 hi def link smlModType Include | |
189 hi def link smlMPRestr3 Include | |
190 hi def link smlFullMod Include | |
10051
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
191 hi def link smlModTypeRestr Include |
23466 | 192 hi def link smlWith Include |
193 hi def link smlMTDef Include | |
7 | 194 |
10051
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
195 hi def link smlConstructor Constant |
7 | 196 |
23466 | 197 hi def link smlModPreRHS Keyword |
198 hi def link smlMPRestr2 Keyword | |
199 hi def link smlKeyword Keyword | |
200 hi def link smlFunDef Keyword | |
201 hi def link smlRefAssign Keyword | |
202 hi def link smlKeyChar Keyword | |
203 hi def link smlAnyVar Keyword | |
204 hi def link smlTopStop Keyword | |
205 hi def link smlOperator Keyword | |
7 | 206 |
23466 | 207 hi def link smlBoolean Boolean |
208 hi def link smlCharacter Character | |
209 hi def link smlNumber Number | |
210 hi def link smlReal Float | |
211 hi def link smlString String | |
212 hi def link smlType Type | |
213 hi def link smlTodo Todo | |
214 hi def link smlEncl Keyword | |
7 | 215 |
216 | |
217 let b:current_syntax = "sml" | |
218 | |
219 " vim: ts=8 |