1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833
|
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
|