Mercurial > vim
annotate runtime/syntax/monk.vim @ 27392:ec2ba9acec1b v8.2.4224
patch 8.2.4224: Vim9: no error when using a number for map() second argument
Commit: https://github.com/vim/vim/commit/1080c48ec8d672d7e9fbefb5a1255c9df09a2884
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Jan 26 18:26:21 2022 +0000
patch 8.2.4224: Vim9: no error when using a number for map() second argument
Problem: Vim9: no error when using a number for map() second argument
Solution: Disallow number to string conversion. (closes https://github.com/vim/vim/issues/9630)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 26 Jan 2022 19:30:03 +0100 |
parents | 46763b01cd9a |
children |
rev | line source |
---|---|
7 | 1 " Vim syntax file |
2 " Language: Monk (See-Beyond Technologies) | |
3 " Maintainer: Mike Litherland <litherm@ccf.org> | |
3312 | 4 " Last Change: 2012 Feb 03 by Thilo Six |
7 | 5 |
6 " This syntax file is good enough for my needs, but others | |
7 " may desire more features. Suggestions and bug reports | |
8 " are solicited by the author (above). | |
9 | |
10 " Originally based on the Scheme syntax file by: | |
11 | |
12 " Maintainer: Dirk van Deun <dvandeun@poboxes.com> | |
13 " Last Change: April 30, 1998 | |
14 | |
15 " In fact it's almost identical. :) | |
16 | |
17 " The original author's notes: | |
18 " This script incorrectly recognizes some junk input as numerals: | |
19 " parsing the complete system of Scheme numerals using the pattern | |
20 " language is practically impossible: I did a lax approximation. | |
21 | |
22 " Initializing: | |
23 | |
10048
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
3312
diff
changeset
|
24 " quit when a syntax file was already loaded |
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
3312
diff
changeset
|
25 if exists("b:current_syntax") |
7 | 26 finish |
27 endif | |
28 | |
3312 | 29 let s:cpo_save = &cpo |
30 set cpo&vim | |
31 | |
7 | 32 syn case ignore |
33 | |
34 " Fascist highlighting: everything that doesn't fit the rules is an error... | |
35 | |
36 syn match monkError oneline ![^ \t()";]*! | |
37 syn match monkError oneline ")" | |
38 | |
39 " Quoted and backquoted stuff | |
40 | |
41 syn region monkQuoted matchgroup=Delimiter start="['`]" end=![ \t()";]!me=e-1 contains=ALLBUT,monkStruc,monkSyntax,monkFunc | |
42 | |
43 syn region monkQuoted matchgroup=Delimiter start="['`](" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc | |
44 syn region monkQuoted matchgroup=Delimiter start="['`]#(" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc | |
45 | |
46 syn region monkStrucRestricted matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc | |
47 syn region monkStrucRestricted matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc | |
48 | |
49 syn region monkUnquote matchgroup=Delimiter start="," end=![ \t()";]!me=e-1 contains=ALLBUT,monkStruc,monkSyntax,monkFunc | |
50 syn region monkUnquote matchgroup=Delimiter start=",@" end=![ \t()";]!me=e-1 contains=ALLBUT,monkStruc,monkSyntax,monkFunc | |
51 | |
52 syn region monkUnquote matchgroup=Delimiter start=",(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc | |
53 syn region monkUnquote matchgroup=Delimiter start=",@(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc | |
54 | |
55 syn region monkUnquote matchgroup=Delimiter start=",#(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc | |
56 syn region monkUnquote matchgroup=Delimiter start=",@#(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc | |
57 | |
58 " R5RS Scheme Functions and Syntax: | |
59 | |
10048
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
3312
diff
changeset
|
60 setlocal iskeyword=33,35-39,42-58,60-90,94,95,97-122,126,_ |
7 | 61 |
62 syn keyword monkSyntax lambda and or if cond case define let let* letrec | |
63 syn keyword monkSyntax begin do delay set! else => | |
64 syn keyword monkSyntax quote quasiquote unquote unquote-splicing | |
65 syn keyword monkSyntax define-syntax let-syntax letrec-syntax syntax-rules | |
66 | |
67 syn keyword monkFunc not boolean? eq? eqv? equal? pair? cons car cdr set-car! | |
68 syn keyword monkFunc set-cdr! caar cadr cdar cddr caaar caadr cadar caddr | |
69 syn keyword monkFunc cdaar cdadr cddar cdddr caaaar caaadr caadar caaddr | |
70 syn keyword monkFunc cadaar cadadr caddar cadddr cdaaar cdaadr cdadar cdaddr | |
71 syn keyword monkFunc cddaar cddadr cdddar cddddr null? list? list length | |
72 syn keyword monkFunc append reverse list-ref memq memv member assq assv assoc | |
73 syn keyword monkFunc symbol? symbol->string string->symbol number? complex? | |
74 syn keyword monkFunc real? rational? integer? exact? inexact? = < > <= >= | |
75 syn keyword monkFunc zero? positive? negative? odd? even? max min + * - / abs | |
76 syn keyword monkFunc quotient remainder modulo gcd lcm numerator denominator | |
77 syn keyword monkFunc floor ceiling truncate round rationalize exp log sin cos | |
78 syn keyword monkFunc tan asin acos atan sqrt expt make-rectangular make-polar | |
79 syn keyword monkFunc real-part imag-part magnitude angle exact->inexact | |
80 syn keyword monkFunc inexact->exact number->string string->number char=? | |
81 syn keyword monkFunc char-ci=? char<? char-ci<? char>? char-ci>? char<=? | |
82 syn keyword monkFunc char-ci<=? char>=? char-ci>=? char-alphabetic? char? | |
83 syn keyword monkFunc char-numeric? char-whitespace? char-upper-case? | |
84 syn keyword monkFunc char-lower-case? | |
85 syn keyword monkFunc char->integer integer->char char-upcase char-downcase | |
86 syn keyword monkFunc string? make-string string string-length string-ref | |
87 syn keyword monkFunc string-set! string=? string-ci=? string<? string-ci<? | |
88 syn keyword monkFunc string>? string-ci>? string<=? string-ci<=? string>=? | |
89 syn keyword monkFunc string-ci>=? substring string-append vector? make-vector | |
90 syn keyword monkFunc vector vector-length vector-ref vector-set! procedure? | |
91 syn keyword monkFunc apply map for-each call-with-current-continuation | |
92 syn keyword monkFunc call-with-input-file call-with-output-file input-port? | |
93 syn keyword monkFunc output-port? current-input-port current-output-port | |
94 syn keyword monkFunc open-input-file open-output-file close-input-port | |
95 syn keyword monkFunc close-output-port eof-object? read read-char peek-char | |
96 syn keyword monkFunc write display newline write-char call/cc | |
97 syn keyword monkFunc list-tail string->list list->string string-copy | |
98 syn keyword monkFunc string-fill! vector->list list->vector vector-fill! | |
99 syn keyword monkFunc force with-input-from-file with-output-to-file | |
100 syn keyword monkFunc char-ready? load transcript-on transcript-off eval | |
101 syn keyword monkFunc dynamic-wind port? values call-with-values | |
102 syn keyword monkFunc monk-report-environment null-environment | |
103 syn keyword monkFunc interaction-environment | |
104 | |
105 " Keywords specific to STC's implementation | |
106 | |
107 syn keyword monkFunc $event-clear $event-parse $event->string $make-event-map | |
108 syn keyword monkFunc $resolve-event-definition change-pattern copy copy-strip | |
109 syn keyword monkFunc count-data-children count-map-children count-rep data-map | |
110 syn keyword monkFunc duplicate duplicate-strip file-check file-lookup get | |
111 syn keyword monkFunc insert list-lookup node-has-data? not-verify path? | |
112 syn keyword monkFunc path-defined-as-repeating? path-nodeclear path-nodedepth | |
113 syn keyword monkFunc path-nodename path-nodeparentname path->string path-valid? | |
114 syn keyword monkFunc regex string->path timestamp uniqueid verify | |
115 | |
116 " Keywords from the Monk function library (from e*Gate 4.1 programmers ref) | |
117 syn keyword monkFunc allcap? capitalize char-punctuation? char-substitute | |
118 syn keyword monkFunc char-to-char conv count-used-children degc->degf | |
119 syn keyword monkFunc diff-two-dates display-error empty-string? fail_id | |
120 syn keyword monkFunc fail_id_if fail_translation fail_translation_if | |
121 syn keyword monkFunc find-get-after find-get-before get-timestamp julian-date? | |
122 syn keyword monkFunc julian->standard leap-year? map-string not-empty-string? | |
123 syn keyword monkFunc standard-date? standard->julian string-begins-with? | |
124 syn keyword monkFunc string-contains? string-ends-with? string-search-from-left | |
125 syn keyword monkFunc string-search-from-right string->ssn strip-punct | |
126 syn keyword monkFunc strip-string substring=? symbol-table-get symbol-table-put | |
127 syn keyword monkFunc trim-string-left trim-string-right valid-decimal? | |
128 syn keyword monkFunc valid-integer? verify-type | |
129 | |
130 " Writing out the complete description of Scheme numerals without | |
131 " using variables is a day's work for a trained secretary... | |
132 " This is a useful lax approximation: | |
133 | |
134 syn match monkNumber oneline "[-#+0-9.][-#+/0-9a-f@i.boxesfdl]*" | |
135 syn match monkError oneline ![-#+0-9.][-#+/0-9a-f@i.boxesfdl]*[^-#+/0-9a-f@i.boxesfdl \t()";][^ \t()";]*! | |
136 | |
137 syn match monkOther oneline ![+-][ \t()";]!me=e-1 | |
138 syn match monkOther oneline ![+-]$! | |
139 " ... so that a single + or -, inside a quoted context, would not be | |
140 " interpreted as a number (outside such contexts, it's a monkFunc) | |
141 | |
142 syn match monkDelimiter oneline !\.[ \t()";]!me=e-1 | |
143 syn match monkDelimiter oneline !\.$! | |
144 " ... and a single dot is not a number but a delimiter | |
145 | |
146 " Simple literals: | |
147 | |
148 syn match monkBoolean oneline "#[tf]" | |
149 syn match monkError oneline !#[tf][^ \t()";]\+! | |
150 | |
151 syn match monkChar oneline "#\\" | |
152 syn match monkChar oneline "#\\." | |
153 syn match monkError oneline !#\\.[^ \t()";]\+! | |
154 syn match monkChar oneline "#\\space" | |
155 syn match monkError oneline !#\\space[^ \t()";]\+! | |
156 syn match monkChar oneline "#\\newline" | |
157 syn match monkError oneline !#\\newline[^ \t()";]\+! | |
158 | |
159 " This keeps all other stuff unhighlighted, except *stuff* and <stuff>: | |
160 | |
161 syn match monkOther oneline ,[a-z!$%&*/:<=>?^_~][-a-z!$%&*/:<=>?^_~0-9+.@]*, | |
162 syn match monkError oneline ,[a-z!$%&*/:<=>?^_~][-a-z!$%&*/:<=>?^_~0-9+.@]*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*, | |
163 | |
164 syn match monkOther oneline "\.\.\." | |
165 syn match monkError oneline !\.\.\.[^ \t()";]\+! | |
166 " ... a special identifier | |
167 | |
168 syn match monkConstant oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[ \t()";],me=e-1 | |
169 syn match monkConstant oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*$, | |
170 syn match monkError oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*, | |
171 | |
172 syn match monkConstant oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[ \t()";],me=e-1 | |
173 syn match monkConstant oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>$, | |
174 syn match monkError oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*, | |
175 | |
176 " Monk input and output structures | |
177 syn match monkSyntax oneline "\(\~input\|\[I\]->\)[^ \t]*" | |
178 syn match monkFunc oneline "\(\~output\|\[O\]->\)[^ \t]*" | |
179 | |
180 " Non-quoted lists, and strings: | |
181 | |
182 syn region monkStruc matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALL | |
183 syn region monkStruc matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALL | |
184 | |
185 syn region monkString start=+"+ skip=+\\[\\"]+ end=+"+ | |
186 | |
187 " Comments: | |
188 | |
189 syn match monkComment ";.*$" | |
190 | |
191 " Synchronization and the wrapping up... | |
192 | |
193 syn sync match matchPlace grouphere NONE "^[^ \t]" | |
194 " ... i.e. synchronize on a line that starts at the left margin | |
195 | |
196 " Define the default highlighting. | |
10048
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
3312
diff
changeset
|
197 " Only when an item doesn't have highlighting yet |
7 | 198 |
10051
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
199 hi def link monkSyntax Statement |
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
200 hi def link monkFunc Function |
7 | 201 |
10051
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
202 hi def link monkString String |
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
203 hi def link monkChar Character |
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
204 hi def link monkNumber Number |
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
205 hi def link monkBoolean Boolean |
7 | 206 |
10051
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
207 hi def link monkDelimiter Delimiter |
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
208 hi def link monkConstant Constant |
7 | 209 |
10051
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
210 hi def link monkComment Comment |
46763b01cd9a
commit https://github.com/vim/vim/commit/f37506f60f87d52a9e8850e30067645e2b13783c
Christian Brabandt <cb@256bit.org>
parents:
10048
diff
changeset
|
211 hi def link monkError Error |
7 | 212 |
213 | |
214 let b:current_syntax = "monk" | |
3312 | 215 |
216 let &cpo = s:cpo_save | |
217 unlet s:cpo_save |