vim9script # Vim syntax file # Language: OmniMark # Maintainer: Peter Kenny # Previous Maintainer: Paul Terray # Last Change: 2025-03-23 # License: Vim (see :help license) # History: 2000-10-11 Vintage minimal syntax file (Paul Terray) # # - Syntax is grouped, generally, by type (action to rule), using the # version 12 headings. Refer: # https://developers.stilo.com/docs/html/keyword/type.html # - Deprecated/legacy syntax back to version 4 is included. # - OmniMark is largely case insensitive, with handled exceptions (e.g., %g) # ---------------------------------------------------------------------------- syntax case ignore # Current syntax exists: finish {{{ if exists("b:current_syntax") finish endif # }}} # Keyword characters {{{ # !#%&*+-/0123456789<=>@ # ABCDEFGHIJKLMNOPQRSTUVWXYZ # \_abcdefghijklmnopqrstuvwxyz|~ setlocal iskeyword=33,35,37-38,42-43,45,47-57,60-62,64-90,92,95,97-122,124,126 # }}} # _ action {{{ syntax keyword omnimarkAction activate syntax keyword omnimarkAction assert syntax keyword omnimarkAction clear syntax keyword omnimarkAction close syntax keyword omnimarkAction collect-garbage syntax match omnimarkAction "\v\c<%(copy)%(-clear)?" syntax keyword omnimarkAction deactivate syntax keyword omnimarkAction decrement syntax keyword omnimarkAction discard syntax keyword omnimarkAction flush syntax match omnimarkAction "\v\c<%(halt)%(-everything)?" syntax keyword omnimarkAction increment syntax keyword omnimarkAction log syntax keyword omnimarkAction log-message syntax keyword omnimarkAction match syntax keyword omnimarkAction new # new takes before and after (as in new x{"wilma"} after [2]) syntax keyword omnimarkAction after syntax keyword omnimarkAction before # This is the only way 'next' is used (and it cannot be 'isnt'): syntax match omnimarkAction "\v\c<%(next\s+group\s+is)" syntax keyword omnimarkAction not-reached syntax keyword omnimarkAction open syntax match omnimarkAction "\v\c<%(output)%(-to)?" syntax keyword omnimarkAction put # When alone, 'referent' is nearly always 'put...referent,' which is an action syntax keyword omnimarkAction referent syntax match omnimarkAction "\v\c<%(remove)%(\s+key\s+of)?" syntax keyword omnimarkAction reopen syntax keyword omnimarkAction reset syntax keyword omnimarkAction return # 'scan' because it can start a line in a block of 'do *-parse ... done' syntax keyword omnimarkAction scan syntax match omnimarkAction "\v\c<%(set)%(\s+%(buffer|creator\s+of|external-function|file|function-library|key\s+of|new|referent|stream))?" syntax keyword omnimarkAction sgml-in syntax keyword omnimarkAction sgml-out syntax keyword omnimarkAction signal syntax keyword omnimarkAction submit syntax keyword omnimarkAction suppress syntax keyword omnimarkAction throw syntax keyword omnimarkAction void # }}} # _ built-in data type {{{ # attribute-declaration: Every attribute-declaration instance has two # properties: attribute-default-declaration and # attribute-value-declaration # attribute-default-declaration: is the abstract type of declared defaults for # unspecified attribute values. Its concrete # instances can be obtained with the following # four constants: syntax keyword omnimarkConstant attribute-declared-conref syntax keyword omnimarkConstant attribute-declared-current syntax keyword omnimarkConstant attribute-declared-implied syntax keyword omnimarkConstant attribute-declared-required # and with two operators which take a string # default value argument: syntax match omnimarkOperator "\v\c<%(attribute-declared-defaulted\s+to)" syntax match omnimarkOperator "\v\c<%(attribute-declared-fixed to)" # attribute-value-declaration: is the abstract type of values that an # attribute is declared to accept. Its concrete # instances can be obtained with the following # constants: syntax match omnimarkConstant "\v\c<%(attribute-declared-fixed to)" syntax keyword omnimarkConstant attribute-declared-id syntax keyword omnimarkConstant attribute-declared-idref syntax keyword omnimarkConstant attribute-declared-idrefs syntax keyword omnimarkConstant attribute-declared-name syntax keyword omnimarkConstant attribute-declared-names syntax keyword omnimarkConstant attribute-declared-nmtoken syntax keyword omnimarkConstant attribute-declared-nmtokens syntax keyword omnimarkConstant attribute-declared-number syntax keyword omnimarkConstant attribute-declared-numbers syntax keyword omnimarkConstant attribute-declared-nutoken syntax keyword omnimarkConstant attribute-declared-nutokens # and with one operator that takes a string shelf # argument listing all the values allowed for the # attribute: syntax keyword omnimarkOperator attribute-declared-group # content-model - the following six constants are the only possible values: syntax keyword omnimarkConstant any-content-model syntax keyword omnimarkConstant cdata-content-model syntax keyword omnimarkConstant element-content-model syntax keyword omnimarkConstant empty-content-model syntax keyword omnimarkConstant mixed-content-model syntax keyword omnimarkConstant rcdata-content-model # refer also: # developers.stilo.com/docs/html/keyword/create-element-declaration.html # # declared-attribute is and abstract type with subtypes: # implied-attribute # specified-attribute # dtd abstract data type has subtypes: # sgml-dtd # xml-dtd # element-declaration # entity-declaration # markup-element-event # markup-event has subtypes: # markup-point-event # markup-region-event # }}} # _ built-in entity {{{ syntax match omnimarkBuiltinEntity "\v\c<%(#capacity)" syntax match omnimarkBuiltinEntity "\v\c<%(#charset)" syntax match omnimarkBuiltinEntity "\v\c<%(#document)" syntax match omnimarkBuiltinEntity "\v\c<%(#dtd)" syntax match omnimarkBuiltinEntity "\v\c<%(#implied)" syntax match omnimarkBuiltinEntity "\v\c<%(#schema)" syntax match omnimarkBuiltinEntity "\v\c<%(#syntax)" # }}} # _ built-in shelf {{{ syntax match omnimarkBuiltinShelf "\v\c<%(#additional-info)" syntax match omnimarkBuiltinShelf "\v\c<%(#appinfo)" syntax match omnimarkBuiltinShelf "\v\c<%(#args)" syntax match omnimarkBuiltinShelf "\v\c<%(#class)" syntax match omnimarkBuiltinShelf "\v\c<%(#command-line-names)" syntax match omnimarkBuiltinShelf "\v\c<%(#console)" syntax match omnimarkBuiltinShelf "\v\c<%(#content)" syntax match omnimarkBuiltinShelf "\v\c<%(#current-dtd)" syntax match omnimarkBuiltinShelf "\v\c<%(#current-input)" syntax match omnimarkBuiltinShelf "\v\c<%(#current-markup-event)" syntax match omnimarkBuiltinShelf "\v\c<%(#current-output)" syntax match omnimarkBuiltinShelf "\v\c<%(#doctype)" syntax match omnimarkBuiltinShelf "\v\c<%(#error)" syntax match omnimarkBuiltinShelf "\v\c<%(#error-code)" syntax match omnimarkBuiltinShelf "\v\c<%(#file-name)" syntax match omnimarkBuiltinShelf "\v\c<%(#language-version)" syntax match omnimarkBuiltinShelf "\v\c<%(#libpath)" syntax match omnimarkBuiltinShelf "\v\c<%(#library)" syntax match omnimarkBuiltinShelf "\v\c<%(#libvalue)" syntax match omnimarkBuiltinShelf "\v\c<%(#line-number)" syntax match omnimarkBuiltinShelf "\v\c<%(#log)" syntax match omnimarkBuiltinShelf "\v\c<%(#main-input)" syntax match omnimarkBuiltinShelf "\v\c<%(#main-output)" syntax match omnimarkBuiltinShelf "\v\c<%(#markup-error-count)" syntax match omnimarkBuiltinShelf "\v\c<%(#markup-error-total)" syntax match omnimarkBuiltinShelf "\v\c<%(#markup-parser)" syntax match omnimarkBuiltinShelf "\v\c<%(#markup-warning-count)" syntax match omnimarkBuiltinShelf "\v\c<%(#markup-warning-total)" syntax match omnimarkBuiltinShelf "\v\c<%(#message)" syntax match omnimarkBuiltinShelf "\v\c<%(#output)" syntax match omnimarkBuiltinShelf "\v\c<%(#platform-info)" syntax match omnimarkBuiltinShelf "\v\c<%(#process-input)" syntax match omnimarkBuiltinShelf "\v\c<%(#process-output)" syntax match omnimarkBuiltinShelf "\v\c<%(#recovery-info)" syntax match omnimarkBuiltinShelf "\v\c<%(#sgml)" syntax match omnimarkBuiltinShelf "\v\c<%(#sgml-error-count)" syntax match omnimarkBuiltinShelf "\v\c<%(#sgml-error-total)" syntax match omnimarkBuiltinShelf "\v\c<%(#sgml-warning-count)" syntax match omnimarkBuiltinShelf "\v\c<%(#sgml-warning-total)" syntax match omnimarkBuiltinShelf "\v\c<%(#suppress)" syntax match omnimarkBuiltinShelf "\v\c<%(#xmlns-names)" syntax keyword omnimarkBuiltinShelf attributes syntax match omnimarkBuiltinShelf "\v\c<%(current)%(\s+%(element%(s)?|dtd|sgml-dtd))" syntax keyword omnimarkBuiltinShelf data-attributes syntax keyword omnimarkBuiltinShelf referents syntax keyword omnimarkBuiltinShelf sgml-dtds # deprecated synonym for sgml-dtds: syntax keyword omnimarkBuiltinShelf dtds syntax keyword omnimarkBuiltinShelf xml-dtds syntax match omnimarkBuiltinShelf "\v\c<%(specified\s+attributes)" # }}} # _ catch name {{{ syntax match omnimarkCatchName "\v\c<%(#external-exception)" # external exception parameters syntax keyword omnimarkCatchName identity syntax keyword omnimarkCatchName message syntax keyword omnimarkCatchName location syntax match omnimarkCatchName "\v\c<%(#markup-end)" syntax match omnimarkCatchName "\v\c<%(#markup-point)" syntax match omnimarkCatchName "\v\c<%(#markup-start)" syntax match omnimarkCatchName "\v\c<%(#program-error)" # }}} # _ constant {{{ syntax keyword omnimarkConstant false syntax keyword omnimarkConstant true # Example: local stream u initial {unattached} syntax keyword omnimarkConstant unattached # }}} # _ control structure {{{ syntax match omnimarkControlStructure "\v\c<%(#first)" syntax match omnimarkControlStructure "\v\c<%(#group)" syntax match omnimarkControlStructure "\v\c<%(#item)" syntax match omnimarkControlStructure "\v\c<%(#last)" syntax match omnimarkControlStructure "\v%(\s)?%(-\>)%(\s)?" syntax keyword omnimarkControlStructure again syntax keyword omnimarkControlStructure always syntax keyword omnimarkControlStructure as syntax keyword omnimarkControlStructure case syntax keyword omnimarkControlStructure catch syntax match omnimarkControlStructure "\v\c<%(do)>%(%(\s|\n)+%((markup|sgml|xml)-parse|scan|select|select-type|skip%(\s+over)?|unless|when))?" # with id-checking and with utf-8, example: # do sgml-parse document with id-checking false scan file "my.sgml" syntax keyword omnimarkControlStructure id-checking syntax keyword omnimarkControlStructure utf-8 syntax keyword omnimarkControlStructure with syntax keyword omnimarkControlStructure done syntax keyword omnimarkControlStructure else syntax keyword omnimarkControlStructure exit syntax match omnimarkControlStructure "\v\c<%(repeat)>%(\s+%(for|over%(\s+current elements)?|scan|to))?" # Example: repeat over reversed syntax keyword omnimarkControlStructure reversed # Note: repeat over attribute(s) not needed - handled separately # Note: repeat over data-attribute(s) not needed - handled separately # Note: repeat over referents not needed - handled separately syntax keyword omnimarkControlStructure rethrow syntax keyword omnimarkControlStructure select syntax keyword omnimarkControlStructure unless syntax match omnimarkControlStructure "\v\c<%(using)%( %(%(data-)?attribute%(s)?|catch|group|input as|nested-referents|output\s+as|referents))?" syntax keyword omnimarkControlStructure when # }}} # _ data type {{{ # (not a v12 heading) syntax keyword omnimarkDataType bcd syntax keyword omnimarkDataType counter # db.database data type - refer omdb, below, for library functions syntax match omnimarkDataType "\v\c<%(db)%([.])?%(database)" syntax keyword omnimarkDataType document syntax keyword omnimarkDataType float syntax keyword omnimarkDataType instance syntax match omnimarkDataType "\v\c<%(int32)" syntax keyword omnimarkDataType integer syntax match omnimarkDataType "\v\c<%(markup\s+sink)" syntax match omnimarkDataType "\v\c<%(markup\s+source)" syntax keyword omnimarkDataType pattern syntax keyword omnimarkDataType string syntax match omnimarkDataType "\v\c<%(string\s+sink)" syntax match omnimarkDataType "\v\c<%(string\s+source)" syntax keyword omnimarkDataType stream syntax keyword omnimarkDataType string syntax keyword omnimarkDataType subdocument syntax keyword omnimarkDataType switch # }}} # _ declaration/definition {{{ syntax keyword omnimarkDeclaration constant syntax keyword omnimarkDeclaration context-translate syntax keyword omnimarkDeclaration created by syntax keyword omnimarkDeclaration cross-translate syntax keyword omnimarkDeclaration declare syntax match omnimarkDeclaration "\v\c<%(declare)%(\s+%(data-letters|function-library|heralded-names|markup-identification))?" # Note: declare #error, #main-input, #main-output, #process-input, # #process-output, catch, data-letters, function-library, letters, # name-letters, no-default-io, opaque, record # - Those are all handed as separate keywords/matches syntax match omnimarkDeclaration "\v\c<%(define\s+conversion-function)" syntax match omnimarkDeclaration "\v\c<%(define\s+external)\s+%(source\s+)?%(function)" # in function-library is part of an external function syntax match omnimarkDeclaration "\v\c<%(in\s+function-library)" syntax match omnimarkDeclaration "\v\c<%(define\s+external\s+output)" syntax match omnimarkDeclaration "\v\c<%(define\s+function)" syntax match omnimarkDeclaration "\v\c<%(define\s+\w+function)" # Example: define integer function add (value integer x, value ...) syntax keyword omnimarkDeclaration value syntax match omnimarkDeclaration "\v\c<%(define\s+infix-function)" syntax match omnimarkDeclaration "\v\c<%(define\s+overloaded\s+function)" syntax match omnimarkDeclaration "\v\c<%(define\s+string\s+sink\s+function)" syntax match omnimarkDeclaration "\v\c<%(define\s+string\s+source\s+function)" # Some combinations are missed, so the general, 'define', is needed too: syntax match omnimarkDeclaration "\v\c<%(define\s+)" syntax keyword omnimarkDeclaration delimiter syntax keyword omnimarkDeclaration domain-bound syntax keyword omnimarkDeclaration down-translate syntax keyword omnimarkDeclaration dynamic syntax keyword omnimarkDeclaration elsewhere syntax keyword omnimarkDeclaration escape syntax match omnimarkDeclaration "\v\c<%(export\s+as\s+opaque)" syntax keyword omnimarkDeclaration export syntax keyword omnimarkDeclaration field syntax keyword omnimarkDeclaration function syntax keyword omnimarkDeclaration global syntax match omnimarkDeclaration "\v\c<%(group)%(s)?" syntax keyword omnimarkDeclaration import syntax match omnimarkDeclaration "\v\c<%(include)%(-guard)?" syntax match omnimarkDeclaration "\v\c<%(initial)%(-size)?" syntax keyword omnimarkDeclaration letters syntax keyword omnimarkDeclaration library syntax keyword omnimarkDeclaration local syntax match omnimarkDeclaration "\v\c<%(macro)%(-end)?" # macros can take an arg and/or a token (or args or tokens) syntax keyword omnimarkDeclaration arg syntax keyword omnimarkDeclaration token syntax keyword omnimarkDeclaration modifiable syntax keyword omnimarkDeclaration module syntax keyword omnimarkDeclaration name-letters syntax match omnimarkDeclaration "\v\c<%(namecase\s+entity)" syntax match omnimarkDeclaration "\v\c<%(namecase\s+general)" syntax keyword omnimarkDeclaration newline syntax keyword omnimarkDeclaration no-default-io syntax keyword omnimarkDeclaration opaque syntax keyword omnimarkDeclaration optional syntax keyword omnimarkDeclaration overriding syntax match omnimarkDeclaration "\v\c<%(prefixed\s+by)" syntax keyword omnimarkDeclaration read-only syntax keyword omnimarkDeclaration record syntax keyword omnimarkDeclaration remainder syntax keyword omnimarkDeclaration require syntax keyword omnimarkDeclaration save syntax keyword omnimarkDeclaration save-clear syntax keyword omnimarkDeclaration silent-referent syntax keyword omnimarkDeclaration size syntax keyword omnimarkDeclaration supply syntax keyword omnimarkDeclaration symbol syntax keyword omnimarkDeclaration unprefixed syntax keyword omnimarkDeclaration up-translate syntax keyword omnimarkDeclaration use syntax keyword omnimarkDeclaration variable syntax keyword omnimarkDeclaration write-only # }}} # _ element qualifier {{{ syntax keyword omnimarkElementQualifier ancestor syntax keyword omnimarkElementQualifier doctype syntax keyword omnimarkElementQualifier document-element syntax match omnimarkElementQualifier "\v\c<%(open\s+element)" syntax keyword omnimarkElementQualifier parent syntax keyword omnimarkElementQualifier preparent syntax keyword omnimarkElementQualifier previous # }}} # _ modifier {{{ syntax match omnimarkModifier "\v\c<%(#base)" syntax match omnimarkModifier "\v\c<%(#full)" syntax match omnimarkModifier "\v\c<%(#xmlns)" syntax keyword omnimarkModifier append syntax keyword omnimarkModifier binary-input syntax keyword omnimarkModifier binary-mode syntax keyword omnimarkModifier binary-output syntax keyword omnimarkModifier break-width syntax keyword omnimarkModifier buffered syntax match omnimarkModifier "\v\c<%(declare\s+#main-output\s+has\s+domain-free)" syntax keyword omnimarkModifier defaulting syntax keyword omnimarkModifier domain-free syntax keyword omnimarkModifier notation # of may be standalone, e.g., data-attribute colwidth of (attribute name) syntax match omnimarkModifier "\v\c<%(of)%(\s%(ancestor|doctype|element|open element|%(pre)?parent))?" syntax keyword omnimarkModifier referents-allowed syntax keyword omnimarkModifier referents-displayed syntax keyword omnimarkModifier referents-not-allowed syntax keyword omnimarkModifier text-mode syntax keyword omnimarkModifier unbuffered # : (field selection operator) [not included] # ` (keyword access character) [not included] # }}} # _ operator {{{ syntax keyword omnimarkOperator ! syntax keyword omnimarkOperator not syntax keyword omnimarkOperator != # 'isnt equal' is handled by separate keywords syntax keyword omnimarkOperator !== syntax match omnimarkOperator "\%(#!\)" syntax match omnimarkOperator "\v\c<%(#empty)" # Example: usemap is #none: syntax match omnimarkOperator "\v\c<%(#none)" syntax keyword omnimarkOperator % syntax keyword omnimarkOperator format syntax keyword omnimarkOperator & syntax keyword omnimarkOperator and syntax keyword omnimarkOperator * syntax keyword omnimarkOperator times syntax keyword omnimarkOperator ** syntax keyword omnimarkOperator power syntax keyword omnimarkOperator + syntax keyword omnimarkOperator plus syntax keyword omnimarkOperator - syntax keyword omnimarkOperator minus syntax keyword omnimarkOperator negate syntax keyword omnimarkOperator / syntax keyword omnimarkOperator divide syntax keyword omnimarkOperator < syntax keyword omnimarkOperator less-than syntax keyword omnimarkOperator greater-equal syntax keyword omnimarkOperator <= syntax keyword omnimarkOperator less-equal syntax keyword omnimarkOperator = syntax keyword omnimarkOperator equal # 'is equal' is handled by separate keywords syntax keyword omnimarkOperator == syntax match omnimarkOperator "\v<[=][>]\s*" syntax keyword omnimarkOperator > syntax keyword omnimarkOperator greater-than syntax keyword omnimarkOperator >= syntax keyword omnimarkOperator greater-equal syntax keyword omnimarkOperator abs syntax keyword omnimarkOperator active syntax keyword omnimarkOperator attribute # attribute is defaulted, implied, specified: split to single keywords # because it can be isnt too. Similarly for ancestor (is/isnt) # with ancestor being an element qualifier. # Tests for element attributes, e.g.: # do when attribute myid is (id | idref | idrefs) # cdata (already omnimarkPattern) # name (already omnimarkOperator) syntax keyword omnimarkAttributeType names # number: match rather than keyword since "number of" is an operator syntax match omnimarkAttributeType "\v\c<%(number)" syntax keyword omnimarkAttributeType numbers syntax keyword omnimarkAttributeType nmtoken syntax keyword omnimarkAttributeType nmtokens syntax keyword omnimarkAttributeType nutoken syntax keyword omnimarkAttributeType nutokens syntax keyword omnimarkAttributeType id syntax keyword omnimarkAttributeType idref syntax keyword omnimarkAttributeType idrefs # notation (already omnimarkModifier) # entity (already omnimarkOperator) # entities (already omnimarkOperator) syntax keyword omnimarkOperator base syntax keyword omnimarkOperator binary syntax keyword omnimarkOperator cast syntax keyword omnimarkOperator ceiling syntax keyword omnimarkOperator children syntax keyword omnimarkOperator compiled-date syntax keyword omnimarkOperator complement syntax match omnimarkOperator "\v\c<%(content\s+of)" syntax keyword omnimarkOperator create-attribute-declaration syntax keyword omnimarkOperator create-element-declaration syntax keyword omnimarkOperator create-element-event syntax keyword omnimarkOperator create-processing-instruction-event syntax keyword omnimarkOperator create-specified-attribute syntax keyword omnimarkOperator create-unspecified-attribute syntax keyword omnimarkOperator creating syntax match omnimarkOperator "\v\c<%(creator\s+of)" syntax keyword omnimarkOperator data-attribute syntax keyword omnimarkOperator date syntax match omnimarkOperator "\v\c<%(declaration\s+of)" syntax keyword omnimarkOperator declared-elements syntax keyword omnimarkOperator declared-general-entities syntax keyword omnimarkOperator declared-parameter-entities syntax keyword omnimarkOperator defaulted syntax keyword omnimarkOperator difference syntax match omnimarkOperator "\v\c<%(doctype\s+is)" syntax keyword omnimarkOperator drop syntax match omnimarkOperator "\v\c<%(element\s+is)" syntax match omnimarkOperator "\v\c<%(elements\s+of)" syntax match omnimarkOperator "\v\c<%(entity\s+is)" syntax keyword omnimarkOperator except syntax keyword omnimarkOperator exists syntax keyword omnimarkOperator exp syntax keyword omnimarkOperator external-function syntax keyword omnimarkOperator file syntax keyword omnimarkOperator floor syntax match omnimarkOperator "\v\c<%(function-library\s+of)" syntax keyword omnimarkOperator has syntax keyword omnimarkOperator hasnt # 'has'/'hasnt' (before 'key'/'^' or 'item'/'@' (other obscure things too?): syntax keyword omnimarkOperator key syntax match omnimarkOperator "\v[\^]" # 'item' is addressed elsewhere - @ needs to be a match, not keyword syntax match omnimarkOperator "\v<[@]" syntax keyword omnimarkOperator implied syntax keyword omnimarkOperator in-codes syntax keyword omnimarkOperator is syntax keyword omnimarkOperator isnt # 'is'/'isnt' (usually before, or sometime after, e.g., 'content isnt'): syntax keyword omnimarkOperator attached syntax keyword omnimarkOperator buffer syntax keyword omnimarkOperator catchable syntax keyword omnimarkOperator cdata-entity syntax keyword omnimarkOperator closed syntax keyword omnimarkOperator conref syntax keyword omnimarkOperator content # 'content is' ... empty, any, cdata, rcdata, mixed, conref syntax keyword omnimarkOperator default-entity syntax keyword omnimarkOperator directory # 'entity'/'entities', e.g., 'attribute x is (entity | entities)' syntax match omnimarkOperator "\v\c<%(entit)%(y|ies)" syntax keyword omnimarkOperator external # E.g., 'open s as external-output-function' (v. buffer, etc.) '-call'? syntax match omnimarkOperator "\v\c<%(external-output-function)%(-call)?" syntax keyword omnimarkOperator file syntax keyword omnimarkOperator general syntax keyword omnimarkOperator in-library syntax keyword omnimarkOperator internal syntax keyword omnimarkOperator keyed syntax keyword omnimarkOperator markup-parser syntax keyword omnimarkOperator ndata-entity # These are not to be confused with the omnimarkAction, 'open' syntax match omnimarkOperator "\v\c<%(is\s+open)" syntax match omnimarkOperator "\v\c<%(isnt\s+open)" syntax keyword omnimarkOperator parameter syntax keyword omnimarkOperator past syntax keyword omnimarkOperator public syntax keyword omnimarkOperator readable # These are not to be confused with the omnimarkAction, 'referent' syntax match omnimarkOperator "\v\c<%(is\s+referent)" syntax match omnimarkOperator "\v\c<%(isnt\s+referent)" syntax keyword omnimarkOperator sdata-entity # Deprecated form - markup-parser is recommended syntax keyword omnimarkOperator sgml-parser syntax keyword omnimarkOperator subdoc-entity syntax keyword omnimarkOperator system syntax keyword omnimarkOperator thrown syntax match omnimarkOperator "\v\c<%(item)%(\sof)?%(\s%(data-)?attributes)?" syntax match omnimarkOperator "\v\c<%(key\s+of)" # 'key of attribute'/s not needed: 'key of' and 'attribute' are separate # 'key of data-attribute'/s not needed: 'key of' &c. are separate # 'key of referents' not needed: 'key of' and 'referents' are separate syntax keyword omnimarkOperator last syntax keyword omnimarkOperator lastmost syntax match omnimarkOperator "\v\c<%(length\s*of)" syntax keyword omnimarkOperator literal syntax keyword omnimarkOperator ln syntax keyword omnimarkOperator log10 syntax keyword omnimarkOperator lookahead # 'lookahead not' not needed: 'lookahead' and 'not' are separate syntax keyword omnimarkOperator mask syntax keyword omnimarkOperator matches syntax keyword omnimarkOperator modulo syntax match omnimarkOperator "\v\c<%(name)>%(\s+of)?%(\s+current)?%(\s+element)?" syntax keyword omnimarkOperator named syntax match omnimarkOperator "\v\c<%(notation\s+equals)" syntax match omnimarkOperator "\v\c<%(number\s+of)" # 'number of attribute'/s not needed: 'number of' and 'attribute' are separate # 'number of current elements' is not needed: 'number of' &c. are separate syntax match omnimarkOperator "\v\c<%(number\s+of\s+current\s+subdocuments)" # 'number of data-attribute'/s not needed: 'number of' &c. are separate # 'number of referents' not needed: 'number of' and 'referents' are separate syntax keyword omnimarkOperator occurrence syntax match omnimarkOperator "\v\c<%(open\s+element\s+is)" syntax match omnimarkOperator "\v\c<%(parent\s+is)" syntax match omnimarkOperator "\v\c<%(preparent\s+is)" syntax match omnimarkOperator "\v\c<%(previous\s+is)" syntax match omnimarkOperator "\v\c<%(public-identifier\s+of)" syntax match omnimarkOperator "\v\c<%(referents\s+has\s+key)" syntax match omnimarkOperator "\v\c<%(referents\s+is\s+attached)" syntax keyword omnimarkOperator round syntax keyword omnimarkOperator shift syntax keyword omnimarkOperator specified syntax keyword omnimarkOperator sqrt # E.g., last proper? subelement _element-qualifier_ is/isnt syntax keyword omnimarkOperator subelement syntax keyword omnimarkOperator system-call syntax match omnimarkOperator "\v\c<%(system-identifier\s+of)" syntax keyword omnimarkOperator status # E.g., 'status ... is (proper | inclusion)' syntax keyword omnimarkOperator inclusion syntax keyword omnimarkOperator proper # E.g., 'last content {element-qualifier} is #DATA' syntax match omnimarkOperator "\v\c<%(#data)" syntax keyword omnimarkOperator take # 'this' only appears before 'referent', so requires no standalone 'this' syntax match omnimarkOperator "\v\c<%(this\s*referent)" syntax keyword omnimarkOperator to syntax keyword omnimarkOperator truncate syntax keyword omnimarkOperator ul syntax keyword omnimarkOperator union syntax keyword omnimarkOperator usemap syntax keyword omnimarkOperator valued syntax keyword omnimarkOperator writable syntax keyword omnimarkOperator xmlns-name syntax match omnimarkOperator "\v%(\s)%([\\])%(\s)" syntax match omnimarkOperator "\v%(\s)([_])%(\s)" syntax match omnimarkOperator "\v%(\s)([\|])%(\s)" syntax keyword omnimarkOperator or syntax match omnimarkOperator "\v%(\s)([\|][\|])%(\s)" syntax keyword omnimarkOperator join syntax match omnimarkOperator "\v%(\s)([\|][\|][\*])%(\s)" syntax keyword omnimarkOperator repeated syntax match omnimarkOperator "\v%(\s)([~])" # }}} # _ pattern {{{ syntax match omnimarkPattern "\v%(\s)%(\=\|)" syntax match omnimarkPattern "\v\c<%(any)%(\+%(\+)?|*%(*)?|\?)?" syntax match omnimarkPattern "\v\c<%(any-text)%(\+|*|\?)?" syntax match omnimarkPattern "\v\c<%(blank)%(\+|*|\?)?" syntax keyword omnimarkPattern cdata syntax keyword omnimarkPattern content-end syntax keyword omnimarkPattern content-start syntax match omnimarkPattern "\v\c<%(digit)%(\+|*|\?)?" syntax keyword omnimarkPattern empty syntax match omnimarkPattern "\v\c<%(lc)%(\+|*|\?)?" syntax match omnimarkPattern "\v\c<%(letter)%(\+|*|\?)?" syntax keyword omnimarkPattern line-end syntax keyword omnimarkPattern line-start syntax keyword omnimarkPattern mixed syntax keyword omnimarkPattern non-cdata syntax keyword omnimarkPattern non-sdata syntax keyword omnimarkPattern null syntax keyword omnimarkPattern pcdata syntax keyword omnimarkPattern rcdata syntax keyword omnimarkPattern sdata syntax match omnimarkPattern "\v\c<%(space)%(\+|*|\?)?" syntax match omnimarkPattern "\v\c<%(text)%([[:space:]\n])" syntax match omnimarkPattern "\v\c<%(uc)%(\+|*|\?)?" syntax keyword omnimarkPattern unanchored syntax keyword omnimarkPattern value-end syntax keyword omnimarkPattern value-start syntax match omnimarkPattern "\v\c<%(white-space)%(\+|*|\?)?" syntax keyword omnimarkPattern word-end syntax keyword omnimarkPattern word-start syntax match omnimarkPattern "\v%(\s)%(\|\=)" # }}} # _ rule {{{ syntax keyword omnimarkRule data-content syntax keyword omnimarkRule document-end syntax keyword omnimarkRule document-start syntax keyword omnimarkRule document-type-declaration syntax keyword omnimarkRule dtd-end syntax keyword omnimarkRule dtd-start syntax keyword omnimarkRule element syntax keyword omnimarkRule epilog-start syntax keyword omnimarkRule external-entity syntax keyword omnimarkRule external-data-entity syntax keyword omnimarkRule external-text-entity syntax match omnimarkRule "\v\c<%(external-text-entity\s+#document)" syntax keyword omnimarkRule find syntax keyword omnimarkRule find-end syntax keyword omnimarkRule find-start syntax keyword omnimarkRule insertion-break syntax keyword omnimarkRule invalid-data syntax match omnimarkRule "\v\c<%(marked-section)%(\s+%(cdata|ignore|include-%(end|start)|rcdata))?" syntax keyword omnimarkRule markup-comment syntax keyword omnimarkRule markup-error syntax keyword omnimarkRule process syntax keyword omnimarkRule process-end syntax keyword omnimarkRule processing-instruction syntax keyword omnimarkRule process-start syntax keyword omnimarkRule prolog-end syntax keyword omnimarkRule prolog-in-error syntax keyword omnimarkRule replacement-break syntax keyword omnimarkRule sgml-comment syntax keyword omnimarkRule sgml-declaration-end syntax keyword omnimarkRule sgml-error syntax keyword omnimarkRule translate syntax keyword omnimarkRule xmlns-change # }}} # Libraries {{{ # ombase64 syntax match omnimarkLibrary "\v\c<%(base64[.])%([orw])%([[:print:]])+" # ombcd # (NB: abs, ceiling, exp, floor, ln, log10, round, sqrt, and truncate # are all operators) syntax match omnimarkLibrary "\v\c<%(ombcd-version)" # ombessel syntax match omnimarkLibrary "\v\c<%(j0|j1|jn|y0|y1|yn)" # ombig5 syntax match omnimarkLibrary "\v\c<%(big5[.])%([orw])%([[:print:]])+" # omblowfish and omffblowfish syntax match omnimarkLibrary "\v\c<%(blowfish[.])%([deorsw])%(\a|-)+" # omcgi syntax match omnimarkLibrary "\v\c<%(cgiGet)%([EQ])\a+" # omff8859 syntax match omnimarkLibrary "\v\c<%(iso8859[.])%([iorw])%([[:print:]])+" # omfloat # (NB: uses same operator names as ombcd except for the following) syntax match omnimarkLibrary "\v\c<%(is-nan)" syntax match omnimarkLibrary "\v\c<%(omfloat-version)" # omdate syntax match omnimarkLibrary "\v\c<%(add-to-ymdhms)" syntax match omnimarkLibrary "\v\c<%(arpadate-to-ymdhms)" syntax match omnimarkLibrary "\v\c<%(format-ymdhms)" syntax match omnimarkLibrary "\v\c<%(now-as-ymdhms)" syntax match omnimarkLibrary "\v\c<%(round-down-ymdhms)" syntax match omnimarkLibrary "\v\c<%(round-up-ymdhms)" syntax match omnimarkLibrary "\v\c<%(ymdhms-)%([adjmst])%(\a|-)+" syntax match omnimarkLibrary "\v\c<%(ymd-weekday)" # omdb syntax match omnimarkLibrary "\v\c<%(db[.])%([acdefimopqrstuw])%(\a|-|1)+" # omffeuc syntax match omnimarkLibrary "\v\c<%(euc[.])%([orw])%(\a|-)+" # omffjis syntax match omnimarkLibrary "\v\c<%(jis[.])%([orw])%(\a|-)+" # omffutf16 and omffutf32 syntax match omnimarklibrary "\v\c<%(utf)%(16|32)%([.])%([orw])%(\a|-)+" # omfloat syntax match omnimarklibrary "\v\C<%(FP_)%([a-z])+\d?" # omfsys syntax match omnimarkLibrary "\v\C<%(FS_)%([CDGLMR])\a+" # omftp syntax match omnimarkLibrary "\v\c<%(FTP)%([CIL])\a+" # omhttp syntax match omnimarkLibrary "\v\c<%(Http)%([CORS])\a+" # omiobuf syntax match omnimarkLibrary "\v\c<%(iobuf[.])%([brw])\a+" # omldap syntax match omnimarkLibrary "\v\c<%(ldap[.])%([acdemnors])%(\a|-)+" # omprocess syntax match omnimarkLibrary "\v\c<%(command-line)" syntax match omnimarkLibrary "\v\c<%(executable-name)" syntax match omnimarkLibrary "\v\c<%(execute)" syntax match omnimarkLibrary "\v\c<%(glob)" syntax match omnimarkLibrary "\v\c<%(omprocess-version)" # omrandom syntax match omnimarkLibrary "\v\c<%(random[.])%([eosu])%(\a|-)+" # omunicode syntax match omnimarkLibrary "\v\c<%(unicode[.])%([bgo])%(\a|-)+" # omutf8 syntax match omnimarkLibrary "\v\c<%(utf8[.])%([bceilmos])%(\a|8|-)+" # omioe/omfio syntax match omnimarkLibrary "\v\c<%(get-exception-status)" syntax match omnimarkLibrary "\v\c<%(io-exception-text)" syntax match omnimarkLibrary "\v\c<%(new-io-exception)" syntax match omnimarkLibrary "\v\c<%(set-voluntary-end-exception)" syntax match omnimarkLibrary "\v\c<%(%(Big5|euc|jis|sjis|utf16)%(-))?%(%(in|out)put-file)" # omioprotocol syntax match omnimarkLibrary "\v\c<%(IOProtocol)%([EILMS])\a+" # ommail syntax match omnimarkLibrary "\v\c<%(Mail)%([ILO]\a+)" # omtrig syntax match omnimarkLibrary "\v\c<%(a)?%(cos%(h)?|sin%(h)?|tan%(h|2)?|hypot)" # omnetutl syntax match omnimarkLibrary "\v\c<%(from-net-long)" syntax match omnimarkLibrary "\v\c<%(net-long)" syntax match omnimarkLibrary "\v\c<%(NET)%([GIL]\a+)" syntax match omnimarkLibrary "\v\c<%(to-net-long)" # omnetutil syntax match omnimarkLibrary "\v\c<%(netutil[.])%([fhnot]%(\a|3|2|-)+)" # omoci syntax match omnimarkLibrary "\v\c<%(OCI_)%([GLoS]\a+)" # omodbc syntax match omnimarkLibrary "\v\c<%(SQL)%([_])?%([ABCDEFGLMNPRST][[:alpha:]]+)" # omsocat syntax match omnimarkLibrary "\v\c<%(socat-[clr-])%([[:alpha:]]+)" # omsort syntax match omnimarkLibrary "\v\c<%(sort[.][os])%(\a|-)+" # omutil syntax match omnimarkLibrary "\v\c<%(UTIL[_.][EGLmopRSU])%(\a|-)+" # omvfs syntax match omnimarkLibrary "\v\c<%(vfs[.][cdflmorstuw])%(\a|-)+" # tcp syntax match omnimarkLibrary "\v\c<%(TCP)%([.])?%([acdegilmoprstw][[:alpha:]-]+)" # uri syntax match omnimarkLibrary "\v\c<%(uri[.])%([ceopr])%(\a|-)+" # wsb syntax match omnimarkLibrary "\v\c<%(wsb[.])%([acdfhrsw])%(\a|-)+" # }}} # Comments {{{ # ------- syntax region omnimarkComment start=";" end="$" # }}} # Strings and format-modifiers {{{ syntax region omnimarkString matchgroup=Normal start=+'+ end=+'+ skip=+%'+ contains=omnimarkEscape syntax region omnimarkString matchgroup=Normal start=+"+ end=+"+ skip=+%"+ contains=omnimarkEscape # This handles format items inside strings: # NB: escape _quoted-character_ allows a new character to be used to # indicate a special character or a format item, rather than the normal %. # The use of escape is deprecated in general, because it leads to # non-standard OmniMark code that can be difficult to understand. It has # not be handled here as it would be almost impossible to do so. # dynamic: %a %b %d %g %i %p %q %v %x %w %y # a - integer data type formatting # b - integer data type formatting # c - parsed data formatting # d - integer data type formatting, BCD data type formatting # g - string data formatting # i - integer data type formatting # p - parsed data formatting # q - parsed data formatting # v - parsed data formatting # x - deprecated format command used instead of g # y - symbol declaration # @ - macro arguments # static: %% %_ %n %t %# %) %" %' %/ %[ %] %@%% # %% - insert an explicit percent sign # %_ - insert an explicit space character # %n - insert an explicit newline character # %t - insert an explicit tab character # %0# through to %255# - insert an explicit byte with given value # %{...}—a sequence of characters, e.g., %16r{0d, 0a} # %#—insert an explicit octothorpe character (#) # %)—insert an explicit closing parenthesis # %"—insert an explicit double quote character # %'—insert an explicit single quote character # %/—indicates a point where line breaking can occur # %[ and %]—protect the delimited text from line breaking # %@%—insert an explicit percent sign inside a macro expansion # % format-modifier a syntax match omnimarkEscape contained =\v\C%(\%%(%(%(\d)*%(f))?%(j|k|l|u|w)*)?a)= # % format-modifier b syntax match omnimarkEscape contained =\v\C%(\%%(%(%(\d)*%(f))?%(\d)?)?b)= # % format-modifier c syntax match omnimarkEscape contained =\v\C%(%(\%%(h|l|u|s|z)*c))= # % format-modifier d syntax match omnimarkEscape contained =\v\C%(\%%(%(%(\d)*%(f|r|s)?)*%(j|k|l|u|z)*)?d)= # % format-modifier g syntax match omnimarkEscape contained =\v\C%(\%%(%(%(\d)*%(f|r|s)?)*%(j|k|l|u|z)*)?g)= # % format-modifier syntax match omnimarkEscape contained =\v\C%(%(\%[abdgipqvxwy%_nt#)"'/\[\]])|%(\%\@\%)|%(\%\d+#)|\%%(\d+r[{]%([0-9A-z, ]+)}))+= # }}} # Number {{{ syntax match omnimarkNumber "\v([[:alpha:]]+)@