blob: 9b12d5ecdd437ddd31f621571745dab93e7db135 [file] [log] [blame]
Peter Kenny14dec7b2025-03-26 19:52:50 +01001vim9script
2# Vim syntax file
3# Language: OmniMark
4# Maintainer: Peter Kenny <kennypete.t2o3y@aleeas.com>
5# Previous Maintainer: Paul Terray <mailto:terray@4dconcept.fr>
6# Last Change: 2025-03-23
7# License: Vim (see :help license)
8# History: 2000-10-11 Vintage minimal syntax file (Paul Terray)
9#
10# - Syntax is grouped, generally, by type (action to rule), using the
11# version 12 headings. Refer:
12# https://developers.stilo.com/docs/html/keyword/type.html
13# - Deprecated/legacy syntax back to version 4 is included.
14# - OmniMark is largely case insensitive, with handled exceptions (e.g., %g)
15# ----------------------------------------------------------------------------
16syntax case ignore
17# Current syntax exists: finish {{{
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020018if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000019 finish
20endif
Peter Kenny14dec7b2025-03-26 19:52:50 +010021# }}}
22# Keyword characters {{{
23# !#%&*+-/0123456789<=>@
24# ABCDEFGHIJKLMNOPQRSTUVWXYZ
25# \_abcdefghijklmnopqrstuvwxyz|~
26setlocal iskeyword=33,35,37-38,42-43,45,47-57,60-62,64-90,92,95,97-122,124,126
27# }}}
28# _ action {{{
29syntax keyword omnimarkAction activate
30syntax keyword omnimarkAction assert
31syntax keyword omnimarkAction clear
32syntax keyword omnimarkAction close
33syntax keyword omnimarkAction collect-garbage
34syntax match omnimarkAction "\v\c<%(copy)%(-clear)?"
35syntax keyword omnimarkAction deactivate
36syntax keyword omnimarkAction decrement
37syntax keyword omnimarkAction discard
38syntax keyword omnimarkAction flush
39syntax match omnimarkAction "\v\c<%(halt)%(-everything)?"
40syntax keyword omnimarkAction increment
41syntax keyword omnimarkAction log
42syntax keyword omnimarkAction log-message
43syntax keyword omnimarkAction match
44syntax keyword omnimarkAction new
45 # new takes before and after (as in new x{"wilma"} after [2])
46 syntax keyword omnimarkAction after
47 syntax keyword omnimarkAction before
48# This is the only way 'next' is used (and it cannot be 'isnt'):
49syntax match omnimarkAction "\v\c<%(next\s+group\s+is)"
50syntax keyword omnimarkAction not-reached
51syntax keyword omnimarkAction open
52syntax match omnimarkAction "\v\c<%(output)%(-to)?"
53syntax keyword omnimarkAction put
54# When alone, 'referent' is nearly always 'put...referent,' which is an action
55syntax keyword omnimarkAction referent
56syntax match omnimarkAction "\v\c<%(remove)%(\s+key\s+of)?"
57syntax keyword omnimarkAction reopen
58syntax keyword omnimarkAction reset
59syntax keyword omnimarkAction return
60# 'scan' because it can start a line in a block of 'do *-parse ... done'
61syntax keyword omnimarkAction scan
62syntax match omnimarkAction "\v\c<%(set)%(\s+%(buffer|creator\s+of|external-function|file|function-library|key\s+of|new|referent|stream))?"
63syntax keyword omnimarkAction sgml-in
64syntax keyword omnimarkAction sgml-out
65syntax keyword omnimarkAction signal
66syntax keyword omnimarkAction submit
67syntax keyword omnimarkAction suppress
68syntax keyword omnimarkAction throw
69syntax keyword omnimarkAction void
70# }}}
71# _ built-in data type {{{
72# attribute-declaration: Every attribute-declaration instance has two
73# properties: attribute-default-declaration and
74# attribute-value-declaration
75# attribute-default-declaration: is the abstract type of declared defaults for
76# unspecified attribute values. Its concrete
77# instances can be obtained with the following
78# four constants:
79syntax keyword omnimarkConstant attribute-declared-conref
80syntax keyword omnimarkConstant attribute-declared-current
81syntax keyword omnimarkConstant attribute-declared-implied
82syntax keyword omnimarkConstant attribute-declared-required
83# and with two operators which take a string
84# default value argument:
85syntax match omnimarkOperator "\v\c<%(attribute-declared-defaulted\s+to)"
86syntax match omnimarkOperator "\v\c<%(attribute-declared-fixed to)"
87# attribute-value-declaration: is the abstract type of values that an
88# attribute is declared to accept. Its concrete
89# instances can be obtained with the following
90# constants:
91syntax match omnimarkConstant "\v\c<%(attribute-declared-fixed to)"
92syntax keyword omnimarkConstant attribute-declared-id
93syntax keyword omnimarkConstant attribute-declared-idref
94syntax keyword omnimarkConstant attribute-declared-idrefs
95syntax keyword omnimarkConstant attribute-declared-name
96syntax keyword omnimarkConstant attribute-declared-names
97syntax keyword omnimarkConstant attribute-declared-nmtoken
98syntax keyword omnimarkConstant attribute-declared-nmtokens
99syntax keyword omnimarkConstant attribute-declared-number
100syntax keyword omnimarkConstant attribute-declared-numbers
101syntax keyword omnimarkConstant attribute-declared-nutoken
102syntax keyword omnimarkConstant attribute-declared-nutokens
103# and with one operator that takes a string shelf
104# argument listing all the values allowed for the
105# attribute:
106syntax keyword omnimarkOperator attribute-declared-group
107# content-model - the following six constants are the only possible values:
108syntax keyword omnimarkConstant any-content-model
109syntax keyword omnimarkConstant cdata-content-model
110syntax keyword omnimarkConstant element-content-model
111syntax keyword omnimarkConstant empty-content-model
112syntax keyword omnimarkConstant mixed-content-model
113syntax keyword omnimarkConstant rcdata-content-model
114# refer also:
115# developers.stilo.com/docs/html/keyword/create-element-declaration.html
116#
117# declared-attribute is and abstract type with subtypes:
118# implied-attribute
119# specified-attribute
120# dtd abstract data type has subtypes:
121# sgml-dtd
122# xml-dtd
123# element-declaration
124# entity-declaration
125# markup-element-event
126# markup-event has subtypes:
127# markup-point-event
128# markup-region-event
129# }}}
130# _ built-in entity {{{
131syntax match omnimarkBuiltinEntity "\v\c<%(#capacity)"
132syntax match omnimarkBuiltinEntity "\v\c<%(#charset)"
133syntax match omnimarkBuiltinEntity "\v\c<%(#document)"
134syntax match omnimarkBuiltinEntity "\v\c<%(#dtd)"
135syntax match omnimarkBuiltinEntity "\v\c<%(#implied)"
136syntax match omnimarkBuiltinEntity "\v\c<%(#schema)"
137syntax match omnimarkBuiltinEntity "\v\c<%(#syntax)"
138# }}}
139# _ built-in shelf {{{
140syntax match omnimarkBuiltinShelf "\v\c<%(#additional-info)"
141syntax match omnimarkBuiltinShelf "\v\c<%(#appinfo)"
142syntax match omnimarkBuiltinShelf "\v\c<%(#args)"
143syntax match omnimarkBuiltinShelf "\v\c<%(#class)"
144syntax match omnimarkBuiltinShelf "\v\c<%(#command-line-names)"
145syntax match omnimarkBuiltinShelf "\v\c<%(#console)"
146syntax match omnimarkBuiltinShelf "\v\c<%(#content)"
147syntax match omnimarkBuiltinShelf "\v\c<%(#current-dtd)"
148syntax match omnimarkBuiltinShelf "\v\c<%(#current-input)"
149syntax match omnimarkBuiltinShelf "\v\c<%(#current-markup-event)"
150syntax match omnimarkBuiltinShelf "\v\c<%(#current-output)"
151syntax match omnimarkBuiltinShelf "\v\c<%(#doctype)"
152syntax match omnimarkBuiltinShelf "\v\c<%(#error)"
153syntax match omnimarkBuiltinShelf "\v\c<%(#error-code)"
154syntax match omnimarkBuiltinShelf "\v\c<%(#file-name)"
155syntax match omnimarkBuiltinShelf "\v\c<%(#language-version)"
156syntax match omnimarkBuiltinShelf "\v\c<%(#libpath)"
157syntax match omnimarkBuiltinShelf "\v\c<%(#library)"
158syntax match omnimarkBuiltinShelf "\v\c<%(#libvalue)"
159syntax match omnimarkBuiltinShelf "\v\c<%(#line-number)"
160syntax match omnimarkBuiltinShelf "\v\c<%(#log)"
161syntax match omnimarkBuiltinShelf "\v\c<%(#main-input)"
162syntax match omnimarkBuiltinShelf "\v\c<%(#main-output)"
163syntax match omnimarkBuiltinShelf "\v\c<%(#markup-error-count)"
164syntax match omnimarkBuiltinShelf "\v\c<%(#markup-error-total)"
165syntax match omnimarkBuiltinShelf "\v\c<%(#markup-parser)"
166syntax match omnimarkBuiltinShelf "\v\c<%(#markup-warning-count)"
167syntax match omnimarkBuiltinShelf "\v\c<%(#markup-warning-total)"
168syntax match omnimarkBuiltinShelf "\v\c<%(#message)"
169syntax match omnimarkBuiltinShelf "\v\c<%(#output)"
170syntax match omnimarkBuiltinShelf "\v\c<%(#platform-info)"
171syntax match omnimarkBuiltinShelf "\v\c<%(#process-input)"
172syntax match omnimarkBuiltinShelf "\v\c<%(#process-output)"
173syntax match omnimarkBuiltinShelf "\v\c<%(#recovery-info)"
174syntax match omnimarkBuiltinShelf "\v\c<%(#sgml)"
175syntax match omnimarkBuiltinShelf "\v\c<%(#sgml-error-count)"
176syntax match omnimarkBuiltinShelf "\v\c<%(#sgml-error-total)"
177syntax match omnimarkBuiltinShelf "\v\c<%(#sgml-warning-count)"
178syntax match omnimarkBuiltinShelf "\v\c<%(#sgml-warning-total)"
179syntax match omnimarkBuiltinShelf "\v\c<%(#suppress)"
180syntax match omnimarkBuiltinShelf "\v\c<%(#xmlns-names)"
181syntax keyword omnimarkBuiltinShelf attributes
182syntax match omnimarkBuiltinShelf "\v\c<%(current)%(\s+%(element%(s)?|dtd|sgml-dtd))"
183syntax keyword omnimarkBuiltinShelf data-attributes
184syntax keyword omnimarkBuiltinShelf referents
185syntax keyword omnimarkBuiltinShelf sgml-dtds
186 # deprecated synonym for sgml-dtds:
187 syntax keyword omnimarkBuiltinShelf dtds
188syntax keyword omnimarkBuiltinShelf xml-dtds
189syntax match omnimarkBuiltinShelf "\v\c<%(specified\s+attributes)"
190# }}}
191# _ catch name {{{
192syntax match omnimarkCatchName "\v\c<%(#external-exception)"
193 # external exception parameters
194 syntax keyword omnimarkCatchName identity
195 syntax keyword omnimarkCatchName message
196syntax keyword omnimarkCatchName location
197syntax match omnimarkCatchName "\v\c<%(#markup-end)"
198syntax match omnimarkCatchName "\v\c<%(#markup-point)"
199syntax match omnimarkCatchName "\v\c<%(#markup-start)"
200syntax match omnimarkCatchName "\v\c<%(#program-error)"
201# }}}
202# _ constant {{{
203syntax keyword omnimarkConstant false
204syntax keyword omnimarkConstant true
205# Example: local stream u initial {unattached}
206syntax keyword omnimarkConstant unattached
207# }}}
208# _ control structure {{{
209syntax match omnimarkControlStructure "\v\c<%(#first)"
210syntax match omnimarkControlStructure "\v\c<%(#group)"
211syntax match omnimarkControlStructure "\v\c<%(#item)"
212syntax match omnimarkControlStructure "\v\c<%(#last)"
213syntax match omnimarkControlStructure "\v%(\s)?%(-\>)%(\s)?"
214syntax keyword omnimarkControlStructure again
215syntax keyword omnimarkControlStructure always
216syntax keyword omnimarkControlStructure as
217syntax keyword omnimarkControlStructure case
218syntax keyword omnimarkControlStructure catch
219syntax match omnimarkControlStructure "\v\c<%(do)>%(%(\s|\n)+%((markup|sgml|xml)-parse|scan|select|select-type|skip%(\s+over)?|unless|when))?"
220 # with id-checking and with utf-8, example:
221 # do sgml-parse document with id-checking false scan file "my.sgml"
222 syntax keyword omnimarkControlStructure id-checking
223 syntax keyword omnimarkControlStructure utf-8
224 syntax keyword omnimarkControlStructure with
225syntax keyword omnimarkControlStructure done
226syntax keyword omnimarkControlStructure else
227syntax keyword omnimarkControlStructure exit
228syntax match omnimarkControlStructure "\v\c<%(repeat)>%(\s+%(for|over%(\s+current elements)?|scan|to))?"
229 # Example: repeat over reversed
230 syntax keyword omnimarkControlStructure reversed
231# Note: repeat over attribute(s) not needed - handled separately
232# Note: repeat over data-attribute(s) not needed - handled separately
233# Note: repeat over referents not needed - handled separately
234syntax keyword omnimarkControlStructure rethrow
235syntax keyword omnimarkControlStructure select
236syntax keyword omnimarkControlStructure unless
237syntax match omnimarkControlStructure "\v\c<%(using)%( %(%(data-)?attribute%(s)?|catch|group|input as|nested-referents|output\s+as|referents))?"
238syntax keyword omnimarkControlStructure when
239# }}}
240# _ data type {{{
241# (not a v12 heading)
242syntax keyword omnimarkDataType bcd
243syntax keyword omnimarkDataType counter
244# db.database data type - refer omdb, below, for library functions
245syntax match omnimarkDataType "\v\c<%(db)%([.])?%(database)"
246syntax keyword omnimarkDataType document
247syntax keyword omnimarkDataType float
248syntax keyword omnimarkDataType instance
249syntax match omnimarkDataType "\v\c<%(int32)"
250syntax keyword omnimarkDataType integer
251syntax match omnimarkDataType "\v\c<%(markup\s+sink)"
252syntax match omnimarkDataType "\v\c<%(markup\s+source)"
253syntax keyword omnimarkDataType pattern
254syntax keyword omnimarkDataType string
255syntax match omnimarkDataType "\v\c<%(string\s+sink)"
256syntax match omnimarkDataType "\v\c<%(string\s+source)"
257syntax keyword omnimarkDataType stream
258syntax keyword omnimarkDataType string
259syntax keyword omnimarkDataType subdocument
260syntax keyword omnimarkDataType switch
261# }}}
262# _ declaration/definition {{{
263syntax keyword omnimarkDeclaration constant
264syntax keyword omnimarkDeclaration context-translate
265syntax keyword omnimarkDeclaration created by
266syntax keyword omnimarkDeclaration cross-translate
267syntax keyword omnimarkDeclaration declare
268syntax match omnimarkDeclaration "\v\c<%(declare)%(\s+%(data-letters|function-library|heralded-names|markup-identification))?"
269# Note: declare #error, #main-input, #main-output, #process-input,
270# #process-output, catch, data-letters, function-library, letters,
271# name-letters, no-default-io, opaque, record
272# - Those are all handed as separate keywords/matches
273syntax match omnimarkDeclaration "\v\c<%(define\s+conversion-function)"
274syntax match omnimarkDeclaration "\v\c<%(define\s+external)\s+%(source\s+)?%(function)"
275 # in function-library is part of an external function
276 syntax match omnimarkDeclaration "\v\c<%(in\s+function-library)"
277syntax match omnimarkDeclaration "\v\c<%(define\s+external\s+output)"
278syntax match omnimarkDeclaration "\v\c<%(define\s+function)"
279syntax match omnimarkDeclaration "\v\c<%(define\s+\w+function)"
280 # Example: define integer function add (value integer x, value ...)
281 syntax keyword omnimarkDeclaration value
282syntax match omnimarkDeclaration "\v\c<%(define\s+infix-function)"
283syntax match omnimarkDeclaration "\v\c<%(define\s+overloaded\s+function)"
284syntax match omnimarkDeclaration "\v\c<%(define\s+string\s+sink\s+function)"
285syntax match omnimarkDeclaration "\v\c<%(define\s+string\s+source\s+function)"
286# Some combinations are missed, so the general, 'define', is needed too:
287syntax match omnimarkDeclaration "\v\c<%(define\s+)"
288syntax keyword omnimarkDeclaration delimiter
289syntax keyword omnimarkDeclaration domain-bound
290syntax keyword omnimarkDeclaration down-translate
291syntax keyword omnimarkDeclaration dynamic
292syntax keyword omnimarkDeclaration elsewhere
293syntax keyword omnimarkDeclaration escape
294syntax match omnimarkDeclaration "\v\c<%(export\s+as\s+opaque)"
295syntax keyword omnimarkDeclaration export
296syntax keyword omnimarkDeclaration field
297syntax keyword omnimarkDeclaration function
298syntax keyword omnimarkDeclaration global
299syntax match omnimarkDeclaration "\v\c<%(group)%(s)?"
300syntax keyword omnimarkDeclaration import
301syntax match omnimarkDeclaration "\v\c<%(include)%(-guard)?"
302syntax match omnimarkDeclaration "\v\c<%(initial)%(-size)?"
303syntax keyword omnimarkDeclaration letters
304syntax keyword omnimarkDeclaration library
305syntax keyword omnimarkDeclaration local
306syntax match omnimarkDeclaration "\v\c<%(macro)%(-end)?"
307 # macros can take an arg and/or a token (or args or tokens)
308 syntax keyword omnimarkDeclaration arg
309 syntax keyword omnimarkDeclaration token
310syntax keyword omnimarkDeclaration modifiable
311syntax keyword omnimarkDeclaration module
312syntax keyword omnimarkDeclaration name-letters
313syntax match omnimarkDeclaration "\v\c<%(namecase\s+entity)"
314syntax match omnimarkDeclaration "\v\c<%(namecase\s+general)"
315syntax keyword omnimarkDeclaration newline
316syntax keyword omnimarkDeclaration no-default-io
317syntax keyword omnimarkDeclaration opaque
318syntax keyword omnimarkDeclaration optional
319syntax keyword omnimarkDeclaration overriding
320syntax match omnimarkDeclaration "\v\c<%(prefixed\s+by)"
321syntax keyword omnimarkDeclaration read-only
322syntax keyword omnimarkDeclaration record
323syntax keyword omnimarkDeclaration remainder
324syntax keyword omnimarkDeclaration require
325syntax keyword omnimarkDeclaration save
326syntax keyword omnimarkDeclaration save-clear
327syntax keyword omnimarkDeclaration silent-referent
328syntax keyword omnimarkDeclaration size
329syntax keyword omnimarkDeclaration supply
330syntax keyword omnimarkDeclaration symbol
331syntax keyword omnimarkDeclaration unprefixed
332syntax keyword omnimarkDeclaration up-translate
333syntax keyword omnimarkDeclaration use
334syntax keyword omnimarkDeclaration variable
335syntax keyword omnimarkDeclaration write-only
336# }}}
337# _ element qualifier {{{
338syntax keyword omnimarkElementQualifier ancestor
339syntax keyword omnimarkElementQualifier doctype
340syntax keyword omnimarkElementQualifier document-element
341syntax match omnimarkElementQualifier "\v\c<%(open\s+element)"
342syntax keyword omnimarkElementQualifier parent
343syntax keyword omnimarkElementQualifier preparent
344syntax keyword omnimarkElementQualifier previous
345# }}}
346# _ modifier {{{
347syntax match omnimarkModifier "\v\c<%(#base)"
348syntax match omnimarkModifier "\v\c<%(#full)"
349syntax match omnimarkModifier "\v\c<%(#xmlns)"
350syntax keyword omnimarkModifier append
351syntax keyword omnimarkModifier binary-input
352syntax keyword omnimarkModifier binary-mode
353syntax keyword omnimarkModifier binary-output
354syntax keyword omnimarkModifier break-width
355syntax keyword omnimarkModifier buffered
356syntax match omnimarkModifier "\v\c<%(declare\s+#main-output\s+has\s+domain-free)"
357syntax keyword omnimarkModifier defaulting
358syntax keyword omnimarkModifier domain-free
359syntax keyword omnimarkModifier notation
360# of may be standalone, e.g., data-attribute colwidth of (attribute name)
361syntax match omnimarkModifier "\v\c<%(of)%(\s%(ancestor|doctype|element|open element|%(pre)?parent))?"
362syntax keyword omnimarkModifier referents-allowed
363syntax keyword omnimarkModifier referents-displayed
364syntax keyword omnimarkModifier referents-not-allowed
365syntax keyword omnimarkModifier text-mode
366syntax keyword omnimarkModifier unbuffered
367# : (field selection operator) [not included]
368# ` (keyword access character) [not included]
369# }}}
370# _ operator {{{
371syntax keyword omnimarkOperator !
372syntax keyword omnimarkOperator not
373syntax keyword omnimarkOperator !=
374# 'isnt equal' is handled by separate keywords
375syntax keyword omnimarkOperator !==
376syntax match omnimarkOperator "\%(#!\)"
377syntax match omnimarkOperator "\v\c<%(#empty)"
378# Example: usemap is #none:
379syntax match omnimarkOperator "\v\c<%(#none)"
380syntax keyword omnimarkOperator %
381syntax keyword omnimarkOperator format
382syntax keyword omnimarkOperator &
383syntax keyword omnimarkOperator and
384syntax keyword omnimarkOperator *
385syntax keyword omnimarkOperator times
386syntax keyword omnimarkOperator **
387syntax keyword omnimarkOperator power
388syntax keyword omnimarkOperator +
389syntax keyword omnimarkOperator plus
390syntax keyword omnimarkOperator -
391syntax keyword omnimarkOperator minus
392syntax keyword omnimarkOperator negate
393syntax keyword omnimarkOperator /
394syntax keyword omnimarkOperator divide
395syntax keyword omnimarkOperator <
396syntax keyword omnimarkOperator less-than
397syntax keyword omnimarkOperator greater-equal
398syntax keyword omnimarkOperator <=
399syntax keyword omnimarkOperator less-equal
400syntax keyword omnimarkOperator =
401syntax keyword omnimarkOperator equal
402# 'is equal' is handled by separate keywords
403syntax keyword omnimarkOperator ==
404syntax match omnimarkOperator "\v<[=][>]\s*"
405syntax keyword omnimarkOperator >
406syntax keyword omnimarkOperator greater-than
407syntax keyword omnimarkOperator >=
408syntax keyword omnimarkOperator greater-equal
409syntax keyword omnimarkOperator abs
410syntax keyword omnimarkOperator active
411syntax keyword omnimarkOperator attribute
412 # attribute is defaulted, implied, specified: split to single keywords
413 # because it can be isnt too. Similarly for ancestor (is/isnt)
414 # with ancestor being an element qualifier.
415 # Tests for element attributes, e.g.:
416 # do when attribute myid is (id | idref | idrefs)
417 # cdata (already omnimarkPattern)
418 # name (already omnimarkOperator)
419 syntax keyword omnimarkAttributeType names
420 # number: match rather than keyword since "number of" is an operator
421 syntax match omnimarkAttributeType "\v\c<%(number)"
422 syntax keyword omnimarkAttributeType numbers
423 syntax keyword omnimarkAttributeType nmtoken
424 syntax keyword omnimarkAttributeType nmtokens
425 syntax keyword omnimarkAttributeType nutoken
426 syntax keyword omnimarkAttributeType nutokens
427 syntax keyword omnimarkAttributeType id
428 syntax keyword omnimarkAttributeType idref
429 syntax keyword omnimarkAttributeType idrefs
430 # notation (already omnimarkModifier)
431 # entity (already omnimarkOperator)
432 # entities (already omnimarkOperator)
433syntax keyword omnimarkOperator base
434syntax keyword omnimarkOperator binary
435syntax keyword omnimarkOperator cast
436syntax keyword omnimarkOperator ceiling
437syntax keyword omnimarkOperator children
438syntax keyword omnimarkOperator compiled-date
439syntax keyword omnimarkOperator complement
440syntax match omnimarkOperator "\v\c<%(content\s+of)"
441syntax keyword omnimarkOperator create-attribute-declaration
442syntax keyword omnimarkOperator create-element-declaration
443syntax keyword omnimarkOperator create-element-event
444syntax keyword omnimarkOperator create-processing-instruction-event
445syntax keyword omnimarkOperator create-specified-attribute
446syntax keyword omnimarkOperator create-unspecified-attribute
447syntax keyword omnimarkOperator creating
448syntax match omnimarkOperator "\v\c<%(creator\s+of)"
449syntax keyword omnimarkOperator data-attribute
450syntax keyword omnimarkOperator date
451syntax match omnimarkOperator "\v\c<%(declaration\s+of)"
452syntax keyword omnimarkOperator declared-elements
453syntax keyword omnimarkOperator declared-general-entities
454syntax keyword omnimarkOperator declared-parameter-entities
455syntax keyword omnimarkOperator defaulted
456syntax keyword omnimarkOperator difference
457syntax match omnimarkOperator "\v\c<%(doctype\s+is)"
458syntax keyword omnimarkOperator drop
459syntax match omnimarkOperator "\v\c<%(element\s+is)"
460syntax match omnimarkOperator "\v\c<%(elements\s+of)"
461syntax match omnimarkOperator "\v\c<%(entity\s+is)"
462syntax keyword omnimarkOperator except
463syntax keyword omnimarkOperator exists
464syntax keyword omnimarkOperator exp
465syntax keyword omnimarkOperator external-function
466syntax keyword omnimarkOperator file
467syntax keyword omnimarkOperator floor
468syntax match omnimarkOperator "\v\c<%(function-library\s+of)"
469syntax keyword omnimarkOperator has
470syntax keyword omnimarkOperator hasnt
471 # 'has'/'hasnt' (before 'key'/'^' or 'item'/'@' (other obscure things too?):
472 syntax keyword omnimarkOperator key
473 syntax match omnimarkOperator "\v[\^]"
474 # 'item' is addressed elsewhere - @ needs to be a match, not keyword
475 syntax match omnimarkOperator "\v<[@]"
476syntax keyword omnimarkOperator implied
477syntax keyword omnimarkOperator in-codes
478syntax keyword omnimarkOperator is
479syntax keyword omnimarkOperator isnt
480 # 'is'/'isnt' (usually before, or sometime after, e.g., 'content isnt'):
481 syntax keyword omnimarkOperator attached
482 syntax keyword omnimarkOperator buffer
483 syntax keyword omnimarkOperator catchable
484 syntax keyword omnimarkOperator cdata-entity
485 syntax keyword omnimarkOperator closed
486 syntax keyword omnimarkOperator conref
487 syntax keyword omnimarkOperator content
488 # 'content is' ... empty, any, cdata, rcdata, mixed, conref
489 syntax keyword omnimarkOperator default-entity
490 syntax keyword omnimarkOperator directory
491 # 'entity'/'entities', e.g., 'attribute x is (entity | entities)'
492 syntax match omnimarkOperator "\v\c<%(entit)%(y|ies)"
493 syntax keyword omnimarkOperator external
494 # E.g., 'open s as external-output-function' (v. buffer, etc.) '-call'?
495 syntax match omnimarkOperator "\v\c<%(external-output-function)%(-call)?"
496 syntax keyword omnimarkOperator file
497 syntax keyword omnimarkOperator general
498 syntax keyword omnimarkOperator in-library
499 syntax keyword omnimarkOperator internal
500 syntax keyword omnimarkOperator keyed
501 syntax keyword omnimarkOperator markup-parser
502 syntax keyword omnimarkOperator ndata-entity
503 # These are not to be confused with the omnimarkAction, 'open'
504 syntax match omnimarkOperator "\v\c<%(is\s+open)"
505 syntax match omnimarkOperator "\v\c<%(isnt\s+open)"
506 syntax keyword omnimarkOperator parameter
507 syntax keyword omnimarkOperator past
508 syntax keyword omnimarkOperator public
509 syntax keyword omnimarkOperator readable
510 # These are not to be confused with the omnimarkAction, 'referent'
511 syntax match omnimarkOperator "\v\c<%(is\s+referent)"
512 syntax match omnimarkOperator "\v\c<%(isnt\s+referent)"
513 syntax keyword omnimarkOperator sdata-entity
514 # Deprecated form - markup-parser is recommended
515 syntax keyword omnimarkOperator sgml-parser
516 syntax keyword omnimarkOperator subdoc-entity
517 syntax keyword omnimarkOperator system
518 syntax keyword omnimarkOperator thrown
519syntax match omnimarkOperator "\v\c<%(item)%(\sof)?%(\s%(data-)?attributes)?"
520syntax match omnimarkOperator "\v\c<%(key\s+of)"
521# 'key of attribute'/s not needed: 'key of' and 'attribute' are separate
522# 'key of data-attribute'/s not needed: 'key of' &c. are separate
523# 'key of referents' not needed: 'key of' and 'referents' are separate
524syntax keyword omnimarkOperator last
525syntax keyword omnimarkOperator lastmost
526syntax match omnimarkOperator "\v\c<%(length\s*of)"
527syntax keyword omnimarkOperator literal
528syntax keyword omnimarkOperator ln
529syntax keyword omnimarkOperator log10
530syntax keyword omnimarkOperator lookahead
531# 'lookahead not' not needed: 'lookahead' and 'not' are separate
532syntax keyword omnimarkOperator mask
533syntax keyword omnimarkOperator matches
534syntax keyword omnimarkOperator modulo
535syntax match omnimarkOperator "\v\c<%(name)>%(\s+of)?%(\s+current)?%(\s+element)?"
536syntax keyword omnimarkOperator named
537syntax match omnimarkOperator "\v\c<%(notation\s+equals)"
538syntax match omnimarkOperator "\v\c<%(number\s+of)"
539# 'number of attribute'/s not needed: 'number of' and 'attribute' are separate
540# 'number of current elements' is not needed: 'number of' &c. are separate
541syntax match omnimarkOperator "\v\c<%(number\s+of\s+current\s+subdocuments)"
542# 'number of data-attribute'/s not needed: 'number of' &c. are separate
543# 'number of referents' not needed: 'number of' and 'referents' are separate
544syntax keyword omnimarkOperator occurrence
545syntax match omnimarkOperator "\v\c<%(open\s+element\s+is)"
546syntax match omnimarkOperator "\v\c<%(parent\s+is)"
547syntax match omnimarkOperator "\v\c<%(preparent\s+is)"
548syntax match omnimarkOperator "\v\c<%(previous\s+is)"
549syntax match omnimarkOperator "\v\c<%(public-identifier\s+of)"
550syntax match omnimarkOperator "\v\c<%(referents\s+has\s+key)"
551syntax match omnimarkOperator "\v\c<%(referents\s+is\s+attached)"
552syntax keyword omnimarkOperator round
553syntax keyword omnimarkOperator shift
554syntax keyword omnimarkOperator specified
555syntax keyword omnimarkOperator sqrt
556# E.g., last proper? subelement _element-qualifier_ is/isnt
557syntax keyword omnimarkOperator subelement
558syntax keyword omnimarkOperator system-call
559syntax match omnimarkOperator "\v\c<%(system-identifier\s+of)"
560syntax keyword omnimarkOperator status
561 # E.g., 'status ... is (proper | inclusion)'
562 syntax keyword omnimarkOperator inclusion
563 syntax keyword omnimarkOperator proper
564 # E.g., 'last content {element-qualifier} is #DATA'
565 syntax match omnimarkOperator "\v\c<%(#data)"
566syntax keyword omnimarkOperator take
567# 'this' only appears before 'referent', so requires no standalone 'this'
568syntax match omnimarkOperator "\v\c<%(this\s*referent)"
569syntax keyword omnimarkOperator to
570syntax keyword omnimarkOperator truncate
571syntax keyword omnimarkOperator ul
572syntax keyword omnimarkOperator union
573syntax keyword omnimarkOperator usemap
574syntax keyword omnimarkOperator valued
575syntax keyword omnimarkOperator writable
576syntax keyword omnimarkOperator xmlns-name
577syntax match omnimarkOperator "\v%(\s)%([\\])%(\s)"
578syntax match omnimarkOperator "\v%(\s)([_])%(\s)"
579syntax match omnimarkOperator "\v%(\s)([\|])%(\s)"
580syntax keyword omnimarkOperator or
581syntax match omnimarkOperator "\v%(\s)([\|][\|])%(\s)"
582syntax keyword omnimarkOperator join
583syntax match omnimarkOperator "\v%(\s)([\|][\|][\*])%(\s)"
584syntax keyword omnimarkOperator repeated
585syntax match omnimarkOperator "\v%(\s)([~])"
586# }}}
587# _ pattern {{{
588syntax match omnimarkPattern "\v%(\s)%(\=\|)"
589syntax match omnimarkPattern "\v\c<%(any)%(\+%(\+)?|*%(*)?|\?)?"
590syntax match omnimarkPattern "\v\c<%(any-text)%(\+|*|\?)?"
591syntax match omnimarkPattern "\v\c<%(blank)%(\+|*|\?)?"
592syntax keyword omnimarkPattern cdata
593syntax keyword omnimarkPattern content-end
594syntax keyword omnimarkPattern content-start
595syntax match omnimarkPattern "\v\c<%(digit)%(\+|*|\?)?"
596syntax keyword omnimarkPattern empty
597syntax match omnimarkPattern "\v\c<%(lc)%(\+|*|\?)?"
598syntax match omnimarkPattern "\v\c<%(letter)%(\+|*|\?)?"
599syntax keyword omnimarkPattern line-end
600syntax keyword omnimarkPattern line-start
601syntax keyword omnimarkPattern mixed
602syntax keyword omnimarkPattern non-cdata
603syntax keyword omnimarkPattern non-sdata
604syntax keyword omnimarkPattern null
605syntax keyword omnimarkPattern pcdata
606syntax keyword omnimarkPattern rcdata
607syntax keyword omnimarkPattern sdata
608syntax match omnimarkPattern "\v\c<%(space)%(\+|*|\?)?"
609syntax match omnimarkPattern "\v\c<%(text)%([[:space:]\n])"
610syntax match omnimarkPattern "\v\c<%(uc)%(\+|*|\?)?"
611syntax keyword omnimarkPattern unanchored
612syntax keyword omnimarkPattern value-end
613syntax keyword omnimarkPattern value-start
614syntax match omnimarkPattern "\v\c<%(white-space)%(\+|*|\?)?"
615syntax keyword omnimarkPattern word-end
616syntax keyword omnimarkPattern word-start
617syntax match omnimarkPattern "\v%(\s)%(\|\=)"
618# }}}
619# _ rule {{{
620syntax keyword omnimarkRule data-content
621syntax keyword omnimarkRule document-end
622syntax keyword omnimarkRule document-start
623syntax keyword omnimarkRule document-type-declaration
624syntax keyword omnimarkRule dtd-end
625syntax keyword omnimarkRule dtd-start
626syntax keyword omnimarkRule element
627syntax keyword omnimarkRule epilog-start
628syntax keyword omnimarkRule external-entity
629syntax keyword omnimarkRule external-data-entity
630syntax keyword omnimarkRule external-text-entity
631syntax match omnimarkRule "\v\c<%(external-text-entity\s+#document)"
632syntax keyword omnimarkRule find
633syntax keyword omnimarkRule find-end
634syntax keyword omnimarkRule find-start
635syntax keyword omnimarkRule insertion-break
636syntax keyword omnimarkRule invalid-data
637syntax match omnimarkRule "\v\c<%(marked-section)%(\s+%(cdata|ignore|include-%(end|start)|rcdata))?"
638syntax keyword omnimarkRule markup-comment
639syntax keyword omnimarkRule markup-error
640syntax keyword omnimarkRule process
641syntax keyword omnimarkRule process-end
642syntax keyword omnimarkRule processing-instruction
643syntax keyword omnimarkRule process-start
644syntax keyword omnimarkRule prolog-end
645syntax keyword omnimarkRule prolog-in-error
646syntax keyword omnimarkRule replacement-break
647syntax keyword omnimarkRule sgml-comment
648syntax keyword omnimarkRule sgml-declaration-end
649syntax keyword omnimarkRule sgml-error
650syntax keyword omnimarkRule translate
651syntax keyword omnimarkRule xmlns-change
652# }}}
653# Libraries {{{
654# ombase64
655syntax match omnimarkLibrary "\v\c<%(base64[.])%([orw])%([[:print:]])+"
656# ombcd
657# (NB: abs, ceiling, exp, floor, ln, log10, round, sqrt, and truncate
658# are all operators)
659syntax match omnimarkLibrary "\v\c<%(ombcd-version)"
660# ombessel
661syntax match omnimarkLibrary "\v\c<%(j0|j1|jn|y0|y1|yn)"
662# ombig5
663syntax match omnimarkLibrary "\v\c<%(big5[.])%([orw])%([[:print:]])+"
664# omblowfish and omffblowfish
665syntax match omnimarkLibrary "\v\c<%(blowfish[.])%([deorsw])%(\a|-)+"
666# omcgi
667syntax match omnimarkLibrary "\v\c<%(cgiGet)%([EQ])\a+"
668# omff8859
669syntax match omnimarkLibrary "\v\c<%(iso8859[.])%([iorw])%([[:print:]])+"
670# omfloat
671# (NB: uses same operator names as ombcd except for the following)
672syntax match omnimarkLibrary "\v\c<%(is-nan)"
673syntax match omnimarkLibrary "\v\c<%(omfloat-version)"
674# omdate
675syntax match omnimarkLibrary "\v\c<%(add-to-ymdhms)"
676syntax match omnimarkLibrary "\v\c<%(arpadate-to-ymdhms)"
677syntax match omnimarkLibrary "\v\c<%(format-ymdhms)"
678syntax match omnimarkLibrary "\v\c<%(now-as-ymdhms)"
679syntax match omnimarkLibrary "\v\c<%(round-down-ymdhms)"
680syntax match omnimarkLibrary "\v\c<%(round-up-ymdhms)"
681syntax match omnimarkLibrary "\v\c<%(ymdhms-)%([adjmst])%(\a|-)+"
682syntax match omnimarkLibrary "\v\c<%(ymd-weekday)"
683# omdb
684syntax match omnimarkLibrary "\v\c<%(db[.])%([acdefimopqrstuw])%(\a|-|1)+"
685# omffeuc
686syntax match omnimarkLibrary "\v\c<%(euc[.])%([orw])%(\a|-)+"
687# omffjis
688syntax match omnimarkLibrary "\v\c<%(jis[.])%([orw])%(\a|-)+"
689# omffutf16 and omffutf32
690syntax match omnimarklibrary "\v\c<%(utf)%(16|32)%([.])%([orw])%(\a|-)+"
691# omfloat
692syntax match omnimarklibrary "\v\C<%(FP_)%([a-z])+\d?"
693# omfsys
694syntax match omnimarkLibrary "\v\C<%(FS_)%([CDGLMR])\a+"
695# omftp
696syntax match omnimarkLibrary "\v\c<%(FTP)%([CIL])\a+"
697# omhttp
698syntax match omnimarkLibrary "\v\c<%(Http)%([CORS])\a+"
699# omiobuf
700syntax match omnimarkLibrary "\v\c<%(iobuf[.])%([brw])\a+"
701# omldap
702syntax match omnimarkLibrary "\v\c<%(ldap[.])%([acdemnors])%(\a|-)+"
703# omprocess
704syntax match omnimarkLibrary "\v\c<%(command-line)"
705syntax match omnimarkLibrary "\v\c<%(executable-name)"
706syntax match omnimarkLibrary "\v\c<%(execute)"
707syntax match omnimarkLibrary "\v\c<%(glob)"
708syntax match omnimarkLibrary "\v\c<%(omprocess-version)"
709# omrandom
710syntax match omnimarkLibrary "\v\c<%(random[.])%([eosu])%(\a|-)+"
711# omunicode
712syntax match omnimarkLibrary "\v\c<%(unicode[.])%([bgo])%(\a|-)+"
713# omutf8
714syntax match omnimarkLibrary "\v\c<%(utf8[.])%([bceilmos])%(\a|8|-)+"
715# omioe/omfio
716syntax match omnimarkLibrary "\v\c<%(get-exception-status)"
717syntax match omnimarkLibrary "\v\c<%(io-exception-text)"
718syntax match omnimarkLibrary "\v\c<%(new-io-exception)"
719syntax match omnimarkLibrary "\v\c<%(set-voluntary-end-exception)"
720syntax match omnimarkLibrary "\v\c<%(%(Big5|euc|jis|sjis|utf16)%(-))?%(%(in|out)put-file)"
721# omioprotocol
722syntax match omnimarkLibrary "\v\c<%(IOProtocol)%([EILMS])\a+"
723# ommail
724syntax match omnimarkLibrary "\v\c<%(Mail)%([ILO]\a+)"
725# omtrig
726syntax match omnimarkLibrary "\v\c<%(a)?%(cos%(h)?|sin%(h)?|tan%(h|2)?|hypot)"
727# omnetutl
728syntax match omnimarkLibrary "\v\c<%(from-net-long)"
729syntax match omnimarkLibrary "\v\c<%(net-long)"
730syntax match omnimarkLibrary "\v\c<%(NET)%([GIL]\a+)"
731syntax match omnimarkLibrary "\v\c<%(to-net-long)"
732# omnetutil
733syntax match omnimarkLibrary "\v\c<%(netutil[.])%([fhnot]%(\a|3|2|-)+)"
734# omoci
735syntax match omnimarkLibrary "\v\c<%(OCI_)%([GLoS]\a+)"
736# omodbc
737syntax match omnimarkLibrary "\v\c<%(SQL)%([_])?%([ABCDEFGLMNPRST][[:alpha:]]+)"
738# omsocat
739syntax match omnimarkLibrary "\v\c<%(socat-[clr-])%([[:alpha:]]+)"
740# omsort
741syntax match omnimarkLibrary "\v\c<%(sort[.][os])%(\a|-)+"
742# omutil
743syntax match omnimarkLibrary "\v\c<%(UTIL[_.][EGLmopRSU])%(\a|-)+"
744# omvfs
745syntax match omnimarkLibrary "\v\c<%(vfs[.][cdflmorstuw])%(\a|-)+"
746# tcp
747syntax match omnimarkLibrary "\v\c<%(TCP)%([.])?%([acdegilmoprstw][[:alpha:]-]+)"
748# uri
749syntax match omnimarkLibrary "\v\c<%(uri[.])%([ceopr])%(\a|-)+"
750# wsb
751syntax match omnimarkLibrary "\v\c<%(wsb[.])%([acdfhrsw])%(\a|-)+"
752# }}}
753# Comments {{{
754# -------
755syntax region omnimarkComment start=";" end="$"
756# }}}
757# Strings and format-modifiers {{{
758syntax region omnimarkString matchgroup=Normal start=+'+ end=+'+ skip=+%'+ contains=omnimarkEscape
759syntax region omnimarkString matchgroup=Normal start=+"+ end=+"+ skip=+%"+ contains=omnimarkEscape
760 # This handles format items inside strings:
761 # NB: escape _quoted-character_ allows a new character to be used to
762 # indicate a special character or a format item, rather than the normal %.
763 # The use of escape is deprecated in general, because it leads to
764 # non-standard OmniMark code that can be difficult to understand. It has
765 # not be handled here as it would be almost impossible to do so.
766 # dynamic: %a %b %d %g %i %p %q %v %x %w %y
767 # a - integer data type formatting
768 # b - integer data type formatting
769 # c - parsed data formatting
770 # d - integer data type formatting, BCD data type formatting
771 # g - string data formatting
772 # i - integer data type formatting
773 # p - parsed data formatting
774 # q - parsed data formatting
775 # v - parsed data formatting
776 # x - deprecated format command used instead of g
777 # y - symbol declaration
778 # @ - macro arguments
779 # static: %% %_ %n %t %# %) %" %' %/ %[ %] %@%%
780 # %% - insert an explicit percent sign
781 # %_ - insert an explicit space character
782 # %n - insert an explicit newline character
783 # %t - insert an explicit tab character
784 # %0# through to %255# - insert an explicit byte with given value
785 # %{...}—a sequence of characters, e.g., %16r{0d, 0a}
786 # %#—insert an explicit octothorpe character (#)
787 # %)—insert an explicit closing parenthesis
788 # %"—insert an explicit double quote character
789 # %'—insert an explicit single quote character
790 # %/—indicates a point where line breaking can occur
791 # %[ and %]—protect the delimited text from line breaking
792 # %@%—insert an explicit percent sign inside a macro expansion
793 # % format-modifier a
794 syntax match omnimarkEscape contained =\v\C%(\%%(%(%(\d)*%(f))?%(j|k|l|u|w)*)?a)=
795 # % format-modifier b
796 syntax match omnimarkEscape contained =\v\C%(\%%(%(%(\d)*%(f))?%(\d)?)?b)=
797 # % format-modifier c
798 syntax match omnimarkEscape contained =\v\C%(%(\%%(h|l|u|s|z)*c))=
799 # % format-modifier d
800 syntax match omnimarkEscape contained =\v\C%(\%%(%(%(\d)*%(f|r|s)?)*%(j|k|l|u|z)*)?d)=
801 # % format-modifier g
802 syntax match omnimarkEscape contained =\v\C%(\%%(%(%(\d)*%(f|r|s)?)*%(j|k|l|u|z)*)?g)=
803 # % format-modifier
804 syntax match omnimarkEscape contained =\v\C%(%(\%[abdgipqvxwy%_nt#)"'/\[\]])|%(\%\@\%)|%(\%\d+#)|\%%(\d+r[{]%([0-9A-z, ]+)}))+=
805 # }}}
806# Number {{{
807syntax match omnimarkNumber "\v([[:alpha:]]+)@<![-]?\d+([.]\d+)?"
808# }}}
809# Define default highlighting {{{
810highlight default link omnimarkAction Statement
811highlight default link omnimarkAttributeType Structure
812highlight default link omnimarkDataType Type
813highlight default link omnimarkBuiltinEntity Identifier
814highlight default link omnimarkBuiltinShelf Identifier
815highlight default link omnimarkCatchName Exception
816highlight default link omnimarkConstant Constant
817highlight default link omnimarkControlStructure Conditional
818highlight default link omnimarkDeclaration Keyword
819highlight default link omnimarkElementQualifier Type
820highlight default link omnimarkLibrary Function
821highlight default link omnimarkModifier Keyword
822highlight default link omnimarkOperator Operator
823highlight default link omnimarkPattern Label
824highlight default link omnimarkRule Keyword
825highlight default link omnimarkString String
826highlight default link omnimarkNumber Number
827highlight default link omnimarkComment Comment
828highlight default link omnimarkEscape Special
829highlight default link omnimarkNormal Statement
830# }}}
831syntax sync fromstart
832b:current_syntax = "omnimark"
833# vim: cc=+1 et fdm=marker ft=vim sta sw=2 ts=8 tw=79