Note: this commit rewrites the omnimark syntax script in Vim9 script and
      is therefore probably incompatible with Neovim
closes: #16979
Signed-off-by: Peter Kenny <github.com@k1w1.cyou>
Signed-off-by: Christian Brabandt <cb@256bit.org>
		
	
		
			
				
	
	
		
			834 lines
		
	
	
		
			39 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			834 lines
		
	
	
		
			39 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| vim9script
 | |
| # Vim syntax file
 | |
| # Language:    OmniMark
 | |
| # Maintainer:  Peter Kenny <kennypete.t2o3y@aleeas.com>
 | |
| # Previous Maintainer: Paul Terray <mailto:terray@4dconcept.fr>
 | |
| # 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:]]+)@<![-]?\d+([.]\d+)?"
 | |
| # }}}
 | |
| # Define default highlighting {{{
 | |
| highlight default link omnimarkAction		Statement
 | |
| highlight default link omnimarkAttributeType	Structure
 | |
| highlight default link omnimarkDataType		Type
 | |
| highlight default link omnimarkBuiltinEntity	Identifier
 | |
| highlight default link omnimarkBuiltinShelf	Identifier
 | |
| highlight default link omnimarkCatchName	Exception
 | |
| highlight default link omnimarkConstant		Constant
 | |
| highlight default link omnimarkControlStructure	Conditional
 | |
| highlight default link omnimarkDeclaration	Keyword
 | |
| highlight default link omnimarkElementQualifier	Type
 | |
| highlight default link omnimarkLibrary		Function
 | |
| highlight default link omnimarkModifier		Keyword
 | |
| highlight default link omnimarkOperator		Operator
 | |
| highlight default link omnimarkPattern		Label
 | |
| highlight default link omnimarkRule		Keyword
 | |
| highlight default link omnimarkString		String
 | |
| highlight default link omnimarkNumber		Number
 | |
| highlight default link omnimarkComment		Comment
 | |
| highlight default link omnimarkEscape		Special
 | |
| highlight default link omnimarkNormal		Statement
 | |
| # }}}
 | |
| syntax sync fromstart
 | |
| b:current_syntax = "omnimark"
 | |
| # vim: cc=+1 et fdm=marker ft=vim sta sw=2 ts=8 tw=79
 |