From 14dec7b204a438192f78545d5a723643c48222b5 Mon Sep 17 00:00:00 2001 From: Peter Kenny Date: Wed, 26 Mar 2025 19:52:50 +0100 Subject: [PATCH] runtime(omnimark): update and rewrite syntax script in Vim9 script 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 Signed-off-by: Christian Brabandt --- .github/MAINTAINERS | 1 + runtime/syntax/omnimark.vim | 933 ++++++++++++++++++++++++++++++++---- 2 files changed, 831 insertions(+), 103 deletions(-) diff --git a/.github/MAINTAINERS b/.github/MAINTAINERS index 4b0d93a891..f0d11a38fe 100644 --- a/.github/MAINTAINERS +++ b/.github/MAINTAINERS @@ -562,6 +562,7 @@ runtime/syntax/ninja.vim @nico runtime/syntax/nix.vim @equill runtime/syntax/nroff.vim @jmarshall runtime/syntax/nsis.vim @k-takata +runtime/syntax/omnimark.vim @kennypete runtime/syntax/ondir.vim @jparise runtime/syntax/opencl.vim @Freed-Wu runtime/syntax/openvpn.vim @ObserverOfTime diff --git a/runtime/syntax/omnimark.vim b/runtime/syntax/omnimark.vim index 6294945ffb..9b12d5ecdd 100644 --- a/runtime/syntax/omnimark.vim +++ b/runtime/syntax/omnimark.vim @@ -1,106 +1,833 @@ -" Vim syntax file -" Language: Omnimark -" Maintainer: Paul Terray -" Last Change: 11 Oct 2000 - -" quit when a syntax file was already loaded +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 - -setlocal iskeyword=@,48-57,_,128-167,224-235,- - -syn keyword omnimarkKeywords ACTIVATE AGAIN -syn keyword omnimarkKeywords CATCH CLEAR CLOSE COPY COPY-CLEAR CROSS-TRANSLATE -syn keyword omnimarkKeywords DEACTIVATE DECLARE DECREMENT DEFINE DISCARD DIVIDE DO DOCUMENT-END DOCUMENT-START DONE DTD-START -syn keyword omnimarkKeywords ELEMENT ELSE ESCAPE EXIT -syn keyword omnimarkKeywords FAIL FIND FIND-END FIND-START FORMAT -syn keyword omnimarkKeywords GROUP -syn keyword omnimarkKeywords HALT HALT-EVERYTHING -syn keyword omnimarkKeywords IGNORE IMPLIED INCLUDE INCLUDE-END INCLUDE-START INCREMENT INPUT -syn keyword omnimarkKeywords JOIN -syn keyword omnimarkKeywords LINE-END LINE-START LOG LOOKAHEAD -syn keyword omnimarkKeywords MACRO -syn keyword omnimarkKeywords MACRO-END MARKED-SECTION MARKUP-COMMENT MARKUP-ERROR MARKUP-PARSER MASK MATCH MINUS MODULO -syn keyword omnimarkKeywords NEW NEWLINE NEXT -syn keyword omnimarkKeywords OPEN OUTPUT OUTPUT-TO OVER -syn keyword omnimarkKeywords PROCESS PROCESS-END PROCESS-START PROCESSING-INSTRUCTION PROLOG-END PROLOG-IN-ERROR PUT -syn keyword omnimarkKeywords REMOVE REOPEN REPEAT RESET RETHROW RETURN -syn keyword omnimarkKeywords WHEN WHITE-SPACE -syn keyword omnimarkKeywords SAVE SAVE-CLEAR SCAN SELECT SET SGML SGML-COMMENT SGML-DECLARATION-END SGML-DTD SGML-DTDS SGML-ERROR SGML-IN SGML-OUT SGML-PARSE SGML-PARSER SHIFT SUBMIT SUCCEED SUPPRESS -syn keyword omnimarkKeywords SYSTEM-CALL -syn keyword omnimarkKeywords TEST-SYSTEM THROW TO TRANSLATE -syn keyword omnimarkKeywords UC UL UNLESS UP-TRANSLATE -syn keyword omnimarkKeywords XML-PARSE - -syn keyword omnimarkCommands ACTIVE AFTER ANCESTOR AND ANOTHER ARG AS ATTACHED ATTRIBUTE ATTRIBUTES -syn keyword omnimarkCommands BASE BEFORE BINARY BINARY-INPUT BINARY-MODE BINARY-OUTPUT BREAK-WIDTH BUFFER BY -syn keyword omnimarkCommands CASE CHILDREN CLOSED COMPILED-DATE COMPLEMENT CONREF CONTENT CONTEXT-TRANSLATE COUNTER CREATED CREATING CREATOR CURRENT -syn keyword omnimarkCommands DATA-ATTRIBUTE DATA-ATTRIBUTES DATA-CONTENT DATA-LETTERS DATE DECLARED-CONREF DECLARED-CURRENT DECLARED-DEFAULTED DECLARED-FIXED DECLARED-IMPLIED DECLARED-REQUIRED -syn keyword omnimarkCommands DEFAULT-ENTITY DEFAULTED DEFAULTING DELIMITER DIFFERENCE DIRECTORY DOCTYPE DOCUMENT DOCUMENT-ELEMENT DOMAIN-FREE DOWN-TRANSLATE DTD DTD-END DTDS -syn keyword omnimarkCommands ELEMENTS ELSEWHERE EMPTY ENTITIES ENTITY EPILOG-START EQUAL EXCEPT EXISTS EXTERNAL EXTERNAL-DATA-ENTITY EXTERNAL-ENTITY EXTERNAL-FUNCTION EXTERNAL-OUTPUT-FUNCTION -syn keyword omnimarkCommands EXTERNAL-TEXT-ENTITY -syn keyword omnimarkCommands FALSE FILE FUNCTION FUNCTION-LIBRARY -syn keyword omnimarkCommands GENERAL GLOBAL GREATER-EQUAL GREATER-THAN GROUPS -syn keyword omnimarkCommands HAS HASNT HERALDED-NAMES -syn keyword omnimarkCommands ID ID-CHECKING IDREF IDREFS IN IN-LIBRARY INCLUSION INITIAL INITIAL-SIZE INSERTION-BREAK INSTANCE INTERNAL INVALID-DATA IS ISNT ITEM -syn keyword omnimarkCommands KEY KEYED -syn keyword omnimarkCommands LAST LASTMOST LC LENGTH LESS-EQUAL LESS-THAN LETTERS LIBRARY LITERAL LOCAL -syn keyword omnimarkCommands MATCHES MIXED MODIFIABLE -syn keyword omnimarkCommands NAME NAME-LETTERS NAMECASE NAMED NAMES NDATA-ENTITY NEGATE NESTED-REFERENTS NMTOKEN NMTOKENS NO NO-DEFAULT-IO NON-CDATA NON-IMPLIED NON-SDATA NOT NOTATION NUMBER-OF NUMBERS -syn keyword omnimarkCommands NUTOKEN NUTOKENS -syn keyword omnimarkCommands OCCURRENCE OF OPAQUE OPTIONAL OR -syn keyword omnimarkCommands PARAMETER PARENT PAST PATTERN PLUS PREPARENT PREVIOUS PROPER PUBLIC -syn keyword omnimarkCommands READ-ONLY READABLE REFERENT REFERENTS REFERENTS-ALLOWED REFERENTS-DISPLAYED REFERENTS-NOT-ALLOWED REMAINDER REPEATED REPLACEMENT-BREAK REVERSED -syn keyword omnimarkCommands SILENT-REFERENT SIZE SKIP SOURCE SPECIFIED STATUS STREAM SUBDOC-ENTITY SUBDOCUMENT SUBDOCUMENTS SUBELEMENT SWITCH SYMBOL SYSTEM -syn keyword omnimarkCommands TEXT-MODE THIS TIMES TOKEN TRUE -syn keyword omnimarkCommands UNANCHORED UNATTACHED UNION USEMAP USING -syn keyword omnimarkCommands VALUE VALUED VARIABLE -syn keyword omnimarkCommands WITH WRITABLE -syn keyword omnimarkCommands XML XML-DTD XML-DTDS -syn keyword omnimarkCommands YES -syn keyword omnimarkCommands #ADDITIONAL-INFO #APPINFO #CAPACITY #CHARSET #CLASS #COMMAND-LINE-NAMES #CONSOLE #CURRENT-INPUT #CURRENT-OUTPUT #DATA #DOCTYPE #DOCUMENT #DTD #EMPTY #ERROR #ERROR-CODE -syn keyword omnimarkCommands #FILE-NAME #FIRST #GROUP #IMPLIED #ITEM #LANGUAGE-VERSION #LAST #LIBPATH #LIBRARY #LIBVALUE #LINE-NUMBER #MAIN-INPUT #MAIN-OUTPUT #MARKUP-ERROR-COUNT #MARKUP-ERROR-TOTAL -syn keyword omnimarkCommands #MARKUP-PARSER #MARKUP-WARNING-COUNT #MARKUP-WARNING-TOTAL #MESSAGE #NONE #OUTPUT #PLATFORM-INFO #PROCESS-INPUT #PROCESS-OUTPUT #RECOVERY-INFO #SGML #SGML-ERROR-COUNT -syn keyword omnimarkCommands #SGML-ERROR-TOTAL #SGML-WARNING-COUNT #SGML-WARNING-TOTAL #SUPPRESS #SYNTAX #! - -syn keyword omnimarkPatterns ANY ANY-TEXT -syn keyword omnimarkPatterns BLANK -syn keyword omnimarkPatterns CDATA CDATA-ENTITY CONTENT-END CONTENT-START -syn keyword omnimarkPatterns DIGIT -syn keyword omnimarkPatterns LETTER -syn keyword omnimarkPatterns NUMBER -syn keyword omnimarkPatterns PCDATA -syn keyword omnimarkPatterns RCDATA -syn keyword omnimarkPatterns SDATA SDATA-ENTITY SPACE -syn keyword omnimarkPatterns TEXT -syn keyword omnimarkPatterns VALUE-END VALUE-START -syn keyword omnimarkPatterns WORD-END WORD-START - -syn region omnimarkComment start=";" end="$" - -" strings -syn region omnimarkString matchgroup=Normal start=+'+ end=+'+ skip=+%'+ contains=omnimarkEscape -syn region omnimarkString matchgroup=Normal start=+"+ end=+"+ skip=+%"+ contains=omnimarkEscape -syn match omnimarkEscape contained +%.+ -syn match omnimarkEscape contained +%[0-9][0-9]#+ - -"syn sync maxlines=100 -syn sync minlines=2000 - -" Define the default highlighting. -" Only when an item doesn't have highlighting yet - -hi def link omnimarkCommands Statement -hi def link omnimarkKeywords Identifier -hi def link omnimarkString String -hi def link omnimarkPatterns Macro -" hi def link omnimarkNumber Number -hi def link omnimarkComment Comment -hi def link omnimarkEscape Special - - -let b:current_syntax = "omnimark" - -" vim: ts=8 - +# }}} +# 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:]]+)@