├── .gitignore ├── LICENSE ├── README.md ├── SublimeTextSyntaxes.sublime-project ├── plist ├── ABC Notation.tmBundle │ ├── Preferences │ │ ├── Comments.tmPreferences │ │ ├── Miscellaneous.tmPreferences │ │ ├── PostScript Comments.tmPreferences │ │ ├── PostScript Folding.tmPreferences │ │ ├── Symbol Index.tmPreferences │ │ └── Symbol List.tmPreferences │ └── Syntaxes │ │ ├── ABC Formatting Extension.tmLanguage │ │ ├── ABC Notation.tmLanguage │ │ └── PostScript.tmLanguage └── GoCoEdit.tmBundle │ ├── Preferences │ ├── Comments.tmPreferences │ ├── Miscellaneous.tmPreferences │ ├── Symbol Index.tmPreferences │ └── Symbol List.tmPreferences │ └── Syntaxes │ └── GoCoEdit Mode.tmLanguage ├── sublime ├── ABC Notation │ ├── ABC Formatting Extension.sublime-syntax │ ├── ABC Notation.sublime-syntax │ ├── Completions │ │ └── Decorations.sublime-completions │ ├── PostScript.sublime-syntax │ ├── Snippets │ │ ├── Embedded Tune.sublime-snippet │ │ └── Tune.sublime-snippet │ ├── Support │ │ ├── ABC Notation │ │ │ ├── Comments.tmPreferences │ │ │ ├── Miscellaneous.tmPreferences │ │ │ ├── Symbol Index.tmPreferences │ │ │ └── Symbol List.tmPreferences │ │ └── PostScript │ │ │ ├── Comments.tmPreferences │ │ │ └── Folding.tmPreferences │ ├── syntax_test_abc.abc │ ├── syntax_test_fmt.fmt │ └── syntax_test_ps.ps ├── GoCoEdit │ ├── Comments.tmPreferences │ ├── GoCoEdit Indents.tmPreferences │ ├── GoCoEdit Mode.sublime-syntax │ ├── GoCoEdit Theme.sublime-syntax │ ├── Indentation Rules.tmPreferences │ └── Regular Expression (Escaped).sublime-syntax └── Oniguruma Regular Expressions.sublime-syntax └── yaml ├── ABC Notation ├── ABC Formatting Extension.YAML-tmLanguage ├── ABC Notation.YAML-tmLanguage ├── Augmented BNF.YAML-tmLanguage └── Extended BNF.YAML-tmLanguage ├── ABC.YAML-tmLanguage ├── GoCoEdit └── GoCoEdit Mode.YAML-tmLanguage └── RELAX NG Compact.YAML-tmLanguage /.gitignore: -------------------------------------------------------------------------------- 1 | # .gitignore 2 | !*.YAML-tmLanguage 3 | !*.JSON-tmLanguage 4 | !*.tmLanguage 5 | !/.mvn/wrapper/maven-wrapper.jar 6 | !Build/ 7 | !default.mode1v3 8 | !default.mode2v3 9 | !default.pbxuser 10 | !default.perspectivev3 11 | !TAGS/ 12 | !tags/ 13 | #(r)(e)ledmac/(r)(e)ledpar 14 | #*.css 15 | #*.eps 16 | #*.fmt 17 | #*.iml 18 | #*.ipr 19 | #*.mid 20 | #*.midi 21 | #*.pdf 22 | #*.ps 23 | #*.sublime-project 24 | #.apng 25 | #.bmp 26 | #.env 27 | #.gif 28 | #.ico 29 | #.idea/misc.xml 30 | #.jfi 31 | #.jfif 32 | #.jif 33 | #.jpe 34 | #.jpeg 35 | #.jpg 36 | #.png 37 | #.ruby-gemset 38 | #.ruby-version 39 | #.svg 40 | #.svgz 41 | #.tif 42 | #.tiff 43 | #Carthage/Checkouts 44 | #config/secrets.yml 45 | #Gemfile.lock 46 | #LICENSE.html 47 | #LICENSE.txt 48 | #LICENSE_AFL.txt 49 | #modules.xml 50 | #Pods/ 51 | #vendor/Pods/ 52 | #*.tm* 53 | #*.tmLanguage 54 | *.tmlanguage.cache 55 | *.tmPreferences.cache 56 | *.tmproj 57 | *.tmproject 58 | *.JSON-tmLanguage 59 | $RECYCLE.BIN/ 60 | *$py.class 61 | **.orig 62 | **/CVS/* 63 | *,cover 64 | *-blx.aux 65 | *-blx.bib 66 | *-concordance.tex 67 | *-converted-to.* 68 | *-Ex.R 69 | *-gnuplottex-* 70 | *-tikzDictionary 71 | *.7z 72 | *.?end 73 | *.[1-9] 74 | *.[1-9][0-9] 75 | *.[1-9][0-9][0-9] 76 | *.[1-9][0-9][0-9]R 77 | *.[1-9][0-9]R 78 | *.[1-9]R 79 | *.[568vq] 80 | *.a 81 | *.acn 82 | *.acr 83 | *.aep 84 | *.ai 85 | *.aif 86 | *.alg 87 | *.app 88 | *.ar 89 | *.asv 90 | *.autosave 91 | *.aux 92 | *.auxlock 93 | *.avi 94 | *.backup 95 | *.bak 96 | *.bat 97 | *.bbl 98 | *.bcf 99 | *.blg 100 | *.bowerrc 101 | *.brf 102 | *.bridgesupport 103 | *.bs 104 | *.btm 105 | *.bz2 106 | *.bzip 107 | *.cab 108 | *.cb 109 | *.cb2 110 | *.cgo1.go 111 | *.cgo2.c 112 | *.class 113 | *.cmd 114 | *.cpio 115 | *.cpt 116 | *.css.map 117 | *.d 118 | *.db 119 | *.deb 120 | *.def 121 | *.dll 122 | *.dmg 123 | *.DotSettings 124 | *.dpth 125 | *.DS_Store 126 | *.dSYM 127 | *.dSYM.zip 128 | *.dSYM/ 129 | *.dvi 130 | *.dylib 131 | *.ear 132 | *.egg 133 | *.egg-info/ 134 | *.eledsec[1-9] 135 | *.eledsec[1-9][0-9] 136 | *.eledsec[1-9][0-9][0-9] 137 | *.eledsec[1-9][0-9][0-9]R 138 | *.eledsec[1-9][0-9]R 139 | *.eledsec[1-9]R 140 | *.elf 141 | *.end 142 | *.epub 143 | *.exe 144 | *.exp 145 | *.fdb_latexmk 146 | *.fff 147 | *.fls 148 | *.fot 149 | *.gaux 150 | *.gch 151 | *.gem 152 | *.glg 153 | *.glo 154 | *.gls 155 | *.glsdefs 156 | *.gtex 157 | *.gz 158 | *.hex 159 | *.hmap 160 | *.i*86 161 | *.idb 162 | *.idx 163 | *.ilg 164 | *.ilk 165 | *.ind 166 | *.indd 167 | *.ipa 168 | *.iso 169 | *.ist 170 | *.iws 171 | *.jar 172 | *.knit.md 173 | *.ko 174 | *.la 175 | *.lai 176 | *.launch 177 | *.LBR 178 | *.lbr 179 | *.lib 180 | *.lnk 181 | *.lo 182 | *.loa 183 | *.lod 184 | *.loe 185 | *.lof 186 | *.log 187 | *.lol 188 | *.lot 189 | *.lox 190 | *.lyx# 191 | *.lyx~ 192 | *.lzma 193 | *.maf 194 | *.manifest 195 | *.map 196 | *.mar 197 | *.md5 198 | *.mex* 199 | *.mf 200 | *.mlf 201 | *.mlt 202 | *.mo 203 | *.mobi 204 | *.moc 205 | *.mod 206 | *.mod* 207 | *.mode1v3 208 | *.mode2v3 209 | *.moved-aside 210 | *.mp 211 | *.mp3 212 | *.msi 213 | *.msm 214 | *.msp 215 | *.mtc 216 | *.mtc[0-9] 217 | *.mtc[1-9][0-9] 218 | *.mw 219 | *.m~ 220 | *.nav 221 | *.nlo 222 | *.o 223 | *.obj 224 | *.orig 225 | *.os 226 | *.otf 227 | *.out 228 | *.pbxuser 229 | *.pch 230 | *.pcm 231 | *.pdb 232 | *.pdf 233 | *.pdfsync 234 | *.perspectivev3 235 | *.pfa 236 | *.pfb 237 | *.pid 238 | *.pid.lock 239 | *.pot 240 | *.pro.user 241 | *.pro.user.* 242 | *.prof 243 | *.prproj 244 | *.psd 245 | *.pt3 246 | *.py[cod] 247 | *.pyc 248 | *.pydevproject 249 | *.pyg 250 | *.pytxcode 251 | *.qbs.user 252 | *.qbs.user.* 253 | *.qmlproject.user 254 | *.qmlproject.user.* 255 | *.rar 256 | *.rbc 257 | *.rdb 258 | *.rpm 259 | *.run.xml 260 | *.sagetex.py 261 | *.sagetex.sage 262 | *.sagetex.scmd 263 | *.sav 264 | *.seed 265 | *.sfd-* 266 | *.sfd~ 267 | *.shar 268 | *.slo 269 | *.smod 270 | *.snm 271 | *.so 272 | *.so.* 273 | *.sout 274 | *.spec 275 | *.src.rock 276 | *.stTheme.cache 277 | *.su 278 | *.sublime-workspace 279 | *.suit 280 | *.swp 281 | *.sympy 282 | *.synctex 283 | *.synctex(busy) 284 | *.synctex.gz 285 | *.synctex.gz(busy) 286 | *.t[1-9] 287 | *.t[1-9][0-9] 288 | *.tar 289 | *.tar.gz 290 | *.tdo 291 | *.test 292 | *.tfm 293 | *.tgz 294 | *.thm 295 | *.tikz 296 | *.tmp 297 | *.toc 298 | *.ttc 299 | *.ttf 300 | *.ttt 301 | *.upa 302 | *.upb 303 | *.utf8.md 304 | *.vrb 305 | *.war 306 | *.wav 307 | *.woff 308 | *.wrt 309 | *.x86_64 310 | *.xccheckout 311 | *.xcscmblueprint 312 | *.xcuserstate 313 | *.xdy 314 | *.xlk 315 | *.xpi 316 | *.xyc 317 | *.xz 318 | *.zip 319 | *.~vsdx 320 | */.cvsignore 321 | *build-* 322 | *copy.mus 323 | *~ 324 | *~.nib 325 | *~[0-9]* 326 | ._* 327 | .actionScriptProperties 328 | .apdisk 329 | .AppleDB 330 | .AppleDesktop 331 | .AppleDouble 332 | .build/ 333 | .buildpath 334 | .byebug_history 335 | .cache 336 | .classpath 337 | .com.apple.timemachine.donotpresent 338 | .coverage 339 | .coverage.* 340 | .cproject 341 | .cvsignore 342 | .dat* 343 | .dib 344 | .directory 345 | .DocumentRevisions-V100 346 | .dropbox 347 | .dropbox.attr 348 | .dropbox.cache 349 | .DS_Store 350 | .eggs/ 351 | .ensime 352 | .ensime_cache/ 353 | .env 354 | .eslintcache 355 | .externalToolBuilders 356 | .externalToolBuilders/ 357 | .factorypath 358 | .flexLibProperties 359 | .flexProperties 360 | .FlexUnitSettings 361 | .fseventsd 362 | .fuse_hidden* 363 | .grunt 364 | .hdp 365 | .hg/ 366 | .hgignore 367 | .hgsigs 368 | .hgsub 369 | .hgsubstate 370 | .hgtags 371 | .history 372 | .htaccess.sample 373 | .httr-oauth 374 | .hypothesis/ 375 | .idea/dataSources.ids 376 | .idea/dataSources.local.xml 377 | .idea/dataSources.xml 378 | .idea/dataSources/ 379 | .idea/dynamic.xml 380 | .idea/gradle.xml 381 | .idea/libraries 382 | .idea/mongoSettings.xml 383 | .idea/sqlDataSources.xml 384 | .idea/tasks.xml 385 | .idea/uiDesigner.xml 386 | .idea/workspace.xml 387 | .idea_modules/ 388 | .installed.cfg 389 | .ipynb_checkpoints 390 | .j2k 391 | .jekyll-metadata 392 | .jp2 393 | .jpf 394 | .jpm 395 | .jpx 396 | .jxr 397 | .last_cover_stats 398 | .lib/ 399 | .loadpath 400 | .lock-wscript 401 | .LSOverride 402 | .metadata 403 | .mj2 404 | .mng 405 | .model 406 | .modgit/ 407 | .modman/ 408 | .mtj.tmp/ 409 | .mvn/timing.properties 410 | .netrwhist 411 | .nfs* 412 | .ninja_deps 413 | .ninja_log 414 | .node_repl_history 415 | .npm 416 | .nyc_output 417 | .pdf 418 | .powenv 419 | .project 420 | .project/ 421 | .Python 422 | .python-version 423 | .Rapp.history 424 | .raw 425 | .RData 426 | .recommenders 427 | .recommenders/ 428 | .repl_history 429 | .Rhistory 430 | .ropeproject 431 | .Rproj.user/ 432 | .rspec 433 | .rvmrc 434 | .sass-cache/ 435 | .scala_dependencies 436 | .sconsign.dblite 437 | .scrapy 438 | .settings/ 439 | .Spotlight-V100 440 | .springBeans 441 | .spyderproject 442 | .svn/ 443 | .TAGS 444 | .tags 445 | .target 446 | .TemporaryItems 447 | .tern-project 448 | .texlipse 449 | .texpadtmp 450 | .tox/ 451 | .Trash-* 452 | .Trashes 453 | .vagrant/ 454 | .venv 455 | .venv/ 456 | .VolumeIcon.icns 457 | .wdp 458 | .webassets-cache 459 | .webp 460 | .worksheet 461 | .xbm 462 | .yarn-integrity 463 | .~lock.*# 464 | /*.Rcheck/ 465 | /*.tar.gz 466 | /*_cache/ 467 | /.build/ 468 | /.bundle 469 | /.bundle/ 470 | /.config 471 | /.htaccess 472 | /.qmake.cache 473 | /.qmake.stash 474 | /.yardoc/ 475 | /_eumm/ 476 | /_yardoc/ 477 | /api.php 478 | /auto/* 479 | /blib/ 480 | /cache/ 481 | /coverage/ 482 | /cron.php 483 | /CVS/* 484 | /db/*.sqlite3 485 | /db/*.sqlite3-journal 486 | /doc/ 487 | /get.php 488 | /index.php 489 | /install.php 490 | /InstalledFiles 491 | /lib/bundler/man/ 492 | /license.txt 493 | /log 494 | /mage 495 | /Makefile 496 | /Makefile.old 497 | /MANIFEST.bak 498 | /META.json 499 | /META.yml 500 | /MYMETA.* 501 | /out/ 502 | /pkg/ 503 | /pm_to_blib 504 | /public/system 505 | /rdoc/ 506 | /readme.html 507 | /sitemap.xml 508 | /sitemap.xml.gz 509 | /spec/examples.txt 510 | /spec/reports/ 511 | /spec/tmp 512 | /test/tmp/ 513 | /test/version_tmp/ 514 | /tmp 515 | /tmp/ 516 | /vendor/assets/bower_components 517 | /vendor/bundle 518 | [._]*.s[a-w][a-z] 519 | [._]s[a-w][a-z] 520 | [568vq].out 521 | [Bb]in 522 | [Ii]nclude 523 | [Ll]ib 524 | [Ll]ib64 525 | [Ll]ocal 526 | [Ss]cripts 527 | __pycache__/ 528 | _book 529 | _build/ 530 | _builds 531 | _cache 532 | _cgo_defun.c 533 | _cgo_export.* 534 | _cgo_gotypes.go 535 | _minted* 536 | _obj 537 | _projects 538 | _site/ 539 | _steps 540 | _test 541 | _testmain.go 542 | acs-*.bib 543 | app/.htaccess 544 | app/bootstrap.php 545 | app/code/community/Cm/RedisSession/ 546 | app/code/community/Phoenix/Moneybookers/ 547 | app/code/core/ 548 | app/design/adminhtml/default/default/ 549 | app/design/frontend/base/ 550 | app/design/frontend/default/blank/ 551 | app/design/frontend/default/default/ 552 | app/design/frontend/default/iphone/ 553 | app/design/frontend/default/modern/ 554 | app/design/frontend/enterprise/default 555 | app/design/frontend/rwd/ 556 | app/design/install/ 557 | app/etc/applied.patches.list 558 | app/etc/config.xml 559 | app/etc/enterprise.xml 560 | app/etc/local.xml 561 | app/etc/local.xml.additional 562 | app/etc/local.xml.template 563 | app/etc/modules/Cm_RedisSession.xml 564 | app/etc/modules/Enterprise_* 565 | app/etc/modules/Mage_*.xml 566 | app/etc/modules/Phoenix_Moneybookers.xml 567 | app/locale/en_US/ 568 | app/Mage.php 569 | applet 570 | application.linux32 571 | application.linux64 572 | application.macosx 573 | application.windows32 574 | application.windows64 575 | atlassian-ide-plugin.xml 576 | bh_unicode_properties.cache 577 | bin-debug/ 578 | bin-release/ 579 | bin/ 580 | bower.json 581 | Build 582 | build-iPhoneOS/ 583 | build-iPhoneSimulator/ 584 | Build.bat 585 | build/ 586 | build/Release 587 | buildNumber.properties 588 | bundles/ 589 | capybara-*.html 590 | Carthage/Build 591 | celerybeat-schedule 592 | CMakeLists.txt.user* 593 | com_crashlytics_export_strings.xml 594 | config/initializers/secret_token.rb 595 | cover_db/ 596 | coverage 597 | coverage.xml 598 | crashlytics-build.properties 599 | crashlytics.properties 600 | cron.sh 601 | cscope.files 602 | cscope.in.out 603 | cscope.out 604 | cscope.po.out 605 | db.sqlite3 606 | dependency-reduced-pom.xml 607 | DerivedData/ 608 | Desktop.ini 609 | dev/.htaccess 610 | dev/tests/functional 611 | dev/tests/functional/ 612 | develop-eggs/ 613 | dist/ 614 | dist/* 615 | dkms.conf 616 | docs/_build/ 617 | downloader/ 618 | downloads/ 619 | eggs/ 620 | ehthumbs.db 621 | env/ 622 | ENV/ 623 | errors/ 624 | fabric.properties 625 | fastlane/Preview.html 626 | fastlane/report.xml 627 | fastlane/screenshots 628 | fastlane/test_output 629 | favicon.ico 630 | GitHub.sublime-settings 631 | GPATH 632 | GRTAGS 633 | GSYMS 634 | GTAGS 635 | gtags.files 636 | hs_err_pid* 637 | htmlcov/ 638 | Icon 639 | inc/ 640 | includes/ 641 | index.php.sample 642 | instance/ 643 | iOSInjectionProject/ 644 | js/blank.html 645 | js/calendar/ 646 | js/enterprise/ 647 | js/extjs/ 648 | js/firebug/ 649 | js/flash/ 650 | js/index.php 651 | js/jscolor/ 652 | js/lib/ 653 | js/mage/ 654 | js/prototype/ 655 | js/scriptaculous/ 656 | js/spacer.gif 657 | js/tiny_mce/ 658 | js/varien/ 659 | jspm_packages 660 | lib-cov 661 | lib/ 662 | lib/.htaccess 663 | lib/3Dsecure/ 664 | lib/Apache/ 665 | lib/Cm/ 666 | lib/Credis/ 667 | lib/flex/ 668 | lib/googlecheckout/ 669 | lib/LinLibertineFont/ 670 | lib/Mage/ 671 | lib/Magento/ 672 | lib/PEAR/ 673 | lib/Pelago/ 674 | lib/phpseclib/ 675 | lib/Varien/ 676 | lib/Zend/ 677 | lib64/ 678 | lib_managed/ 679 | LICENSE_EE* 680 | local-patch 681 | local.properties 682 | local_settings.py 683 | logs 684 | luac.out 685 | Makefile* 686 | media 687 | media/ 688 | Mkfile.old 689 | moc_*.cpp 690 | Module.symvers 691 | modules.order 692 | nbproject/ 693 | Network Trash Folder 694 | node_modules 695 | nosetests.xml 696 | npm-debug.log* 697 | nytprof.out 698 | octave-workspace 699 | Package Control.ca-bundle 700 | Package Control.ca-certs/ 701 | Package Control.ca-list 702 | Package Control.cache/ 703 | Package Control.last-run 704 | Package Control.system-ca-bundle 705 | parts/ 706 | patched-src 707 | pear 708 | pear/ 709 | php.ini.sample 710 | pickle-email-*.html 711 | pids 712 | pip-delete-this-directory.txt 713 | pip-log.txt 714 | pip-selfcheck.json 715 | pkginfo/ 716 | playground.xcworkspace 717 | pom.xml.next 718 | pom.xml.releaseBackup 719 | pom.xml.tag 720 | pom.xml.versionsBackup 721 | project/boot/ 722 | project/plugins/project/ 723 | pythontex-files-*/ 724 | pyvenv.cfg 725 | qrc_*.cpp 726 | release.properties 727 | RELEASE_NOTES.txt 728 | rerun.txt 729 | sdist/ 730 | secring.* 731 | Session.vim 732 | sftp-config.json 733 | shell/.htaccess 734 | shell/abstract.php 735 | shell/compiler.php 736 | shell/indexer.php 737 | shell/log.php 738 | sitemap.xml 739 | skin/adminhtml/default/default/ 740 | skin/adminhtml/default/enterprise 741 | skin/frontend/base/ 742 | skin/frontend/default/blank/ 743 | skin/frontend/default/blue/ 744 | skin/frontend/default/default/ 745 | skin/frontend/default/french/ 746 | skin/frontend/default/german/ 747 | skin/frontend/default/iphone/ 748 | skin/frontend/default/modern/ 749 | skin/frontend/enterprise 750 | skin/frontend/rwd/ 751 | skin/install/ 752 | slprj/ 753 | src_managed/ 754 | sympy-plots-for-*.tex/ 755 | tags 756 | TAGS 757 | target/ 758 | Temporary Items 759 | Thumbs.db 760 | timeline.xctimeline 761 | tmp/ 762 | tmtags 763 | TSWLatexianTemp* 764 | ui_*.h 765 | var/ 766 | vendor/ 767 | venv/ 768 | vignettes/*.html 769 | vignettes/*.pdf 770 | wp-config.php 771 | wp-content/advanced-cache.php 772 | wp-content/backup-db/ 773 | wp-content/backups/ 774 | wp-content/blogs.dir/ 775 | wp-content/cache/ 776 | wp-content/plugins/hello.php 777 | wp-content/upgrade/ 778 | wp-content/uploads/ 779 | wp-content/wp-cache-config.php 780 | xcuserdata/ 781 | ~$*.doc* 782 | ~$*.ppt* 783 | ~$*.xls* 784 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SublimeTextSyntaxes 2 | 3 | Syntax definitions for various languages & markups. 4 | 5 | Included syntax definitions: 6 | 7 | * **ABC Notation**: ABC Music Notation, a widely used text-based music notation system. 8 | * **GoCoEdit**: Used for the iOS programming editor app, [GoCoEdit](http://gocoedit.com/), for easier editing of it's custom modes & custom themes. _GoCoEdit **is** compatable with SublimeText snippets in XML format._ 9 | * **RELAX NG Compact**: Used for defining XML schema in a non-XML format. 10 | * **Augmented BNF**: Parser definition language. Used to describe the terminal rule syntax of standardized programming languages and markup languages. Features of this language differ from the original form of BNF. [See here for more info.](https://tools.ietf.org/rfc/rfc5234.txt) 11 | * **Extended BNF**: Parser definition language. Used to describe the terminal rule syntax of standardized programming languages and markup languages. Features of this language differ from the original form of BNF. [See here for more info.](http://www.cl.cam.ac.uk/~mgk25/iso-14977.pdf) 12 | 13 | ## Notes About Syntaxes and Themes 14 | 15 | This repository contains syntax definitions for both Sublime Text & TextMate-compatible editors. The TextMate-compatible syntaxes are a back-port of the Sublime Text syntax definitions, as the format & system used for Sublime Text's `sublime-syntax` files far outperforms that of TextMate-based syntax definitions, _in my opinion_. 16 | 17 | ## ABC Notation Notes: _ABC Is **NOT** Markup_ 18 | 19 | ABC Notation is **NOT** a markup language, despite how it may be considered as such. If it was, it would only be limited to using strictly markup scopes, and would be limited to only the complexity needed to format content on a webpage or a piece of paper. But languages like Markdown exist, as do systems like . Additionally, there are multiple commands that support embedded PROGRAMMING language scopes within ABC Notation files: 20 | 21 | * `%%beginjs ... %%endjs`: JavaScript Code (abc2svg / abcjs) 22 | * `%%beginps ... %%endps`: PostScript Code 23 | * `%%beginsvg ... %%endsvg`: SVG [XML] Content 24 | * `%%beginml ... %%endml`: HTML / Generic Markup Language Content 25 | * `%%beginmd ... %%endmd`: Markdown Content 26 | * `%%begintext ... %%endtext`: Optionally formatted text Content 27 | 28 | This aside, ABC Notation can't count as a markup language, namely because of how expressive and syntax oriented it is. As the person who had to figure out how to rework the syntax definition from the ground up, I can tell you first hand that anyone calling ABC Notation a "markup" needs a slap to the back of the head. 29 | 30 | **There are many who will say that music notation is a markup, & they will always be wrong: Music is a language _first_, a performance _second_, and a document format _LAST_.** 31 | 32 | ## ToDos: 33 | 34 | - [ ] Embed PostScript, SVG, HTML, JavaScript, etc. highlighting within `%%begin...%%end` sections, respectively. 35 | - [ ] Need more snippets, in general. I'd like to have snippets for a large array of scores, from indivual part scores to director score books, and also ABC tunes templates that are configured for specific genres / nationalities of music (Irish reels/jigs/hornpipes, Scottish strathspeys, polka, ballads, jazz, blues, church-oriented hymns, Christmas styled tunes, etc.), as well as for various types of instrumentation templates (piano accompaniments, drumset solos, percussion ensembles, individual sections of orchestras, etc.). Music _is_ the only language that doesn't discriminate. 36 | - [ ] I'd **really** like to advance the ABC Notation into a robust plugin, with features that allow for the best scorewriting capacity available to anyone using ABC Notation: drum mapping, voice & part mapping / management, drum pattern sequencing, etc. 37 | -------------------------------------------------------------------------------- /SublimeTextSyntaxes.sublime-project: -------------------------------------------------------------------------------- 1 | { 2 | "folders": 3 | [ 4 | { 5 | "path": "." 6 | } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /plist/ABC Notation.tmBundle/Preferences/Comments.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | name 5 | Comments 6 | scope 7 | source.abc, source.fmt 8 | settings 9 | 10 | shellVariables 11 | 12 | 13 | name 14 | TM_COMMENT_START 15 | value 16 | % 17 | 18 | 19 | name 20 | TM_COMMENT_DISABLE_INDENT 21 | value 22 | yes 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /plist/ABC Notation.tmBundle/Preferences/Miscellaneous.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | name 5 | Miscellaneous 6 | scope 7 | source.abc 8 | settings 9 | 10 | increaseIndentPattern 11 | ^[[:alpha:]+]:[^\t ]+ 12 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /plist/ABC Notation.tmBundle/Preferences/PostScript Comments.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 11 | name 12 | Comments 13 | scope 14 | source.postscript 15 | settings 16 | 17 | shellVariables 18 | 19 | 20 | name 21 | TM_COMMENT_START 22 | value 23 | % 24 | 25 | 26 | 27 | uuid 28 | 26898EAD-9BC4-4809-A836-A9F2F705CB1A 29 | 30 | 31 | -------------------------------------------------------------------------------- /plist/ABC Notation.tmBundle/Preferences/PostScript Folding.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 11 | name 12 | Folding 13 | scope 14 | source.postscript 15 | settings 16 | 17 | foldingStartMarker 18 | /\*\*|\{\s*$ 19 | foldingStopMarker 20 | \*\*/|^\s*\} 21 | 22 | uuid 23 | F1931D2C-5608-46FD-8748-EAE1F79506C3 24 | 25 | 26 | -------------------------------------------------------------------------------- /plist/ABC Notation.tmBundle/Preferences/Symbol Index.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | name 5 | Symbol Index 6 | scope 7 | meta.field.index.abc 8 | settings 9 | 10 | showInIndexedSymbolList 11 | 1 12 | symbolIndexTransformation 13 | 14 | s/^X:\s*(\d+)/Tune #$1/ 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /plist/ABC Notation.tmBundle/Preferences/Symbol List.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | name 5 | Symbol List 6 | scope 7 | meta.field.index.abc, meta.field.title.abc, meta.inline-field.title.abc, meta.field.part.abc, meta.inline-field.part.abc, meta.field.voice.abc, meta.inline-field.voice.abc 8 | settings 9 | 10 | showInSymbolList 11 | 1 12 | symbolTransformation 13 | 14 | s/^X:\s*(\d+)/Tune #$1/; 15 | s/^T:\s*([^%\n\r]+)(?:\s*%.*)?/Title: $1/; 16 | s/\[T:\s*([^%\r\n\]]+)\]/Title: $1/; 17 | s/^P:\s*([^%\s\n\r]+)\b(?:\s+[^%\r\n]*)?(?:\s*%.*)?/Part: $1/; 18 | s/\[P:\s*([^%\s\r\n\]]+)\b(?:\s+[^%\r\n\]]*)?\]/Part: $1/; 19 | s/^V:\s*([^%\s\n\r]+)\b(?:\s+[^%\r\n]*)?(?:\s*%.*)?/Voice: $1/; 20 | s/\[V:\s*([^%\s\r\n\]]+)\b(?:\s+[^%\r\n\]]*)?\]/Voice: $1/; 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /plist/ABC Notation.tmBundle/Syntaxes/ABC Formatting Extension.tmLanguage: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | fileTypes 6 | 7 | fmt 8 | 9 | name 10 | ABC Formatting Extension 11 | patterns 12 | 13 | 14 | include 15 | #comments 16 | 17 | 18 | include 19 | #directive 20 | 21 | 22 | include 23 | #embedded-content 24 | 25 | 26 | repository 27 | 28 | comments 29 | 30 | patterns 31 | 32 | 33 | begin 34 | (?:^\s*)?(%(?!abc)) 35 | beginCaptures 36 | 37 | 1 38 | 39 | name 40 | punctuation.definition.comment.fmt 41 | 42 | 43 | end 44 | $ 45 | name 46 | comment.line.percentage.fmt 47 | 48 | 49 | captures 50 | 51 | 1 52 | 53 | name 54 | punctuation.definition.comment.fmt 55 | 56 | 2 57 | 58 | name 59 | keyword.other.special-method.namespace.fmt 60 | 61 | 62 | match 63 | (?:^\s*)?(?>(%)(abc(?:-\d\.\d)?)) 64 | name 65 | comment.line.namespace.fmt 66 | 67 | 68 | 69 | directive 70 | 71 | begin 72 | ^\s*((?!(?:begin|end(?:text|svg|ps|js|md|ml))|postscript|ps)\w*)\b 73 | beginCaptures 74 | 75 | 1 76 | 77 | name 78 | keyword.operator.word.directive.abc 79 | 80 | 81 | contentName 82 | variable.parameter.directive.abc 83 | end 84 | $ 85 | name 86 | meta.directive.abc 87 | patterns 88 | 89 | 90 | match 91 | (?x) 92 | (MIDI + 93 | (?:no)?barlines|bassprog|(?:no)?beataccents|beat(?:mod|string)?| 94 | bend(?:velocity|string)|chord(?:attack|name|program)| 95 | control(?:combo|string)?|deltaloudness|droneo(?:n|ff)| 96 | drum(?:on|off|bars|map)|expand|fermata(?:fixed|proportional)?| 97 | gchord(?:on|off)?|grace(?:divider)?|makechordchannels|pitchbend| 98 | portamento|program|ptstress|randomchordattack|ratio|stressmodel| 99 | snt|rtranspose|temperament(?:linear|equal|normal)|transpose| 100 | trim|vol(inc)?)\b 101 | name 102 | keyword.operator.word.directive.midi.abc 103 | 104 | 105 | match 106 | (\d*(?:\.\d*)?(?:pt|in|cm)?) 107 | name 108 | constant.numeric.float.length-unit.abc 109 | 110 | 111 | match 112 | (?i)\b(true|false|yes|no|on|off)\b 113 | name 114 | storage.type.directive.abc 115 | 116 | 117 | include 118 | #comments 119 | 120 | 121 | 122 | embedded-content 123 | 124 | patterns 125 | 126 | 127 | begin 128 | ^\s*(begintext)\b(\s+(?:obeylines|fill|ragged|justify|align|skip))?\b 129 | beginCaptures 130 | 131 | 1 132 | 133 | name 134 | support.function.directive.abc 135 | 136 | 2 137 | 138 | name 139 | variable.parameter.directive.abc 140 | 141 | 142 | comment 143 | Typeset Text 144 | contentName 145 | string.unquoted.typeset.abc 146 | end 147 | ^\s*(endtext) 148 | endCaptures 149 | 150 | 1 151 | 152 | name 153 | support.function.directive.abc 154 | 155 | 156 | name 157 | meta.typeset.abc 158 | patterns 159 | 160 | 161 | include 162 | #comments 163 | 164 | 165 | 166 | 167 | begin 168 | ^\s*(beginml)\b 169 | beginCaptures 170 | 171 | 1 172 | 173 | name 174 | support.function.directive.abc 175 | 176 | 177 | comment 178 | Embedded HTML 179 | end 180 | ^\s*(endml) 181 | endCaptures 182 | 183 | 1 184 | 185 | name 186 | support.function.directive.abc 187 | 188 | 189 | name 190 | meta.html.abc 191 | patterns 192 | 193 | 194 | include 195 | text.html.basic 196 | 197 | 198 | include 199 | #comments 200 | 201 | 202 | 203 | 204 | begin 205 | ^\s*(beginjs)\b 206 | beginCaptures 207 | 208 | 1 209 | 210 | name 211 | support.function.directive.abc 212 | 213 | 214 | comment 215 | Embedded JavaScript 216 | end 217 | ^\s*(endjs) 218 | endCaptures 219 | 220 | 1 221 | 222 | name 223 | support.function.directive.abc 224 | 225 | 226 | name 227 | meta.js.abc 228 | patterns 229 | 230 | 231 | include 232 | source.js 233 | 234 | 235 | include 236 | #comments 237 | 238 | 239 | 240 | 241 | begin 242 | ^\s*(beginsvg)\b 243 | beginCaptures 244 | 245 | 1 246 | 247 | name 248 | support.function.directive.abc 249 | 250 | 251 | comment 252 | Embedded SVG 253 | end 254 | ^\s*(endsvg) 255 | endCaptures 256 | 257 | 1 258 | 259 | name 260 | comment.line.percentage.abc 261 | 262 | 2 263 | 264 | name 265 | support.function.directive.abc 266 | 267 | 268 | name 269 | meta.svg.abc 270 | patterns 271 | 272 | 273 | include 274 | text.xml 275 | 276 | 277 | include 278 | #comments 279 | 280 | 281 | 282 | 283 | begin 284 | ^\s*(beginps)(\s+(?:nosvg))? 285 | beginCaptures 286 | 287 | 1 288 | 289 | name 290 | support.function.directive.abc 291 | 292 | 2 293 | 294 | name 295 | variable.parameter.directive.abc 296 | 297 | 298 | comment 299 | Embedded PostScript 300 | contentName 301 | source.postscript 302 | end 303 | ^\s*(endps) 304 | endCaptures 305 | 306 | 1 307 | 308 | name 309 | support.function.directive.abc 310 | 311 | 312 | name 313 | meta.ps.abc 314 | patterns 315 | 316 | 317 | include 318 | source.postscript 319 | 320 | 321 | 322 | 323 | begin 324 | ^\s*(beginmd)\b 325 | beginCaptures 326 | 327 | 1 328 | 329 | name 330 | support.function.directive.abc 331 | 332 | 333 | comment 334 | Embedded Markdown 335 | end 336 | ^\s*(endmd)\b 337 | endCaptures 338 | 339 | 1 340 | 341 | name 342 | support.function.directive.abc 343 | 344 | 345 | patterns 346 | 347 | 348 | include 349 | text.html.markdown 350 | 351 | 352 | include 353 | #comments 354 | 355 | 356 | 357 | 358 | comment 359 | Inline Postscript Instructions 360 | patterns 361 | 362 | 363 | begin 364 | ^\s*(postscript|ps)\b 365 | beginCaptures 366 | 367 | 1 368 | 369 | name 370 | support.function.directive.abc 371 | 372 | 373 | end 374 | $ 375 | name 376 | meta.ps.abc 377 | patterns 378 | 379 | 380 | include 381 | source.postscript 382 | 383 | 384 | include 385 | #comments 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | scopeName 395 | source.fmt 396 | uuid 397 | 972d5050-f5bb-4d36-b94e-b00079652038 398 | 399 | 400 | -------------------------------------------------------------------------------- /plist/ABC Notation.tmBundle/Syntaxes/PostScript.tmLanguage: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 11 | fileTypes 12 | 13 | ps 14 | eps 15 | 16 | firstLineMatch 17 | ^%!PS 18 | keyEquivalent 19 | ^~P 20 | name 21 | Postscript 22 | patterns 23 | 24 | 25 | begin 26 | \( 27 | beginCaptures 28 | 29 | 0 30 | 31 | name 32 | punctuation.definition.string.begin.postscript 33 | 34 | 35 | end 36 | \) 37 | endCaptures 38 | 39 | 0 40 | 41 | name 42 | punctuation.definition.string.end.postscript 43 | 44 | 45 | name 46 | string.other.postscript 47 | patterns 48 | 49 | 50 | include 51 | #string_content 52 | 53 | 54 | 55 | 56 | captures 57 | 58 | 1 59 | 60 | name 61 | keyword.other.DSC.postscript 62 | 63 | 3 64 | 65 | name 66 | string.unquoted.DSC.postscript 67 | 68 | 69 | match 70 | ^(%%(BeginBinary:|BeginCustomColor:|BeginData:|BeginDefaults|BeginDocument:|BeginEmulation:|BeginExitServer:|BeginFeature:|BeginFile:|BeginFont:|BeginObject:|BeginPageSetup:|BeginPaperSize:|BeginPreview:|BeginProcSet|BeginProcessColor:|BeginProlog|BeginResource:|BeginSetup|BoundingBox:|CMYKCustomColor:|ChangeFont:|Copyright:|CreationDate:|Creator:|DocumentCustomColors:|DocumentData:|DocumentFonts:|DocumentMedia:|DocumentNeededFiles:|DocumentNeededFonts:|DocumentNeededProcSets:|DocumentNeededResources:|DocumentPaperColors:|DocumentPaperForms:|DocumentPaperSizes:|DocumentPaperWeights:|DocumentPrinterRequired:|DocumentProcSets:|DocumentProcessColors:|DocumentSuppliedFiles:|DocumentSuppliedFonts:|DocumentSuppliedProcSets:|DocumentSuppliedResources:|EOF|Emulation:|EndBinary:|EndComments|EndCustomColor:|EndData:|EndDefaults|EndDocument:|EndEmulation:|EndExitServer:|EndFeature:|EndFile:|EndFont:|EndObject:|EndPageSetup:|EndPaperSize:|EndPreview:|EndProcSet|EndProcessColor:|EndProlog|EndResource:|EndSetup|ExecuteFile:|Extensions:|Feature:|For:|IncludeDocument:|IncludeFeature:|IncludeFile:|IncludeFont:|IncludeProcSet:|IncludeResource:|LanguageLevel:|OperatorIntervention:|OperatorMessage:|Orientation:|Page:|PageBoundingBox:|PageCustomColors|PageCustomColors:|PageFiles:|PageFonts:|PageMedia:|PageOrder:|PageOrientation:|PageProcessColors|PageProcessColors:|PageRequirements:|PageResources:|PageTrailer|Pages:|PaperColor:|PaperForm:|PaperSize:|PaperWeight:|ProofMode:|RGBCustomColor:|Requirements:|Routing:|Title:|Trailer|VMlocation:|VMusage:|Version|Version:|\+|\?BeginFeatureQuery:|\?BeginFileQuery:|\?BeginFontListQuery:|\?BeginFontQuery:|\?BeginPrinterQuery:|\?BeginProcSetQuery:|\?BeginQuery:|\?BeginResourceListQuery:|\?BeginResourceQuery:|\?BeginVMStatus:|\?EndFeatureQuery:|\?EndFileQuery:|\?EndFontListQuery:|\?EndFontQuery:|\?EndPrinterQuery:|\?EndProcSetQuery:|\?EndQuery:|\?EndResourceListQuery:|\?EndResourceQuery:|\?EndVMStatus:))\s*(.*)$\n? 71 | name 72 | meta.Document-Structuring-Comment.postscript 73 | 74 | 75 | begin 76 | (^[ \t]+)?(?=%) 77 | beginCaptures 78 | 79 | 1 80 | 81 | name 82 | punctuation.whitespace.comment.leading.postscript 83 | 84 | 85 | end 86 | (?!\G) 87 | patterns 88 | 89 | 90 | begin 91 | % 92 | beginCaptures 93 | 94 | 0 95 | 96 | name 97 | punctuation.definition.comment.postscript 98 | 99 | 100 | end 101 | \n 102 | name 103 | comment.line.percentage.postscript 104 | 105 | 106 | 107 | 108 | begin 109 | \<\< 110 | beginCaptures 111 | 112 | 0 113 | 114 | name 115 | punctuation.definition.dictionary.begin.postscript 116 | 117 | 118 | end 119 | \>\> 120 | endCaptures 121 | 122 | 0 123 | 124 | name 125 | punctuation.definition.dictionary.end.postscript 126 | 127 | 128 | name 129 | meta.dictionary.postscript 130 | patterns 131 | 132 | 133 | include 134 | $self 135 | 136 | 137 | 138 | 139 | begin 140 | \[ 141 | beginCaptures 142 | 143 | 0 144 | 145 | name 146 | punctuation.definition.array.begin.postscript 147 | 148 | 149 | end 150 | \] 151 | endCaptures 152 | 153 | 0 154 | 155 | name 156 | punctuation.definition.array.end.postscript 157 | 158 | 159 | name 160 | meta.array.postscript 161 | patterns 162 | 163 | 164 | include 165 | $self 166 | 167 | 168 | 169 | 170 | begin 171 | { 172 | beginCaptures 173 | 174 | 0 175 | 176 | name 177 | punctuation.definition.procedure.begin.postscript 178 | 179 | 180 | end 181 | } 182 | endCaptures 183 | 184 | 0 185 | 186 | name 187 | punctuation.definition.procedure.end.postscript 188 | 189 | 190 | name 191 | meta.procedure.postscript 192 | patterns 193 | 194 | 195 | include 196 | $self 197 | 198 | 199 | 200 | 201 | begin 202 | \<\~ 203 | beginCaptures 204 | 205 | 0 206 | 207 | name 208 | punctuation.definition.string.begin.postscript 209 | 210 | 211 | end 212 | \~\> 213 | endCaptures 214 | 215 | 0 216 | 217 | name 218 | punctuation.definition.string.end.postscript 219 | 220 | 221 | name 222 | string.other.base85.postscript 223 | patterns 224 | 225 | 226 | match 227 | [!-z\s]+ 228 | 229 | 230 | match 231 | . 232 | name 233 | invalid.illegal.base85.char.postscript 234 | 235 | 236 | 237 | 238 | begin 239 | \< 240 | beginCaptures 241 | 242 | 0 243 | 244 | name 245 | punctuation.definition.string.begin.postscript 246 | 247 | 248 | end 249 | \> 250 | endCaptures 251 | 252 | 0 253 | 254 | name 255 | punctuation.definition.string.end.postscript 256 | 257 | 258 | name 259 | string.other.hexadecimal.postscript 260 | patterns 261 | 262 | 263 | match 264 | [0-9A-Fa-f\s]+ 265 | 266 | 267 | match 268 | . 269 | name 270 | invalid.illegal.hexadecimal.char.postscript 271 | 272 | 273 | 274 | 275 | comment 276 | well, not really, but short of listing rules for all bases from 2-36 best we can do 277 | match 278 | [0-3]?[0-9]#[0-9a-zA-Z]+ 279 | name 280 | constant.numeric.radix.postscript 281 | 282 | 283 | match 284 | (\-|\+)?\d+(\.\d*)?([eE](\-|\+)?\d+)? 285 | name 286 | constant.numeric.postscript 287 | 288 | 289 | match 290 | (\-|\+)?\.\d+([eE](\-|\+)?\d+)? 291 | name 292 | constant.numeric.postscript 293 | 294 | 295 | match 296 | \b(abs|add|aload|anchorsearch|and|arc|arcn|arct|arcto|array|ashow|astore|atan|awidthshow|begin|bind|bitshift|bytesavailable|cachestatus|ceiling|charpath|clear|cleartomark|cleardictstack|clip|clippath|closefile|closepath|colorimage|concat|concatmatrix|condition|configurationerror|copy|copypage|cos|count|countdictstack|countexecstack|counttomark|cshow|currentblackgeneration|currentcacheparams|currentcmykcolor|currentcolor|currentcolorrendering|currentcolorscreen|currentcolorspace|currentcolortransfer|currentcontext|currentdash|currentdevparams|currentdict|currentfile|currentflat|currentfont|currentglobal|currentgray|currentgstate|currenthalftone|currenthalftonephase|currenthsbcolor|currentlinecap|currentlinejoin|currentlinewidth|currentmatrix|currentmiterlimit|currentobjectformat|currentpacking|currentpagedevice|currentpoint|currentrgbcolor|currentscreen|currentshared|currentstrokeadjust|currentsystemparams|currenttransfer|currentundercolorremoval|currentuserparams|curveto|cvi|cvlit|cvn|cvr|cvrs|cvs|cvx|def|defaultmatrix|definefont|defineresource|defineusername|defineuserobject|deletefile|detach|deviceinfo|dict|dictfull|dictstack|dictstackoverflow|dictstackunderflow|div|dtransform|dup|echo|eexec|end|eoclip|eofill|eoviewclip|eq|erasepage|errordict|exch|exec|execform|execstack|execstackoverflow|execuserobject|executeonly|executive|exit|exp|false|file|filenameforall|fileposition|fill|filter|findencoding|findfont|findresource|flattenpath|floor|flush|flushfile|FontDirectory|for|forall|fork|ge|get|getinterval|globaldict|GlobalFontDirectory|glyphshow|grestore|grestoreall|gsave|gstate|gt|handleerror|identmatrix|idiv|idtransform|if|ifelse|image|imagemask|index|ineofill|infill|initclip|initgraphics|initmatrix|initviewclip|instroke|internaldict|interrupt|inueofill|inufill|inustroke|invalidaccess|invalidcontext|invalidexit|invalidfileaccess|invalidfont|invalidid|invalidrestore|invertmatrix|ioerror|ISOLatin1Encoding|itransform|join|kshow|known|languagelevel|le|length|limitcheck|lineto|ln|load|lock|log|loop|lt|makefont|makepattern|mark|matrix|maxlength|mod|monitor|moveto|mul|ne|neg|newpath|noaccess|nocurrentpoint|not|notify|null|nulldevice|or|packedarray|pathbbox|pathforall|pop|print|printobject|product|prompt|pstack|put|putinterval|quit|rand|rangecheck|rcurveto|read|readhexstring|readline|readonly|readstring|realtime|rectclip|rectfill|rectstroke|rectviewclip|renamefile|repeat|resetfile|resourceforall|resourcestatus|restore|reversepath|revision|rlineto|rmoveto|roll|rootfont|rotate|round|rrand|run|save|scale|scalefont|scheck|search|selectfont|serialnumber|setbbox|setblackgeneration|setcachedevice|setcachedevice2|setcachelimit|setcacheparams|setcharwidth|setcmykcolor|setcolor|setcolorrendering|setcolorscreen|setcolorspace|setcolortransfer|setdash|setdevparams|setfileposition|setflat|setfont|setglobal|setgray|setgstate|sethalftone|sethalftonephase|sethsbcolor|setlinecap|setlinejoin|setlinewidth|setmatrix|setmiterlimit|setobjectformat|setoverprint|setpacking|setpagedevice|setpattern|setrgbcolor|setscreen|setshared|setstrokeadjust|setsystemparams|settransfer|setucacheparams|setundercolorremoval|setuserparams|setvmthreshold|shareddict|show|showpage|sin|sqrt|srand|stack|stackoverflow|stackunderflow|StandardEncoding|start|startjob|status|statusdict|stop|stopped|store|string|stringwidth|stroke|strokepath|sub|syntaxerror|systemdict|timeout|transform|translate|true|truncate|type|typecheck|token|uappend|ucache|ucachestatus|ueofill|ufill|undef|undefined|undefinedfilename|undefineresource|undefinedresult|undefinefont|undefineresource|undefinedresource|undefineuserobject|unmatchedmark|unregistered|upath|userdict|UserObjects|usertime|ustroke|ustrokepath|version|viewclip|viewclippath|VMerror|vmreclaim|vmstatus|wait|wcheck|where|widthshow|write|writehexstring|writeobject|writestring|wtranslation|xcheck|xor|xshow|xyshow|yield|yshow)\b 297 | name 298 | keyword.operator.postscript 299 | 300 | 301 | match 302 | //[^\(\)\<\>\[\]\{\}\/\%\s]+ 303 | name 304 | variable.other.immediately-evaluated.postscript 305 | 306 | 307 | match 308 | /[^\(\)\<\>\[\]\{\}\/\%\s]+ 309 | name 310 | variable.other.literal.postscript 311 | 312 | 313 | comment 314 | stuff like 22@ff will show as number 22 followed by name @ff, but should be name 22@ff! 315 | match 316 | [^\(\)\<\>\[\]\{\}\/\%\s]+ 317 | name 318 | variable.other.name.postscript 319 | 320 | 321 | repository 322 | 323 | string_content 324 | 325 | patterns 326 | 327 | 328 | match 329 | \\[0-7]{1,3} 330 | name 331 | constant.numeric.octal.postscript 332 | 333 | 334 | match 335 | \\(\\|[nrtbf\(\)]|[0-7]{1,3}|\r?\n) 336 | name 337 | constant.character.escape.postscript 338 | 339 | 340 | match 341 | \\ 342 | name 343 | invalid.illegal.unknown-escape.postscript.ignored 344 | 345 | 346 | begin 347 | \( 348 | end 349 | \) 350 | patterns 351 | 352 | 353 | include 354 | #string_content 355 | 356 | 357 | 358 | 359 | 360 | 361 | scopeName 362 | source.postscript 363 | uuid 364 | B89483CD-6AE0-4517-BE2C-82F8083B7359 365 | 366 | 367 | -------------------------------------------------------------------------------- /plist/GoCoEdit.tmBundle/Preferences/Comments.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | name 5 | Comments 6 | scope 7 | source.abc 8 | settings 9 | 10 | shellVariables 11 | 12 | 13 | name 14 | TM_COMMENT_START 15 | value 16 | % 17 | 18 | 19 | name 20 | TM_COMMENT_DISABLE_INDENT 21 | value 22 | yes 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /plist/GoCoEdit.tmBundle/Preferences/Miscellaneous.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | name 5 | Miscellaneous 6 | scope 7 | source.abc 8 | settings 9 | 10 | increaseIndentPattern 11 | ^[[:alpha:]+]:[^\t ]+ 12 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /plist/GoCoEdit.tmBundle/Preferences/Symbol Index.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | name 5 | Symbol Index 6 | scope 7 | meta.field.index.abc 8 | settings 9 | 10 | showInIndexedSymbolList 11 | 1 12 | symbolIndexTransformation 13 | 14 | s/^X:\s*(\d+)/Tune #$1/ 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /plist/GoCoEdit.tmBundle/Preferences/Symbol List.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | name 5 | Symbol List 6 | scope 7 | meta.field.index.abc, meta.field.title.abc, meta.inline-field.title.abc, meta.field.part.abc, meta.inline-field.part.abc, meta.field.voice.abc, meta.inline-field.voice.abc 8 | settings 9 | 10 | showInSymbolList 11 | 1 12 | symbolTransformation 13 | 14 | s/^X:\s*(\d+)/Tune #$1/; 15 | s/^T:\s*([^%\n\r]+)(?:\s*%.*)?/Title: $1/; 16 | s/\[T:\s*([^%\r\n\]]+)\]/Title: $1/; 17 | s/^P:\s*([^%\s\n\r]+)\b(?:\s+[^%\r\n]*)?(?:\s*%.*)?/Part: $1/; 18 | s/\[P:\s*([^%\s\r\n\]]+)\b(?:\s+[^%\r\n\]]*)?\]/Part: $1/; 19 | s/^V:\s*([^%\s\n\r]+)\b(?:\s+[^%\r\n]*)?(?:\s*%.*)?/Voice: $1/; 20 | s/\[V:\s*([^%\s\r\n\]]+)\b(?:\s+[^%\r\n\]]*)?\]/Voice: $1/; 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /plist/GoCoEdit.tmBundle/Syntaxes/GoCoEdit Mode.tmLanguage: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | fileTypes 6 | 7 | gcemode 8 | 9 | name 10 | GoCoEdit Mode 11 | patterns 12 | 13 | 14 | include 15 | #value 16 | 17 | 18 | include 19 | #comments 20 | 21 | 22 | repository 23 | 24 | array 25 | 26 | begin 27 | (\[) 28 | beginCaptures 29 | 30 | 1 31 | 32 | name 33 | punctuation.definition.array.begin.gcemode 34 | 35 | 36 | end 37 | (\]) 38 | endCaptures 39 | 40 | 1 41 | 42 | name 43 | punctuation.definition.array.end.gcemode 44 | 45 | 46 | name 47 | meta.structure.array.gcemode 48 | patterns 49 | 50 | 51 | include 52 | #value 53 | 54 | 55 | match 56 | , 57 | name 58 | punctuation.separator.array.gcemode 59 | 60 | 61 | 62 | comments 63 | 64 | captures 65 | 66 | 1 67 | 68 | name 69 | punctuation.definition.comment.gcemode 70 | 71 | 72 | comment 73 | Line Comments 74 | match 75 | (//).*$\n? 76 | name 77 | comment.line.double-slash.gcemode 78 | 79 | constant 80 | 81 | match 82 | \b(?:true|false|null)\b 83 | name 84 | constant.language.gcemode 85 | 86 | number 87 | 88 | comment 89 | Handles integer and decimal numbers 90 | match 91 | (?x) 92 | (-?(?:0|[1-9]\d*)(?:(?:\.\d+)?(?:[eE][+-]?\d+)?)?) 93 | name 94 | constant.numeric.gcemode 95 | 96 | object 97 | 98 | patterns 99 | 100 | 101 | begin 102 | (\{) 103 | beginCaptures 104 | 105 | 1 106 | 107 | name 108 | punctuation.definition.dictionary.begin.gcemode 109 | 110 | 111 | comment 112 | A JSON object 113 | end 114 | (\}) 115 | endCaptures 116 | 117 | 1 118 | 119 | name 120 | punctuation.definition.dictionary.end.gcemode 121 | 122 | 123 | name 124 | meta.structure.dictionary.gcemode 125 | patterns 126 | 127 | 128 | include 129 | #string 130 | 131 | 132 | include 133 | #comments 134 | 135 | 136 | begin 137 | (?x) 138 | (?:^\s*)?(\") 139 | (token(?:izer)?|name|ext|state|parse| 140 | overwriteState|stateAfterMatch|recoverState| 141 | onlyOnLineStart|dash_docsets|symbol_search|hint|global| 142 | comment|number|atom|property|attribute|keyword|builtin| 143 | string(?:-2)?|variable(?:-2)?|variable2|variable3|def| 144 | bracket|tag|header|link|error) 145 | (\")\s*(:) 146 | beginCaptures 147 | 148 | 1 149 | 150 | name 151 | punctuation.definition.string.begin.gcemode 152 | 153 | 2 154 | 155 | name 156 | keyword.control.gcemode 157 | 158 | 3 159 | 160 | name 161 | punctuation.definition.string.end.gcemode 162 | 163 | 4 164 | 165 | name 166 | punctuation.separator.dictionary.key-value.gcemode 167 | 168 | 169 | contentName 170 | meta.structure.dictionary.value.gcemode 171 | end 172 | (,)|(?=\}) 173 | endCaptures 174 | 175 | 1 176 | 177 | name 178 | punctuation.separator.dictionary.pair.gcemode 179 | 180 | 181 | name 182 | meta.structure.key.gcemode 183 | patterns 184 | 185 | 186 | include 187 | #value 188 | 189 | 190 | 191 | 192 | begin 193 | (?:^\s*)?(?>(\")(regex)(\")\s*(:)) 194 | beginCaptures 195 | 196 | 1 197 | 198 | name 199 | punctuation.definition.string.begin.gcemode 200 | 201 | 2 202 | 203 | name 204 | keyword.control.regex.gcemode 205 | 206 | 3 207 | 208 | name 209 | punctuation.definition.string.end.gcemode 210 | 211 | 4 212 | 213 | name 214 | punctuation.separator.dictionary.key-value.gcemode 215 | 216 | 217 | contentName 218 | meta.structure.dictionary.value.gcemode 219 | end 220 | (,)|(?=\}) 221 | endCaptures 222 | 223 | 1 224 | 225 | name 226 | punctuation.separator.dictionary.pair.gcemode 227 | 228 | 229 | name 230 | meta.structure.key.regex.gcemode 231 | patterns 232 | 233 | 234 | include 235 | #regexString 236 | 237 | 238 | include 239 | #array 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | regexArray 248 | 249 | begin 250 | (\[) 251 | beginCaptures 252 | 253 | 1 254 | 255 | name 256 | punctuation.definition.array.begin.gcemode 257 | 258 | 259 | end 260 | (\]) 261 | endCaptures 262 | 263 | 1 264 | 265 | name 266 | punctuation.definition.array.end.gcemode 267 | 268 | 269 | name 270 | meta.structure.array.regex.gcemode 271 | patterns 272 | 273 | 274 | include 275 | #regexString 276 | 277 | 278 | match 279 | , 280 | name 281 | punctuation.separator.array.gcemode 282 | 283 | 284 | 285 | regexString 286 | 287 | begin 288 | ((?!\\)"(?!regex)) 289 | beginCaptures 290 | 291 | 1 292 | 293 | name 294 | punctuation.definition.string.begin.gcemode 295 | 296 | 297 | comment 298 | Escaped Regex Strings 299 | end 300 | ((?!regex|\\)") 301 | endCaptures 302 | 303 | 1 304 | 305 | name 306 | punctuation.definition.string.end.gcemode 307 | 308 | 309 | name 310 | string.quoted.double.regex.gcemode 311 | patterns 312 | 313 | 314 | include 315 | source.escapedregexp 316 | 317 | 318 | match 319 | \\" 320 | name 321 | constant.character.escape.regexp.gcemode 322 | 323 | 324 | 325 | string 326 | 327 | begin 328 | (") 329 | beginCaptures 330 | 331 | 1 332 | 333 | name 334 | punctuation.definition.string.begin.gcemode 335 | 336 | 337 | comment 338 | Strings 339 | end 340 | (") 341 | endCaptures 342 | 343 | 1 344 | 345 | name 346 | punctuation.definition.string.end.gcemode 347 | 348 | 349 | name 350 | string.quoted.double.gcemode 351 | patterns 352 | 353 | 354 | match 355 | (?x:\\(?:["\\/bfnrt]|u[0-9a-fA-F]{4})) 356 | name 357 | constant.character.escape.gcemode 358 | 359 | 360 | match 361 | \\(?!["\\/bfnrt]|u[0-9a-fA-F]{4}). 362 | name 363 | invalid.illegal.unrecognized-string-escape.gcemode 364 | 365 | 366 | 367 | value 368 | 369 | patterns 370 | 371 | 372 | include 373 | #constant 374 | 375 | 376 | include 377 | #number 378 | 379 | 380 | include 381 | #string 382 | 383 | 384 | include 385 | #array 386 | 387 | 388 | include 389 | #object 390 | 391 | 392 | 393 | 394 | scopeName 395 | source.gcemode 396 | uuid 397 | d354a39b-b86a-4ee1-8535-40cbfe06b4dc 398 | 399 | 400 | -------------------------------------------------------------------------------- /sublime/ABC Notation/ABC Formatting Extension.sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | name: ABC Formatting Extension 4 | file_extensions: 5 | - fmt 6 | scope: source.fmt 7 | 8 | variables: 9 | field_value: '[^%\n\r]' 10 | 11 | contexts: 12 | prototype: 13 | - include: comments 14 | 15 | main: 16 | - include: directive 17 | - include: embedded-content 18 | 19 | comments: 20 | - match: '(?:^\s*)?(%(?!abc))' 21 | captures: 22 | 1: punctuation.definition.comment.fmt 23 | push: 24 | - meta_scope: comment.line.percentage.fmt 25 | - match: $ 26 | pop: true 27 | - match: '(?:^\s*)?(?>(%)(abc(?:-\d\.\d)?))' 28 | scope: comment.line.namespace.fmt 29 | captures: 30 | 1: punctuation.definition.comment.fmt 31 | 2: keyword.other.special-method.namespace.fmt 32 | 33 | escape: 34 | - scope: constant.character.escape.fmt 35 | match: (\\(?:\\|%|[^ \n\r]|u\h{4}|u\h{8}|\\[[:punct:]&&[\w]&&[^[ \t\v\f]]]{2})) 36 | - scope: constant.character.escape.fmt 37 | match: '(?:&\w+;)' 38 | - scope: constant.character.escape.fmt 39 | match: '(?:&#\d+;)' 40 | - scope: constant.character.escape.fmt 41 | match: '(?:&#x\h+;)' 42 | 43 | directive: 44 | - match: '^\s*((?!(?:begin|end(?:text|svg|ps|js|md|ml))|postscript|ps)\w+)\b' 45 | scope: meta.directive.abc 46 | captures: 47 | 1: keyword.operator.word.directive.fmt 48 | push: 49 | - meta_content_scope: variable.parameter.directive.fmt 50 | - include: midi-keywords 51 | - scope: storage.type.numeric.fmt 52 | match: '\b(\d*(?:\.\d*)?)(?!pt|in|cm)' 53 | - scope: constant.numeric.float.length-unit.fmt 54 | match: '(\d*(?:\.\d*)?(?:pt|in|cm)?)' 55 | - match: '(?i)\b(true|false|yes|no|on|off)\b' 56 | scope: storage.type.directive.fmt 57 | - include: comments 58 | - match: $ 59 | pop: true 60 | - comment: Inline Postscript Instructions 61 | match: '(%%)\s*(postscript|ps)\b' 62 | captures: 63 | 1: comment.line.percentage.fmt 64 | 2: support.function.directive.fmt 65 | push: 'scope:source.ps' 66 | with_prototype: 67 | - include: comments 68 | - match: $ 69 | pop: true 70 | 71 | midi-keywords: 72 | - scope: keyword.operator.word.directive.midi.fmt 73 | match: |- 74 | (?x) 75 | (MIDI\b + 76 | (?:no)?barlines|bassprog|(?:no)?beataccents|beat(?:mod|string)?| 77 | bend(?:velocity|string)|chord(?:attack|name|program)| 78 | control(?:combo|string)?|deltaloudness|droneo(?:n|ff)| 79 | drum(?:on|off|bars|map)|expand|fermata(?:fixed|proportional)?| 80 | gchord(?:on|off)?|grace(?:divider)?|makechordchannels|pitchbend| 81 | portamento|program|ptstress|randomchordattack|ratio|stressmodel| 82 | snt|rtranspose|temperament(?:linear|equal|normal)|transpose| 83 | trim|vol(inc)?)\b 84 | 85 | embedded-content: 86 | - comment: Typeset Text 87 | match: '^\s*(begintext)\b(\s+(?:obeylines|fill|ragged|justify|align|skip))?\b' 88 | captures: 89 | 1: support.function.directive.fmt 90 | 2: variable.parameter.directive.fmt 91 | push: 92 | - meta_scope: meta.typeset.fmt 93 | - meta_content_scope: string.unquoted.typeset.fmt 94 | - include: comments 95 | - match: '^\s*(endtext)' 96 | captures: 97 | 1: support.function.directive.fmt 98 | pop: true 99 | - comment: Embedded HTML 100 | match: '^\s*(beginml)\b' 101 | captures: 102 | 1: support.function.directive.fmt 103 | push: 'scope:text.html.basic' 104 | with_prototype: 105 | - include: comments 106 | - match: '^\s*(endml)' 107 | captures: 108 | 1: support.function.directive.fmt 109 | pop: true 110 | - comment: Embedded JavaScript 111 | match: '^\s*(beginjs)\b' 112 | captures: 113 | 1: support.function.directive.fmt 114 | push: 'scope:source.js' 115 | with_prototype: 116 | - include: comments 117 | - match: '^\s*(endjs)' 118 | captures: 119 | 1: support.function.directive.fmt 120 | pop: true 121 | - comment: Embedded SVG 122 | match: '^\s*(beginsvg)\b' 123 | captures: 124 | 1: support.function.directive.fmt 125 | push: 'scope:text.xml' 126 | with_prototype: 127 | - include: comments 128 | - match: '^\s*(endsvg)' 129 | captures: 130 | 1: support.function.directive.fmt 131 | pop: true 132 | - comment: Embedded PostScript 133 | match: '^\s*(beginps)(\s+(?:nosvg))?\b' 134 | captures: 135 | 1: support.function.directive.fmt 136 | 2: variable.parameter.directive.fmt 137 | push: 'scope:source.ps' 138 | with_prototype: 139 | - include: comments 140 | - match: '^\s*(endps)' 141 | captures: 142 | 1: support.function.directive.fmt 143 | pop: true 144 | # Embedded Markdown will ONLY work when theres a blank line before the '%%endmd'. 145 | # Otherwise, the scopes used in Markdown will extend past '%%endmd', since 146 | # the syntax engine would consider the line beneath any Markdown text within 147 | # the Markdown scope, instead of escaping to the ABC Notation scope as intended. 148 | - comment: Embedded Markdown 149 | match: '^\s*(beginmd)\b' 150 | captures: 151 | 1: support.function.directive.fmt 152 | push: 'scope:text.html.markdown' 153 | with_prototype: 154 | - include: comments 155 | - match: '^\s*(endmd)' 156 | captures: 157 | 1: support.function.directive.fmt 158 | pop: true 159 | ... 160 | -------------------------------------------------------------------------------- /sublime/ABC Notation/ABC Notation.sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://abcnotation.com/wiki/abc:standard:v2.2 4 | name: ABC Notation 5 | comment: |- 6 | This was originally based on https://github.com/jimhawkridge/SublimeABC/, 7 | but later outgrew the limits that PackageDev imposes on tmLanguage files. 8 | file_extensions: 9 | - abc 10 | - abh 11 | - abp 12 | first_line_match: ^%abc(?:-\d\.\d)? 13 | scope: source.abc 14 | variables: 15 | accidental: '([_=\^](?:\d*\/*\d*)|=|[_\^]{2})' 16 | note: "([A-Ga-g][,']*)" 17 | note_length: '(\d*[<>/]*\d*)' 18 | field_value: '[^%\n\r]' 19 | key_value: '[^% \n\r]' 20 | 21 | contexts: 22 | prototype: 23 | # escape characters 24 | - include: escape 25 | # fields 26 | - include: fields 27 | # comments, directives, namespace comments, remark fields 28 | - include: comments 29 | 30 | comments: 31 | # line comments 32 | - match: '(?:^\s*)?(%(?!%|abc))' 33 | captures: 34 | 1: punctuation.definition.comment.abc 35 | push: 36 | - meta_scope: comment.line.percentage.abc 37 | - match: $ 38 | pop: true 39 | # directives and pseudo-comment 40 | - include: directive 41 | # embedded content 42 | - include: embedded-content 43 | # namespace comment 44 | - match: '(?:^\s*)?(?>(%)(abc(?:-\d\.\d)?))' 45 | scope: comment.line.namespace.abc 46 | captures: 47 | 1: punctuation.definition.comment.abc 48 | 2: keyword.other.special-method.namespace.abc 49 | # remark field 50 | - match: '^(r:)' 51 | scope: meta.field.remark.abc 52 | captures: 53 | 1: support.function.field.remark.abc 54 | push: 55 | - meta_scope: meta.field.remark.abc 56 | - match: '{{field_value}}*' 57 | scope: comment.line.remark.abc 58 | - match: $ 59 | pop: true 60 | 61 | fields: 62 | - include: instruction-field 63 | # info fields 64 | - match: '^((?>[[:alpha:]+&&[^IKPVTXr]]:))' 65 | scope: meta.field.abc 66 | captures: 67 | 1: support.function.field.abc 68 | push: 69 | - meta_content_scope: meta.field.abc 70 | - include: escape 71 | - include: comments 72 | - match: '{{field_value}}*' 73 | scope: string.unquoted.field.abc 74 | - match: $ 75 | pop: true 76 | # voice field 77 | - match: '^((?>V:))' 78 | scope: meta.field.voice.abc 79 | captures: 80 | 1: entity.name.tag.voice.abc 81 | push: 82 | - meta_scope: meta.field.voice.abc 83 | - include: escape 84 | - include: comments 85 | - match: '\s*({{field_value}}+)' 86 | captures: 87 | 1: variable.parameter.voice.abc 88 | - match: $ 89 | pop: true 90 | # part field 91 | - match: '^((?>P:))' 92 | captures: 93 | 1: entity.name.tag.part.abc 94 | push: 95 | - meta_scope: meta.field.part.abc 96 | - meta_content_scope: variable.parameter.part.abc 97 | - include: escape 98 | - include: comments 99 | - match: $ 100 | pop: true 101 | 102 | key-field: 103 | - match: '^(?>(K:)\s*\b({{key_value}}+)?\b *({{field_value}}*)?)' 104 | captures: 105 | 1: entity.name.tag.key.abc 106 | 2: variable.parameter.key.abc 107 | 3: string.unquoted.key.abc 108 | push: 109 | - meta_scope: meta.field.key.abc 110 | - meta_content_scope: string.unquoted.key.abc 111 | - match: $ 112 | pop: true 113 | 114 | title-field: 115 | - match: '^((?>T:))' 116 | captures: 117 | 1: entity.name.tag.title.abc 118 | push: 119 | - meta_scope: meta.field.title.abc 120 | - match: '\s*({{field_value}}+)' 121 | captures: 122 | 1: string.unquoted.title.abc 123 | - match: $ 124 | pop: true 125 | 126 | escape: 127 | - scope: constant.character.escape.abc 128 | match: (\\(?:\\|%|[^ \n\r]|u\h{4}|u\h{8}|\\[[:punct:]&&[\w]&&[^[ \t\v\f]]]{2})) 129 | - scope: constant.character.escape.abc 130 | match: '(?:&\w+;)' 131 | - scope: constant.character.escape.abc 132 | match: '(?:&#\d+;)' 133 | - scope: constant.character.escape.abc 134 | match: '(?:&#x\h+;)' 135 | 136 | # Start of ABC Notation 137 | main: 138 | # abc tunes 139 | - match: '^(X:)\s*(\d+)' 140 | scope: meta.field.index.abc 141 | captures: 142 | 1: entity.name.tag.index.abc 143 | 2: variable.parameter.index.abc 144 | push: abc-tune 145 | 146 | abc-tune: 147 | - meta_scope: meta.tune.abc 148 | - include: title-field 149 | # tune-body begins on finding the first 'K:' field to the next blank line. 150 | - match: '^(?>(K:)\s*\b({{key_value}}+)?\b *({{field_value}}*)?)' 151 | scope: meta.field.key.head.abc 152 | captures: 153 | 1: entity.name.tag.part.abc 154 | 2: variable.parameter.key.abc 155 | 3: string.unquoted.key.abc 156 | # TODO: Capture clef variable keywords within key field 157 | set: 158 | - meta_content_scope: meta.tune.abc 159 | - include: title-field 160 | - include: key-field 161 | - include: barline 162 | - include: inline-field 163 | - include: abc-chord 164 | - include: abc-note 165 | - include: abc-rest 166 | - include: abc-space 167 | - include: grace 168 | - include: decoration 169 | - include: macro 170 | - include: strings 171 | - include: operators 172 | - match: '^(\s*)?$' 173 | pop: true 174 | - match: '^(\s*)?$' 175 | pop: true 176 | 177 | abc-note: 178 | - match: |- 179 | (?x) 180 | {{accidental}}? 181 | {{note}} 182 | {{note_length}}? 183 | captures: 184 | 1: constant.language.accidental.abc 185 | 2: constant.character.note.abc 186 | 3: storage.type.note-length.abc 187 | 188 | abc-rest: 189 | - scope: meta.code.abc-rest.abc 190 | match: '([XZ])(\d+)?' 191 | captures: 192 | 1: storage.type.abc-rest.abc 193 | 2: storage.type.rest-length.abc 194 | - scope: meta.code.abc-rest.abc 195 | match: |- 196 | (?x) 197 | ([xz]) 198 | (\d*[<>/]*\d*)? 199 | captures: 200 | 1: storage.type.abc-rest.abc 201 | 2: storage.type.rest-length.abc 202 | 203 | abc-space: 204 | - scope: meta.code.abc-space.abc 205 | match: |- 206 | (?x) 207 | ([yY]) 208 | (\d+(?:\.\d*(?:pt|in|cm)?)?)? 209 | captures: 210 | 1: storage.type.spacer.abc 211 | 2: constant.numeric.space-length.abc 212 | 213 | decoration: 214 | - scope: variable.language.decoration.abc 215 | match: '(?:^\s*)?([HLMOPSTuv](?!:))' 216 | - scope: variable.language.decoration.abc 217 | match: '(!\w+!)' 218 | - scope: variable.language.decoration.abc 219 | match: |- 220 | (?x) 221 | (\!(?: 222 | \+|\-\(|\-\)|\/{1,3}|[0-5]|\<\(|\<\)|\<|\>\(|\>\)|\>|\^| 223 | accent|arpeggio|beam-accel|beam-rall|beambr[12]|beamon| 224 | breath|coda|courtesy|crescendo|crescendo\(|crescendo\)| 225 | D\.C\.(?:alcoda|alfine)?|D\.S\.(?:alcoda|alfine)?| 226 | dacapo|dacoda|diminuendo|diminuendo\(|diminuendo\)| 227 | dot|downbow|editorial|emphasis|f+|fermata|fine|gmark| 228 | invertedfermata|invertedturn|invertedturnx|invisible| 229 | longphrase|lowermordent|marcato|mediumphrase|mf|mordent| 230 | mp|open|p+|plus|pralltriller|rbend|rbstop|roll|segno|sfz| 231 | shortphrase|slide|snap|stemless|tenuto|thumb| 232 | trem[1-4]|trill|trill\(|trill\)|turn|turnx|upbow|uppermordent|wedge| 233 | xstem|\~\(|\~\))\!) 234 | # excludes matching '~' from macros in tune 235 | - scope: variable.language.decoration.abc 236 | match: (~(?![h-wH-W][a-zA-Z0-9]*)) 237 | 238 | macro: 239 | - scope: support.type.macro.abc 240 | match: '(\~[h-zH-Z][a-zA-Z0-9]{,30})' 241 | 242 | grace: 243 | - scope: meta.code.grace.abc 244 | match: '(\{/?)' 245 | captures: 246 | 1: support.type.grace.abc 247 | push: 248 | - match: ([A-Ga-g][,']*) 249 | scope: constant.character.note.abc 250 | - match: (\d*[<>/]*\d*)? 251 | scope: storage.type.note-length.abc 252 | - include: abc-rest 253 | - include: decoration 254 | - match: '(\})' 255 | captures: 256 | 1: support.type.grace.abc 257 | pop: true 258 | 259 | operators: 260 | - match: (\(\&|\&\&?|\&\)) 261 | scope: support.function.overlay.abc 262 | - match: (\\(?= *| *$)) 263 | scope: support.function.line-continue.abc 264 | - match: ((?:\((?![\d:])[',]?)|\)) 265 | scope: support.function.slur.abc 266 | - match: ([-\.`]) 267 | scope: support.type.ties.abc 268 | - match: (\$(?= *| *$)) 269 | scope: support.type.line-break.abc 270 | - match: (\(\d+(?::\d*(?::\d*)?)?) 271 | scope: support.type.tuplet.abc 272 | 273 | strings: 274 | - include: chord-symbol 275 | - include: annotation 276 | 277 | chord-symbol: 278 | - match: '("(?![_<>^@]))' 279 | scope: punctuation.definition.string.chord.begin.abc 280 | push: 281 | - meta_scope: string.quoted.double.chord.abc 282 | - meta_include_prototype: false 283 | - include: escape 284 | # TODO: Match for symbols in chord strings 285 | # (?x) 286 | # ([A-G]) 287 | # ([b#♭♮♯])? 288 | # (?>m(in)?|maj|dim|aug|sus|\d|\+)? 289 | # (/[A-G]) 290 | - match: '"' 291 | scope: punctuation.definition.string.chord.end.abc 292 | pop: true 293 | 294 | annotation: 295 | - match: '(\"[_<>^@])' 296 | scope: punctuation.definition.string.annotation.begin.abc 297 | push: 298 | - meta_content_scope: string.quoted.double.annotation.abc 299 | - meta_include_prototype: false 300 | - include: escape 301 | - match: '"' 302 | scope: punctuation.definition.string.annotation.end.abc 303 | pop: true 304 | 305 | # The following 3 contexts cover highlighting of directives, 306 | # instruction fields, & inline instruction fields. 307 | directive: 308 | - match: '(%%)\s*((?!(?:begin|end(?:text|svg|ps|js|md|ml))|postscript|ps)\w+)\b' 309 | scope: meta.directive.abc comment.line.percentage.directive.abc 310 | captures: 311 | 1: punctuation.definition.comment.abc 312 | 2: keyword.operator.word.directive.abc 313 | push: 314 | - meta_content_scope: variable.parameter.directive.abc 315 | - include: midi-keywords 316 | - scope: constant.numeric.float.length-unit.abc 317 | match: '(\d*(?:\.\d*)?(?:pt|in|cm)?)' 318 | - match: '(?i)\b(true|false|yes|no|on|off)\b' 319 | scope: storage.type.directive.abc 320 | # TODO: include more keywords to be highlighted 321 | - match: '\s*(%(?!%|abc))' 322 | captures: 323 | 1: punctuation.definition.comment.abc 324 | push: 325 | - meta_scope: comment.line.percentage.abc 326 | - match: $ 327 | pop: true 328 | - match: $ 329 | pop: true 330 | - match: '(%%(?!(?:begin|end(?:text|svg|ps|js|md|ml))|postscript|ps))' 331 | scope: meta.directive.abc comment.line.percentage.directive.abc 332 | captures: 333 | 1: punctuation.definition.comment.abc 334 | - comment: Inline Postscript Instructions 335 | match: '(%%)\s*(postscript|ps)\b' 336 | captures: 337 | 1: comment.line.percentage.abc 338 | 2: support.function.directive.abc 339 | push: 'scope:source.ps' 340 | with_prototype: 341 | - match: $ 342 | pop: true 343 | - include: prototype 344 | 345 | instruction-field: 346 | - comment: Instruction Field 347 | match: '^(I:)\s*((?!(?:begin|end(?:text|svg|ps|js|md|ml))|postscript|ps)\w+)\b' 348 | captures: 349 | 1: entity.name.tag.instruction.abc 350 | 2: keyword.operator.word.directive.abc 351 | push: 352 | - meta_scope: meta.instruction.abc 353 | - meta_content_scope: variable.parameter.directive.abc 354 | - meta_include_prototype: false 355 | - include: escape 356 | - include: comments 357 | - include: midi-keywords 358 | - match: '(?i)\b(true|false|yes|no|on|off)\b' 359 | scope: storage.type.directive.abc 360 | - scope: constant.numeric.float.length-unit.abc 361 | match: '(\d*(?:\.\d*)?(?:pt|in|cm)?)' 362 | - match: $ 363 | pop: true 364 | - comment: PostScript Instruction Field 365 | scope: meta.ps.abc 366 | match: '(^I:)\s*(postscript|ps)\b' 367 | captures: 368 | 1: entity.name.tag.instruction.abc 369 | 2: support.function.directive.abc 370 | push: 'scope:source.ps' 371 | with_prototype: 372 | - match: $ 373 | pop: true 374 | - include: prototype 375 | 376 | inline-instruction: 377 | - comment: Inline Instruction Field 378 | match: ((?>\[I:)\s*((?!(?:begin|end(?:text|svg|ps|js|md|ml))|postscript|ps)\w+)\b) 379 | captures: 380 | 1: entity.name.tag.inline-field.instruction.abc 381 | 2: keyword.operator.word.instruction.abc 382 | push: 383 | - meta_scope: meta.inline-field.instruction.abc 384 | - meta_content_scope: variable.parameter.instruction.abc 385 | - meta_include_prototype: false 386 | - include: escape 387 | - include: midi-keywords 388 | - match: '(?i)\b(true|false|yes|no|on|off)\b' 389 | scope: storage.type.directive.abc 390 | - scope: constant.numeric.float.length-unit.abc 391 | match: '(\d*(?:\.\d*)?(?:pt|in|cm)?)' 392 | - match: \s*((?>\])) 393 | captures: 394 | 1: entity.name.tag.inline-field.instruction.abc 395 | pop: true 396 | - comment: Inline PostScript Field 397 | scope: meta.ps.abc 398 | match: '(\[I:)\s*(postscript|ps)\b' 399 | captures: 400 | 1: entity.name.tag.inline-field.instruction.abc 401 | 2: keyword.operator.word.instruction.abc 402 | push: 'scope:source.ps' 403 | with_prototype: 404 | - match: '\s*((?>\]))' 405 | captures: 406 | 1: entity.name.tag.inline-field.instruction.abc 407 | pop: true 408 | 409 | # The following 3 contexts are defined in a way that 410 | # permits syntax highlighting that obeys how ABC notation is meant 411 | # to behave. By precedence, the '[' symbol will match as a barline first, 412 | # the beginning of a chord sequence second, and as the start of an 413 | # inline field last, since inline fields are more explicit in grammar 414 | # compared to finding a barline or chord sequence, which often can end 415 | # up being put next to each other in an ABC Notation file. 416 | # Any changes made to these contexts should only be done so under strict 417 | # review, and with good reason. 418 | barline: 419 | - scope: meta.barline.invisible.abc 420 | match: '((?>\[\|\]|\[\]))((?>\d+(?:[,-]\d+)*))?' 421 | captures: 422 | 1: comment.block.documentation.barline.abc 423 | 2: comment.block.documentation.barline.repeat-length.abc 424 | - scope: meta.barline.abc 425 | match: '((?>:+))' 426 | captures: 427 | 1: punctuation.separator.barline.abc 428 | - scope: meta.barline.abc 429 | match: '(\[\[)' 430 | captures: 431 | 1: punctuation.separator.barline.abc 432 | - scope: meta.barline.abc 433 | match: '(\|\])' 434 | captures: 435 | 1: punctuation.separator.barline.abc 436 | - scope: meta.barline.abc 437 | match: ((?>[\[\|\]]:+)) 438 | captures: 439 | 1: punctuation.separator.barline.abc 440 | - scope: meta.barline.abc 441 | match: '((?>:*\|+))((?>\d+(?:[,-]\d+)*))?' 442 | captures: 443 | 1: punctuation.separator.barline.abc 444 | 2: punctuation.separator.barline.repeat-length.abc 445 | - scope: meta.barline.abc 446 | match: '((?>:*\]))((?>\d+(?:[,-]\d+)*))' 447 | captures: 448 | 1: punctuation.separator.barline.abc 449 | 2: punctuation.separator.barline.repeat-length.abc 450 | - scope: meta.barline.abc 451 | match: '((?>:*\[+(?![a-zA-Z]:|[^\[\s\r\n:\d\|\]])))((?>\d+(?:[,-]\d+)*))?' 452 | captures: 453 | 1: punctuation.separator.barline.abc 454 | 2: punctuation.separator.barline.repeat-length.abc 455 | 456 | abc-chord: 457 | # an ABC chord sequence cannot include spaces or new lines, 458 | # and cannot match a barline or the start of an inline field. 459 | - match: | 460 | (?x) 461 | (\[ 462 | (?![\[\|\]<>/\d\r\n\s]|(?:[a-zA-Z]:)) 463 | ) 464 | captures: 465 | 1: support.type.decoration.chord.abc 466 | push: 467 | - meta_scope: meta.chord.abc 468 | # spaces are not permitted in chord sequences 469 | - match: '([\s\r\n\[\|]\])' 470 | captures: 471 | 1: invalid.illegal.chord.abc 472 | pop: true 473 | - include: abc-note 474 | - include: abc-rest 475 | - include: abc-space 476 | - include: decoration 477 | - include: macro 478 | - include: operators 479 | - match: '(\](?\[[[:alpha:]&&[^IKPVXr]]:))\s* 488 | captures: 489 | 1: support.function.inline-field.abc 490 | push: 491 | - meta_scope: meta.inline-field.abc 492 | - meta_content_scope: string.unquoted.inline-field.abc 493 | - meta_include_prototype: false 494 | - include: escape 495 | - match: \s*((?>\])) 496 | captures: 497 | 1: support.function.inline-field.abc 498 | pop: true 499 | - match: ((?>\[r:))\s* 500 | captures: 501 | 1: support.function.inline-field.remark.abc 502 | push: 503 | - meta_scope: meta.inline-field.remark.abc 504 | - meta_content_scope: comment.block.remark.abc 505 | - meta_include_prototype: false 506 | - include: escape 507 | - match: \s*((?>\])) 508 | captures: 509 | 1: support.function.inline-field.remark.abc 510 | pop: true 511 | - match: ((?>\[V:))\s* 512 | captures: 513 | 1: entity.name.tag.inline-field.voice.abc 514 | push: 515 | - meta_scope: meta.inline-field.voice.abc 516 | - meta_content_scope: variable.parameter.voice.abc 517 | - meta_include_prototype: false 518 | - include: escape 519 | - match: \s*((?>\])) 520 | captures: 521 | 1: entity.name.tag.inline-field.voice.abc 522 | pop: true 523 | - match: ((?>\[P:))\s* 524 | captures: 525 | 1: entity.name.tag.inline-field.part.abc 526 | push: 527 | - meta_scope: meta.inline-field.part.abc 528 | - meta_content_scope: meta.inline-field.part.abc variable.parameter.part.abc 529 | - meta_include_prototype: false 530 | - include: escape 531 | - match: \s*((?>\])) 532 | captures: 533 | 1: entity.name.tag.inline-field.part.abc 534 | pop: true 535 | - match: ((?>\[T:))\s* 536 | captures: 537 | 1: entity.name.tag.inline-field.title.abc 538 | push: 539 | - meta_scope: meta.inline-field.title.abc 540 | - meta_content_scope: string.unquoted.title.abc 541 | - meta_include_prototype: false 542 | - include: escape 543 | - match: \s*((?>\])) 544 | captures: 545 | 1: entity.name.tag.inline-field.title.abc 546 | pop: true 547 | - match: ((?>\[K:)\s*\b({{key_value}}+)?\b) 548 | captures: 549 | 1: entity.name.tag.part.abc 550 | 2: variable.parameter.key.abc 551 | push: 552 | - meta_scope: meta.inline-field.key.abc 553 | - meta_content_scope: string.unquoted.key.abc 554 | - meta_include_prototype: false 555 | - include: escape 556 | - match: \s*((?>\])) 557 | captures: 558 | 1: entity.name.tag.inline-field.key.abc 559 | pop: true 560 | 561 | midi-keywords: 562 | - scope: keyword.operator.word.directive.midi.abc 563 | match: |- 564 | (?x) 565 | (MIDI\b + 566 | (?:no)?barlines|bassprog|(?:no)?beataccents|beat(?:mod|string)?| 567 | bend(?:velocity|string)|chord(?:attack|name|program)| 568 | control(?:combo|string)?|deltaloudness|droneo(?:n|ff)| 569 | drum(?:on|off|bars|map)|expand|fermata(?:fixed|proportional)?| 570 | gchord(?:on|off)?|grace(?:divider)?|makechordchannels|pitchbend| 571 | portamento|program|ptstress|randomchordattack|ratio|stressmodel| 572 | snt|rtranspose|temperament(?:linear|equal|normal)|transpose| 573 | trim|vol(inc)?)\b 574 | 575 | embedded-content: 576 | - comment: Typeset Text 577 | match: '(%%)(begintext)\b(\s+(?:obeylines|fill|ragged|justify|align|skip))?\b' 578 | captures: 579 | 1: comment.line.percentage.abc 580 | 2: support.function.directive.abc 581 | 3: variable.parameter.directive.abc 582 | push: 583 | - meta_scope: meta.typeset.abc 584 | - meta_content_scope: string.unquoted.typeset.abc 585 | - include: prototype 586 | - match: '(%%)\s*(endtext)' 587 | captures: 588 | 1: comment.line.percentage.abc 589 | 2: support.function.directive.abc 590 | pop: true 591 | - comment: Embedded HTML 592 | match: '(%%)\s*(beginml)\b' 593 | captures: 594 | 1: comment.line.percentage.abc 595 | 2: support.function.directive.abc 596 | push: 'scope:text.html.basic' 597 | with_prototype: 598 | - include: prototype 599 | - match: '(%%)\s*(endml)' 600 | captures: 601 | 1: comment.line.percentage.abc 602 | 2: support.function.directive.abc 603 | pop: true 604 | - comment: Embedded JavaScript 605 | match: '(%%)\s*(beginjs)\b' 606 | captures: 607 | 1: comment.line.percentage.abc 608 | 2: support.function.directive.abc 609 | push: 'scope:source.js' 610 | with_prototype: 611 | - include: prototype 612 | - match: '(%%)\s*(endjs)' 613 | captures: 614 | 1: comment.line.percentage.abc 615 | 2: support.function.directive.abc 616 | pop: true 617 | - comment: Embedded SVG 618 | match: '(%%)\s*(beginsvg)\b' 619 | captures: 620 | 1: comment.line.percentage.abc 621 | 2: support.function.directive.abc 622 | push: 'scope:text.xml' 623 | with_prototype: 624 | - include: prototype 625 | - match: '(%%)\s*(endsvg)' 626 | captures: 627 | 1: comment.line.percentage.abc 628 | 2: support.function.directive.abc 629 | pop: true 630 | - comment: Embedded PostScript 631 | match: '(%%)\s*(beginps)(\s+(?:nosvg))?\b' 632 | captures: 633 | 1: comment.line.percentage.abc 634 | 2: support.function.directive.abc 635 | 3: variable.parameter.directive.abc 636 | push: 'scope:source.ps' 637 | with_prototype: 638 | - include: prototype 639 | - match: '(%%)\s*(endps)' 640 | captures: 641 | 1: comment.line.percentage.abc 642 | 2: support.function.directive.abc 643 | pop: true 644 | # Embedded Markdown will ONLY work when theres a blank line before the '%%endmd'. 645 | # Otherwise, the scopes used in Markdown will extend past '%%endmd', since 646 | # the syntax engine would consider the line beneath any Markdown text within 647 | # the Markdown scope, instead of escaping to the ABC Notation scope as intended. 648 | - comment: Embedded Markdown 649 | match: '(%%)\s*(beginmd)\b' 650 | captures: 651 | 1: comment.line.percentage.abc 652 | 2: support.function.directive.abc 653 | push: 'scope:text.html.markdown' 654 | with_prototype: 655 | - include: prototype 656 | - match: '(%%)\s*(endmd)' 657 | captures: 658 | 1: comment.line.percentage.abc 659 | 2: support.function.directive.abc 660 | pop: true 661 | ... 662 | -------------------------------------------------------------------------------- /sublime/ABC Notation/Completions/Decorations.sublime-completions: -------------------------------------------------------------------------------- 1 | { 2 | "scope": "source.abc variable.language.decoration.abc", 3 | "completions": [ 4 | { "trigger": "!ac\t", "contents": "!accent!$1" }, 5 | { "trigger": "!ar\t", "contents": "!arpeggio!$1" }, 6 | { "trigger": "!beama\t", "contents": "!beam-accel!$1" }, 7 | { "trigger": "!beamr\t", "contents": "!beam-rall!$1" }, 8 | { "trigger": "!beamb\t", "contents": "!beambr${1:1}!$2" }, 9 | { "trigger": "!beamo\t", "contents": "!beamon!$1" }, 10 | { "trigger": "!cod\t", "contents": "!coda!$1" }, 11 | { "trigger": "!cou\t", "contents": "!courtesy!$1" }, 12 | { "trigger": "!cre\t", "contents": "!crescendo${1:()}!$2" }, 13 | { "trigger": "!DC\t", "contents": "!D.C.!$1" }, 14 | { "trigger": "!DCa\t", "contents": "!D.C.${1:alcoda|alfine}!$2" }, 15 | { "trigger": "!DS\t", "contents": "!D.S.!$2" }, 16 | { "trigger": "!DSa\t", "contents": "!D.S.${1:alcoda|alfine}!$2" }, 17 | { "trigger": "!daca\t", "contents": "!dacapo!$1" }, 18 | { "trigger": "!daco\t", "contents": "!dacoda!$1" }, 19 | { "trigger": "!di\t", "contents": "!diminuendo${1:()}!$2" }, 20 | { "trigger": "!.\t", "contents": "!dot!$1" }, 21 | { "trigger": "!dow\t", "contents": "!downbow!$1" }, 22 | { "trigger": "!ed\t", "contents": "!editorial!$1" }, 23 | { "trigger": "!em\t", "contents": "!emphasis!$1" }, 24 | { "trigger": "!f\t", "contents": "!f${1:fff}!$2" }, 25 | { "trigger": "!fe\t", "contents": "!fermata!$1" }, 26 | { "trigger": "!fi\t", "contents": "!fine!$1" }, 27 | { "trigger": "!g\t", "contents": "!gmark!$1" }, 28 | { "trigger": "!ife\t", "contents": "!invertedfermata!$1" }, 29 | { "trigger": "!it\t", "contents": "!invertedturn!$1" }, 30 | { "trigger": "!itx\t", "contents": "!invertedturnx!$1" }, 31 | { "trigger": "!in\t", "contents": "!invisible!$1" }, 32 | { "trigger": "!lon\t", "contents": "!longphrase!$1" }, 33 | { "trigger": "!low\t", "contents": "!lowermordent!$1" }, 34 | { "trigger": "!ma\t", "contents": "!marcato!$1" }, 35 | { "trigger": "!me\t", "contents": "!mediumphrase!$1" }, 36 | { "trigger": "!mf\t", "contents": "!mf!$1" }, 37 | { "trigger": "!mo\t", "contents": "!mordent!$1" }, 38 | { "trigger": "!mp\t", "contents": "!mp!$1" }, 39 | { "trigger": "!op\t", "contents": "!open!$1" }, 40 | { "trigger": "!p\t", "contents": "!p${1:ppp}!$2" }, 41 | { "trigger": "!pl\t", "contents": "!plus!$1" }, 42 | { "trigger": "!pr\t", "contents": "!pralltriller!$1" }, 43 | { "trigger": "!rbe\t", "contents": "!rbend!$1" }, 44 | { "trigger": "!rbs\t", "contents": "!rbstop!$1" }, 45 | { "trigger": "!ro\t", "contents": "!roll!$1" }, 46 | { "trigger": "!se\t", "contents": "!segno!$1" }, 47 | { "trigger": "!sf\t", "contents": "!sfz!$1" }, 48 | { "trigger": "!sh\t", "contents": "!shortphrase!$1" }, 49 | { "trigger": "!sl\t", "contents": "!slide!$1" }, 50 | { "trigger": "!sn\t", "contents": "!snap!$1" }, 51 | { "trigger": "!st\t", "contents": "!stemless!$1" }, 52 | { "trigger": "!te\t", "contents": "!tenuto!$1" }, 53 | { "trigger": "!th\t", "contents": "!thumb!$1" }, 54 | { "trigger": "!tre\t", "contents": "!trem$1!$2" }, 55 | { "trigger": "!tri\t", "contents": "!trill${1:()}!$2" }, 56 | { "trigger": "!tu\t", "contents": "!turn!$1" }, 57 | { "trigger": "!tx\t", "contents": "!turnx!$1" }, 58 | { "trigger": "!upb\t", "contents": "!upbow!$1" }, 59 | { "trigger": "!upp\t", "contents": "!uppermordent!$1" }, 60 | { "trigger": "!w\t", "contents": "!wedge!$1" }, 61 | { "trigger": "!xs\t", "contents": "!xstem!$1" } 62 | ] 63 | } 64 | -------------------------------------------------------------------------------- /sublime/ABC Notation/PostScript.sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # Copyright (c) 2016 Brian Reilly 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a 6 | # copy of this software and associated documentation files (the "Software"), 7 | # to deal in the Software without restriction, including without limitation 8 | # the rights to use, copy, modify, merge, publish, distribute, sublicense, 9 | # and/or sell copies of the Software, and to permit persons to whom the 10 | # Software is furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20 | # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 21 | # DEALINGS IN THE SOFTWARE. 22 | 23 | name: PostScript 24 | file_extensions: 25 | - ps 26 | scope: source.ps 27 | contexts: 28 | main: 29 | - include: expressions 30 | 31 | expressions: 32 | - include: comments 33 | - include: numbers 34 | - include: operators 35 | - include: dictionaries # include `dictionaries` before `strings` 36 | - include: strings 37 | # - include: brackets # Brackets are broken, and do not highlight correctly. 38 | - include: constants 39 | - include: variables # include `variables` last 40 | 41 | comments: 42 | - match: '%' 43 | scope: punctuation.definition.comment.ps 44 | push: 45 | - meta_scope: comment.line.ps 46 | - match: \n 47 | pop: true 48 | 49 | numbers: 50 | # radix numbers, signed integers, & real numbers 51 | - match: |- 52 | (?x) 53 | (((3[0-6]|[1-2][0-9]|[2-9])\#[[:alnum:]]+)| 54 | ((((\+|-)?\d+\.?\d*)|((\+|-)?\.\d+))((e|E)(\+|-)?\d+)?))(?=[()<>\[\]{}/%\s]+) 55 | scope: constant.numeric.ps 56 | 57 | string_escaped_char: 58 | - match: '\\([0-7]{1,3}|[nrtbf(\\)])' 59 | scope: constant.character.escape.c 60 | 61 | inside_string_literal: 62 | - match: \( 63 | push: 64 | - include: inside_string_literal 65 | - include: string_escaped_char 66 | - match: \) 67 | pop: true 68 | 69 | strings: 70 | - match: \( 71 | scope: punctuation.definition.string.begin.ps 72 | push: 73 | - meta_scope: string.literal.ps 74 | - match: \) 75 | scope: punctuation.definition.string.end.ps 76 | pop: true 77 | - include: inside_string_literal 78 | - include: string_escaped_char 79 | - match: '<~' 80 | scope: punctuation.definition.string.begin.ps 81 | push: 82 | - meta_scope: string.ascii.ps 83 | - match: '~>' 84 | scope: punctuation.definition.string.end.ps 85 | pop: true 86 | - match: '[^[:ascii:]]' 87 | scope: invalid.illegal.unexpected-character.ps 88 | - match: '<' 89 | scope: punctuation.definition.string.begin.ps 90 | push: 91 | - meta_scope: string.hexadecimal.ps 92 | - match: '>' 93 | scope: punctuation.definition.string.end.ps 94 | pop: true 95 | - match: '[^\h ]' 96 | scope: invalid.illegal.unexpected-character.ps 97 | 98 | variables: 99 | - match: //? 100 | scope: punctuation.definition.variable.ps 101 | push: 102 | - meta_scope: variable.other.readwrite.ps 103 | - match: '(?=\s)' 104 | pop: true 105 | - match: '[^()<>\[\]{}/%\s]+' 106 | scope: variable.other.readwrite.ps 107 | 108 | brackets: 109 | - match: \[ 110 | scope: punctuation.definition.brackets.begin.ps 111 | push: 112 | - meta_scope: meta.brackets.ps 113 | - match: \] 114 | scope: punctuation.definition.brackets.end.ps 115 | pop: true 116 | - include: expressions 117 | - match: \{ 118 | scope: punctuation.definition.brackets.begin.ps 119 | push: 120 | - meta_scope: meta.brackets.ps 121 | - match: \} 122 | scope: punctuation.definition.brackets.end.ps 123 | pop: true 124 | - include: expressions 125 | 126 | dictionaries: 127 | - match: '<<' 128 | scope: punctuation.definition.dictionary.begin.ps 129 | push: 130 | - meta_scope: meta.dictionary.ps 131 | - match: '>>' 132 | scope: punctuation.definition.dictionary.end.ps 133 | pop: true 134 | - include: expressions 135 | 136 | operators: 137 | - match: '\b(add|div|idiv|mod|mul|sub|abs|neg|ceiling|floor|round|truncate|sqrt|atan|cos|sin|exp|ln|log|rand|srand|rrand|and|not|or|xor|bitshift)\b' 138 | scope: keyword.operator.arithmetic.ps 139 | - match: '\b(pop|exch|dup|index|roll|clear|count|mark|cleartomark|counttomark)\b' 140 | scope: keyword.operator.stack.ps 141 | - match: '\b(array|astore|aload|packedarray|setpacking|currentpacking)\b' 142 | scope: keyword.operator.array.ps 143 | - match: '\b(dict|maxlength|begin|end|def|load|store|undef|known|where|currentdict|countdictstack|dictstack|cleardictstack)\b' 144 | scope: keyword.operator.dictionary.ps 145 | - match: '\b(string|anchorsearch|search)\b' 146 | scope: keyword.operator.string.ps 147 | - match: '\b(eq|ne|ge|gt|le|lt)\b' 148 | scope: keyword.operator.comparison.ps 149 | - match: '\b(exec|if|ifelse|forall|for|repeat|loop|exit|stop|stopped|countexecstack|execstack|quit|start)\b' 150 | scope: keyword.operator.control.ps 151 | - match: '\b(type|cvlit|cvx|xcheck|executeonly|noaccess|readonly|rcheck|wcheck|cvi|cvn|cvr|cvrs|cvs)\b' 152 | scope: keyword.operator.type.ps 153 | - match: '(\b(file|filter|closefile|read|write|readhexstring|writehexstring|readstring|writestring|readline|bytesavailable|flush|flushfile|resetfile|status|run|currentfile|deletefile|renamefile|filenameforall|setfileposition|fileposition|print|stack|pstack|printobject|writeobject|setobjectformat|currentobjectformat)\b|\=\=|\=)' 154 | scope: keyword.operator.file.ps 155 | - match: '\b(defineresource|undefineresource|findresource|findcolorrendering|resourcestatus|resourceforall)\b' 156 | scope: keyword.operator.resource.ps 157 | - match: '\b(save|restore|setglobal|currentglobal|gcheck|startjob|defineuserobject|execuserobject|undefineuserobject|UserObjects)\b' 158 | scope: keyword.operator.virtual-memory.ps 159 | - match: '\b(gsave|grestore|clipsave|cliprestore|grestoreall|initgraphics|gstate|setgstate|currentgstate|setlinewidth|currentlinewidth|setlinecap|currentlinecap|setlinejoin|currentlinejoin|setmiterlimit|currentmiterlimit|setstrokeadjust|currentstrokeadjust|setdash|currentdash|setcolorspace|currentcolorspace|setcolor|currentcolor|setgray|currentgray|sethsbcolor|currenthsbcolor|setrgbcolor|currentrgbcolor|setcmykcolor|currentcmykcolor|sethalftone|currenthalftone|setscreen|currentscreen|setcolorscreen|currentcolorscreen|settransfer|setcolortransfer|currentcolortransfer|currenttransfer|setblackgeneration|currentblackgeneration|setundercolorremoval|currentundercolorremoval|setcolorrendering|setflat|currentcolorrendering|setoverprint|currentflat|currentoverprint|setsmoothness|currentsmoothness)\b' 160 | scope: keyword.operator.graphic-state.ps 161 | - match: '\b(concat|concatmatrix|currentmatrix|defaultmatrix|dtransform|identmatrix|idtransform|initmatrix|invertmatrix|itransform|matrix|rotate|scale|setmatrix|transform|translate)\b' 162 | scope: keyword.operator.matrix.ps 163 | - match: '\b(arc|arcn|arct|arcto|charpath|clip|clippath|closepath|currentpoint|curveto|eoclip|flattenpath|initclip|lineto|moveto|newpath|pathbbox|pathforall|rcurveto|rectclip|reversepath|rlineto|rmoveto|setbbox|strokepath|uappend|ucache|upath|ustrokepath)\b' 164 | scope: keyword.operator.path.ps 165 | - match: '\b(colorimage|eofill|erasepage|fill|image|imagemask|rectfill|rectstroke|shfill|stroke|ueofill|ufill|ustroke)\b' 166 | scope: keyword.operator.paint.ps 167 | - match: '\b(infill|ineofill|inufill|inueofill|instroke|inustroke)\b' 168 | scope: keyword.operator.insideness.ps 169 | - match: '\b(makepattern|setpattern|execform)\b' 170 | scope: keyword.operator.pattern.ps 171 | - match: '\b(showpage|copypage|setpagedevice|currentpagedevice|nulldevice)\b' 172 | scope: keyword.operator.device.ps 173 | - match: '\b(ashow|awidthshow|composefont|cshow|currentfont|definefont|findencoding|findfont|glyphshow|ISOLatin1Encoding|kshow|makefont|rootfont|scalefont|selectfont|setcachedevice|setcachedevice2|setcharwidth|setfont|show|StandardEncoding|stringwidth|undefinefont|widthshow|xshow|xyshow|yshow)\b' 174 | scope: keyword.operator.font.ps 175 | - match: '\b(cachestatus|currentcacheparams|currentdevparams|currentsystemparams|currentuserparams|setcachelimit|setcacheparams|setdevparams|setsystemparams|setucacheparams|setuserparams|setvmthreshold|ucachestatus|vmreclaim|vmstatus|)\b' 176 | scope: keyword.operator.interpreter.ps 177 | - match: '\b(getinterval|putinterval|length|get|put|copy|bind|echo|version|realtime|usertime|languagelevel|product|revision|serialnumber|executive|prompt|token)\b' 178 | scope: keyword.operator.ps 179 | 180 | constants: 181 | - match: '\b(true|false|null)\b' 182 | scope: constant.language.ps 183 | - match: '\b(\$error|errordict|FontDirectory|globaldict|GlobalFontDirectory|statusdict|systemdict|userdict)\b' 184 | scope: constant.other.dictionary.ps 185 | -------------------------------------------------------------------------------- /sublime/ABC Notation/Snippets/Embedded Tune.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | ${1:} 7 | 8 | 9 | 10 | 11 |
12 | %abc-2.2
13 | %%measurenb 1
14 | %%linebreak none
15 | 
16 | X:${2:1}
17 | T:${3:Title}
18 | M:${4:Meter 4/4}
19 | L:1/8
20 | K:${5:Key}
21 | $6
22 |     
23 | 24 | 25 | ]]>
26 | source.html 27 |
28 | -------------------------------------------------------------------------------- /sublime/ABC Notation/Snippets/Tune.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 10 | X: 11 | source.abc 12 | 13 | -------------------------------------------------------------------------------- /sublime/ABC Notation/Support/ABC Notation/Comments.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | name 5 | Comments 6 | scope 7 | source.abc 8 | settings 9 | 10 | shellVariables 11 | 12 | 13 | name 14 | TM_COMMENT_START 15 | value 16 | % 17 | 18 | 19 | name 20 | TM_COMMENT_DISABLE_INDENT 21 | value 22 | yes 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /sublime/ABC Notation/Support/ABC Notation/Miscellaneous.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | name 5 | Miscellaneous 6 | scope 7 | source.abc 8 | settings 9 | 10 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /sublime/ABC Notation/Support/ABC Notation/Symbol Index.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | name 5 | Symbol Index 6 | scope 7 | meta.field.index.abc 8 | settings 9 | 10 | showInIndexedSymbolList 11 | 1 12 | symbolIndexTransformation 13 | 14 | s/^X:\s*(\d+)/Tune #$1/ 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /sublime/ABC Notation/Support/ABC Notation/Symbol List.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | name 5 | Symbol List 6 | scope 7 | meta.field.index.abc, meta.field.title.abc, meta.inline-field.title.abc, meta.field.part.abc, meta.inline-field.part.abc, meta.field.voice.abc, meta.inline-field.voice.abc 8 | settings 9 | 10 | showInSymbolList 11 | 1 12 | symbolTransformation 13 | 14 | s/^X:\s*(\d+)/Tune #$1/; 15 | s/^T:\s*([^%\n\r]+)(?:\s*%.*)?/Title: $1/; 16 | s/\[T:\s*([^%\r\n\]]+)\]/Title: $1/; 17 | s/^P:\s*([^%\s\n\r]+)\b(?:\s+[^%\r\n]*)?(?:\s*%.*)?/Part: $1/; 18 | s/\[P:\s*([^%\s\r\n\]]+)\b(?:\s+[^%\r\n\]]*)?\]/Part: $1/; 19 | s/^V:\s*([^%\s\n\r]+)\b(?:\s+[^%\r\n]*)?(?:\s*%.*)?/Voice: $1/; 20 | s/\[V:\s*([^%\s\r\n\]]+)\b(?:\s+[^%\r\n\]]*)?\]/Voice: $1/; 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /sublime/ABC Notation/Support/PostScript/Comments.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 23 | 24 | 25 | name 26 | Comments 27 | scope 28 | source.ps 29 | settings 30 | 31 | shellVariables 32 | 33 | 34 | name 35 | TM_COMMENT_START 36 | value 37 | % 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /sublime/ABC Notation/Support/PostScript/Folding.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | name 6 | Folding 7 | scope 8 | source.postscript, source.ps 9 | uuid 10 | F1931D2C-5608-46FD-8748-EAE1F79506C3 11 | settings 12 | 13 | foldingStartMarker 14 | /\*\*|\{\s*$ 15 | foldingStopMarker 16 | \*\*/|^\s*\} 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /sublime/ABC Notation/syntax_test_abc.abc: -------------------------------------------------------------------------------- 1 | % SYNTAX TEST "Packages/ABC Notation/ABC Notation.sublime-syntax" 2 | %abc-2.1 3 | %<- comment.line.namespace.abc 4 | %^^^^^^^ keyword.other.special-method.namespace.abc 5 | %%pagewidth 21cm 6 | %<- meta.directive.abc comment.line.percentage.directive.abc 7 | % ^^^^^^^^^ keyword.operator.word.directive.abc 8 | % ^^^^ constant.numeric.float.length-unit.abc 9 | % ^^^^^^^^^^ meta.directive.abc variable.parameter.directive.abc 10 | %%pageheight 29.7cm 11 | %<- meta.directive.abc comment.line.percentage.directive.abc 12 | % ^^^^^^^^^^ keyword.operator.word.directive.abc 13 | % ^^^^^^ constant.numeric.float.length-unit.abc 14 | % ^^^^^^^^^^^ meta.directive.abc variable.parameter.directive.abc 15 | %%topspace 0.5cm 16 | %<- meta.directive.abc comment.line.percentage.directive.abc 17 | % ^^^^^^^^ keyword.operator.word.directive.abc 18 | % ^^^^^ constant.numeric.float.length-unit.abc 19 | % ^^^^^^^^^^^^ meta.directive.abc variable.parameter.directive.abc 20 | %%topmargin 1cm 21 | %<- meta.directive.abc comment.line.percentage.directive.abc 22 | % ^^^^^^^^^ keyword.operator.word.directive.abc 23 | % ^^^ constant.numeric.float.length-unit.abc 24 | % ^^^^^^^^^ meta.directive.abc variable.parameter.directive.abc 25 | %%botmargin 0cm 26 | %<- meta.directive.abc comment.line.percentage.directive.abc 27 | % ^^^^^^^^^ keyword.operator.word.directive.abc 28 | % ^^^ constant.numeric.float.length-unit.abc 29 | % ^^^^^^^^^ meta.directive.abc variable.parameter.directive.abc 30 | %%leftmargin 1cm 31 | %<- meta.directive.abc comment.line.percentage.directive.abc 32 | % ^^^^^^^^^^ keyword.operator.word.directive.abc 33 | % ^^^ constant.numeric.float.length-unit.abc 34 | % ^^^^^^^^ meta.directive.abc variable.parameter.directive.abc 35 | %%rightmargin 1cm 36 | %<- meta.directive.abc comment.line.percentage.directive.abc 37 | % ^^^^^^^^^^^ keyword.operator.word.directive.abc 38 | % ^^^ constant.numeric.float.length-unit.abc 39 | % ^^^^^^^ meta.directive.abc variable.parameter.directive.abc 40 | %%titlespace 0cm 41 | %<- meta.directive.abc comment.line.percentage.directive.abc 42 | % ^^^^^^^^^^ keyword.operator.word.directive.abc 43 | % ^^^ constant.numeric.float.length-unit.abc 44 | % ^^^^^^^^ meta.directive.abc variable.parameter.directive.abc 45 | %%titlefont Times-Bold 32 46 | %<- meta.directive.abc comment.line.percentage.directive.abc 47 | % ^^^^^^^^^ keyword.operator.word.directive.abc 48 | % ^^ constant.numeric.float.length-unit.abc 49 | % ^^^^^^^^^^^^^ meta.directive.abc variable.parameter.directive.abc 50 | %%subtitlefont Times-Bold 24 51 | %<- meta.directive.abc comment.line.percentage.directive.abc 52 | % ^^^^^^^^^^^^ keyword.operator.word.directive.abc 53 | % ^^ constant.numeric.float.length-unit.abc 54 | % ^^^^^^^^^^^^^^^^ meta.directive.abc variable.parameter.directive.abc 55 | %%composerfont Times 16 56 | %<- meta.directive.abc comment.line.percentage.directive.abc 57 | % ^^^^^^^^^^^^ keyword.operator.word.directive.abc 58 | % ^^ constant.numeric.float.length-unit.abc 59 | % ^^^^^^^^^^^ meta.directive.abc variable.parameter.directive.abc 60 | %%vocalfont Times-Roman 14 61 | %<- meta.directive.abc comment.line.percentage.directive.abc 62 | % ^^^^^^^^^ keyword.operator.word.directive.abc 63 | % ^^ constant.numeric.float.length-unit.abc 64 | % ^^^^^^^^^^^^^^^^^^^^ meta.directive.abc variable.parameter.directive.abc 65 | %%staffsep 60pt 66 | %<- meta.directive.abc comment.line.percentage.directive.abc 67 | % ^^^^^^^^ keyword.operator.word.directive.abc 68 | % ^^^^ constant.numeric.float.length-unit.abc 69 | % ^^^^^^^^^^^ meta.directive.abc variable.parameter.directive.abc 70 | %%sysstaffsep 20pt 71 | %<- meta.directive.abc comment.line.percentage.directive.abc 72 | % ^^^^^^^^^^^ keyword.operator.word.directive.abc 73 | % ^^^^ constant.numeric.float.length-unit.abc 74 | % ^^^^^^^^ meta.directive.abc variable.parameter.directive.abc 75 | %%musicspace 1cm 76 | %<- meta.directive.abc comment.line.percentage.directive.abc 77 | % ^^^^^^^^^^ keyword.operator.word.directive.abc 78 | % ^^^ constant.numeric.float.length-unit.abc 79 | % ^^^^^^^^ meta.directive.abc variable.parameter.directive.abc 80 | %%vocalspace 5pt 81 | %<- meta.directive.abc comment.line.percentage.directive.abc 82 | % ^^^^^^^^^^ keyword.operator.word.directive.abc 83 | % ^^^ constant.numeric.float.length-unit.abc 84 | % ^^^^^^^^ meta.directive.abc variable.parameter.directive.abc 85 | %%measurenb 0 86 | %<- meta.directive.abc comment.line.percentage.directive.abc 87 | % ^^^^^^^^^ keyword.operator.word.directive.abc 88 | % ^ constant.numeric.float.length-unit.abc 89 | % ^^^^^^^ meta.directive.abc variable.parameter.directive.abc 90 | %%barsperstaff 5 91 | %<- meta.directive.abc comment.line.percentage.directive.abc 92 | % ^^^^^^^^^^^^ keyword.operator.word.directive.abc 93 | % ^ constant.numeric.float.length-unit.abc 94 | % ^^^^ meta.directive.abc variable.parameter.directive.abc 95 | %%scale 0.7 96 | %<- meta.directive.abc comment.line.percentage.directive.abc 97 | % ^^^^^ keyword.operator.word.directive.abc 98 | % ^^^ constant.numeric.float.length-unit.abc 99 | % ^^^^^^^^^^^^^ meta.directive.abc variable.parameter.directive.abc 100 | X: 1 101 | %^ entity.name.tag.index.abc 102 | % ^ variable.parameter.index.abc 103 | T: Canzonetta a tre voci 104 | %^ meta.field.title.abc entity.name.tag.title.abc 105 | % ^^^^^^^^^^^^^^^^^^^^^ meta.field.title.abc string.unquoted.title.abc 106 | C: Claudio Monteverdi (1567-1643) 107 | %^ meta.field.abc support.function.field.abc 108 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.field.abc string.unquoted.field.abc 109 | M: C 110 | %^ meta.field.abc support.function.field.abc 111 | % ^^ meta.field.abc string.unquoted.field.abc 112 | L: 1/4 113 | %^ meta.field.abc support.function.field.abc 114 | % ^^^^ meta.field.abc string.unquoted.field.abc 115 | Q: "Andante mosso" 1/4 = 110 116 | %^ meta.field.abc support.function.field.abc 117 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.field.abc string.unquoted.field.abc 118 | %%score [1 2 3] 119 | %<- meta.directive.abc comment.line.percentage.directive.abc 120 | % ^^^^^ keyword.operator.word.directive.abc 121 | % ^^^^^^^^ meta.directive.abc variable.parameter.directive.abc 122 | V: 1 clef=treble name="Soprano"sname="A" 123 | %<- meta.field.voice.abc 124 | %^ entity.name.tag.voice.abc 125 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ variable.parameter.voice.abc 126 | V: 2 clef=treble name="Alto" sname="T" 127 | %<- meta.field.voice.abc 128 | %^ entity.name.tag.voice.abc 129 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ variable.parameter.voice.abc 130 | V: 3 clef=bass name="Tenor" sname="B" octave=-2 131 | %<- meta.field.voice.abc 132 | %^ meta.field.voice.abc entity.name.tag.voice.abc 133 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ variable.parameter.voice.abc 134 | %%MIDI program 1 75 % recorder 135 | %<- meta.directive.abc 136 | %^comment.line.percentage.directive.abc punctuation.definition.comment.abc 137 | % ^^^^ keyword.operator.word.directive.abc 138 | % ^ constant.numeric.float.length-unit.abc 139 | % ^^ constant.numeric.float.length-unit.abc 140 | % ^^^^^^^^^^ comment.line.percentage.abc 141 | % ^^^^^^^^^^^^^^^^^^^^^^^^ variable.parameter.directive.abc 142 | %%MIDI program 2 75 143 | %<- meta.directive.abc 144 | %^comment.line.percentage.directive.abc punctuation.definition.comment.abc 145 | % ^^^^ keyword.operator.word.directive.abc 146 | % ^ constant.numeric.float.length-unit.abc 147 | % ^^ constant.numeric.float.length-unit.abc 148 | % ^^^^^^^^^^^^^ variable.parameter.directive.abc 149 | %%MIDI program 3 75 150 | %<- meta.directive.abc 151 | %^comment.line.percentage.directive.abc punctuation.definition.comment.abc 152 | % ^^^^ keyword.operator.word.directive.abc 153 | % ^ constant.numeric.float.length-unit.abc 154 | % ^^ constant.numeric.float.length-unit.abc 155 | % ^^^^^^^^^^^^^ variable.parameter.directive.abc 156 | K: Eb 157 | %<- meta.field.key.head.abc 158 | %^ entity.name.tag.key.abc 159 | % ^^ variable.parameter.key.abc 160 | % 1 - 4 161 | %<- comment.line.percentage.abc 162 | [V: 1] |:z4 |z4 |f2ec |_ddcc | 163 | % ^ constant.character.note.abc 164 | % ^^ constant.character.note.abc 165 | % ^^^^ constant.character.note.abc 166 | % ^ storage.type.note-length.abc 167 | % ^ constant.language.accidental.abc 168 | % ^^ meta.abc-rest.abc 169 | % ^^ meta.abc-rest.abc 170 | % ^ meta.abc-rest.abc storage.type.abc-rest.abc 171 | % ^ meta.abc-rest.abc storage.type.abc-rest.abc 172 | % ^ meta.abc-rest.abc storage.type.rest-length.abc 173 | % ^ meta.abc-rest.abc storage.type.rest-length.abc 174 | %^^ meta.inline-field.voice.abc entity.name.tag.inline-field.voice.abc 175 | % ^ meta.inline-field.voice.abc variable.parameter.voice.abc 176 | % ^ meta.inline-field.voice.abc entity.name.tag.inline-field.voice.abc 177 | % ^^ meta.barline.abc punctuation.separator.barline.abc 178 | % ^ meta.barline.abc punctuation.separator.barline.abc 179 | % ^ meta.barline.abc punctuation.separator.barline.abc 180 | % ^ meta.barline.abc punctuation.separator.barline.abc 181 | % ^ meta.barline.abc punctuation.separator.barline.abc 182 | w: Son que-sti~i cre-spi cri-ni~e 183 | %<- meta.field.abc 184 | %^ support.function.field.abc 185 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.field.abc string.unquoted.field.abc 186 | w: Que-sti son gli~oc-chi che mi- 187 | %<- meta.field.abc 188 | %^ support.function.field.abc 189 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.field.abc string.unquoted.field.abc 190 | [V: 2] |:c2BG|AAGc|(F/G/A/B/)c=A|B2AA | 191 | w: Son que-sti~i cre-spi cri-ni~e que - - - - sto~il vi-so e 192 | %<- meta.field.abc 193 | %^ support.function.field.abc 194 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.field.abc string.unquoted.field.abc 195 | w: Que-sti son~gli oc-chi che mi-ran - - - - do fi-so mi- 196 | %<- meta.field.abc 197 | %^ support.function.field.abc 198 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.field.abc string.unquoted.field.abc 199 | [V: 3] |:z4 |f2ec|_ddcf |(B/c/_d/e/)ff| 200 | w: Son que-sti~i cre-spi cri-ni~e que - - - - sto~il 201 | %<- meta.field.abc 202 | %^ support.function.field.abc 203 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.field.abc string.unquoted.field.abc 204 | w: Que-sti son~gli oc-chi che mi-ran - - - - do 205 | %<- meta.field.abc 206 | %^ support.function.field.abc 207 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.field.abc string.unquoted.field.abc 208 | % 5 - 9 209 | %<- meta.tune.abc comment.line.percentage.abc 210 | [V: 1] cAB2 |cAAA |c3B|G2!fermata!Gz ::e4| 211 | w: que-sto~il vi-so ond' io ri-man-go~uc-ci-so. Deh, 212 | %<- meta.field.abc 213 | %^ support.function.field.abc 214 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.field.abc string.unquoted.field.abc 215 | w: ran-do fi-so, tut-to re-stai con-qui-so. 216 | %<- meta.field.abc 217 | %^ support.function.field.abc 218 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.field.abc string.unquoted.field.abc 219 | [V: 2] AAG2 |AFFF |A3F|=E2!fermata!Ez::c4| 220 | w: que-sto~il vi-so ond' io ri-man-go~uc-ci-so. Deh, 221 | %<- meta.field.abc 222 | %^ support.function.field.abc 223 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.field.abc string.unquoted.field.abc 224 | w: ran-do fi-so tut-to re-stai con-qui-so. 225 | %<- meta.field.abc 226 | %^ support.function.field.abc 227 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.field.abc string.unquoted.field.abc 228 | [V: 3] (ag/f/e2)|A_ddd|A3B|c2!fermata!cz ::A4| 229 | w: vi - - - so ond' io ti-man-go~uc-ci-so. Deh, 230 | %<- meta.field.abc 231 | %^ support.function.field.abc 232 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.field.abc string.unquoted.field.abc 233 | w: fi - - - so tut-to re-stai con-qui-so. 234 | %<- meta.field.abc 235 | %^ support.function.field.abc 236 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.field.abc string.unquoted.field.abc 237 | % 10 - 15 238 | %<- meta.tune.abc comment.line.percentage.abc 239 | [V: 1] f_dec |B2c2|zAGF |\ 240 | %^^ meta.tune.abc meta.inline-field.voice.abc entity.name.tag.inline-field.voice.abc 241 | % ^ meta.tune.abc meta.inline-field.voice.abc variable.parameter.voice.abc 242 | % ^ meta.tune.abc meta.inline-field.voice.abc entity.name.tag.inline-field.voice.abc 243 | % ^ meta.tune.abc constant.character.note.abc 244 | % ^ meta.tune.abc constant.language.accidental.abc 245 | % ^^^ meta.tune.abc constant.character.note.abc 246 | % ^ meta.tune.abc meta.barline.abc punctuation.separator.barline.abc 247 | % ^ meta.tune.abc constant.character.note.abc 248 | % ^ meta.tune.abc storage.type.note-length.abc 249 | % ^ meta.tune.abc constant.character.note.abc 250 | % ^ meta.tune.abc storage.type.note-length.abc 251 | % ^ meta.tune.abc meta.barline.abc punctuation.separator.barline.abc 252 | % ^ meta.tune.abc meta.abc-rest.abc storage.type.abc-rest.abc 253 | % ^^^ meta.tune.abc constant.character.note.abc 254 | % ^ meta.tune.abc meta.barline.abc punctuation.separator.barline.abc 255 | % ^ meta.tune.abc support.function.line-continue.abc 256 | w: dim-me-lo ben mi-o, che que-sto\ 257 | %<- meta.field.abc 258 | %^ support.function.field.abc 259 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.field.abc string.unquoted.field.abc 260 | =EFG2 |1F2z2:|2F8|] % more notes 261 | %^^^ source.abc meta.tune.abc constant.character.note.abc 262 | % ^ source.abc meta.tune.abc storage.type.note-length.abc 263 | % ^ source.abc meta.tune.abc meta.barline.abc punctuation.separator.barline.abc 264 | % ^ source.abc meta.tune.abc meta.barline.abc punctuation.separator.barline.repeat-length.abc 265 | % ^^ source.abc meta.tune.abc meta.barline.abc 266 | % ^ source.abc meta.tune.abc constant.character.note.abc 267 | % ^ source.abc meta.tune.abc storage.type.note-length.abc 268 | % ^ source.abc meta.tune.abc meta.abc-rest.abc storage.type.abc-rest.abc 269 | % ^ source.abc meta.tune.abc meta.abc-rest.abc storage.type.rest-length.abc 270 | % ^^ source.abc meta.tune.abc meta.barline.abc punctuation.separator.barline.abc 271 | % ^ source.abc meta.tune.abc meta.barline.abc punctuation.separator.barline.repeat-length.abc 272 | % ^^^ source.abc meta.tune.abc meta.barline.abc 273 | % ^ source.abc meta.tune.abc constant.character.note.abc 274 | % ^ source.abc meta.tune.abc storage.type.note-length.abc 275 | % ^^ source.abc meta.tune.abc meta.barline.abc punctuation.separator.barline.abc 276 | % ^ source.abc meta.tune.abc comment.line.percentage.abc punctuation.definition.comment.abc 277 | % ^^^^^^^^^^^^ source.abc meta.tune.abc comment.line.percentage.abc 278 | w: sol de-si-o_. % more lyrics 279 | %<- meta.field.abc 280 | %^ support.function.field.abc 281 | % ^^^^^^^^^^^^^^^ meta.field.abc string.unquoted.field.abc 282 | % ^ meta.tune.abc meta.field.abc comment.line.percentage.abc punctuation.definition.comment.abc 283 | % ^^^^^^^^^^^^^ meta.tune.abc meta.field.abc comment.line.percentage.abc 284 | [V: 2] ABGA |G2AA|GF=EF |(GF3/2=E//D//E)|1F2z2:|2F8|] 285 | %^^ meta.inline-field.voice.abc entity.name.tag.inline-field.voice.abc 286 | % ^ 287 | % ^ 288 | %^^^^^ meta.inline-field.voice.abc 289 | % ^^^^ constant.character.note.abc 290 | % ^ punctuation.separator.barline.abc 291 | % ^ storage.type.note-length.abc 292 | % ^ constant.character.note.abc 293 | % ^^ constant.character.note.abc 294 | % ^ punctuation.separator.barline.abc 295 | % ^^ constant.character.note.abc 296 | % ^ constant.language.accidental.abc 297 | % ^^ constant.character.note.abc 298 | % ^ punctuation.separator.barline.abc 299 | % ^ support.function.slur.abc 300 | % ^^ constant.character.note.abc 301 | % ^^^ storage.type.note-length.abc 302 | % ^ constant.language.accidental.abc 303 | % ^ constant.character.note.abc 304 | % ^^ storage.type.note-length.abc 305 | % ^ constant.character.note.abc 306 | % ^^ storage.type.note-length.abc 307 | % ^ constant.character.note.abc 308 | % ^ support.function.slur.abc 309 | % ^ punctuation.separator.barline.abc 310 | % ^ punctuation.separator.barline.repeat-length.abc 311 | % ^^ meta.barline.abc 312 | % ^ constant.character.note.abc 313 | % ^ storage.type.note-length.abc 314 | % ^ storage.type.abc-rest.abc 315 | % ^ storage.type.rest-length.abc 316 | % ^^ meta.abc-rest.abc 317 | % ^^ punctuation.separator.barline.abc 318 | % ^ punctuation.separator.barline.repeat-length.abc 319 | % ^^^ meta.barline.abc 320 | % ^ constant.character.note.abc 321 | % ^ storage.type.note-length.abc 322 | % ^^ punctuation.separator.barline.abc 323 | w: dim-me-lo ben mi-o, che que-sto sol de-si - - - - o_. 324 | %<- meta.field.abc 325 | %^ support.function.field.abc 326 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.field.abc string.unquoted.field.abc 327 | [V: 3] _dBc>d|e2AF|=EFc_d|c4 |1F2z2:|2F8|] 328 | %^^ meta.inline-field.voice.abc entity.name.tag.inline-field.voice.abc 329 | % ^ 330 | % ^ 331 | %^^^^^ meta.inline-field.voice.abc 332 | % ^ constant.language.accidental.abc 333 | % ^^^ constant.character.note.abc 334 | % ^ storage.type.note-length.abc 335 | % ^ constant.character.note.abc 336 | % ^ punctuation.separator.barline.abc 337 | % ^ constant.character.note.abc 338 | % ^ storage.type.note-length.abc 339 | % ^^ constant.character.note.abc 340 | % ^ punctuation.separator.barline.abc 341 | % ^ constant.language.accidental.abc 342 | % ^^^ constant.character.note.abc 343 | % ^ constant.language.accidental.abc 344 | % ^ constant.character.note.abc 345 | % ^ punctuation.separator.barline.abc 346 | % ^ constant.character.note.abc 347 | % ^ storage.type.note-length.abc 348 | % ^ punctuation.separator.barline.abc 349 | % ^ punctuation.separator.barline.repeat-length.abc 350 | % ^^ meta.barline.abc 351 | % ^ constant.character.note.abc 352 | % ^ storage.type.note-length.abc 353 | % ^ storage.type.abc-rest.abc 354 | % ^ storage.type.rest-length.abc 355 | % ^^ meta.abc-rest.abc 356 | % ^^ punctuation.separator.barline.abc 357 | % ^ punctuation.separator.barline.repeat-length.abc 358 | % ^^^ meta.barline.abc 359 | % ^ constant.character.note.abc 360 | % ^ storage.type.note-length.abc 361 | % ^^ punctuation.separator.barline.abc 362 | w: dim-me-lo ben mi-o, che que-sto sol de-si-o_. 363 | %<- meta.field.abc 364 | %^ support.function.field.abc 365 | % ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.field.abc string.unquoted.field.abc 366 | 367 | X:2 368 | %<- meta.tune.abc meta.field.index.abc 369 | T:A. A. Cameron's 370 | %<- meta.tune.abc meta.field.title.abc 371 | M:4/4 372 | %<- meta.tune.abc meta.field.abc 373 | O:Scottish 374 | %<- meta.tune.abc meta.field.abc 375 | R:Strathspey 376 | %<- meta.tune.abc meta.field.abc 377 | K:D 378 | %<- meta.field.key.head.abc 379 | eG d>B|eg (3fed|eG d>B|BB d>g (3fed:| 380 | %<- meta.tune.abc 381 | % ^^ meta.tune.abc support.type.tuplet.abc 382 | % ^^ meta.tune.abc support.type.tuplet.abc 383 | Bf g>e a>f|Bf g>e (3fed|Bf g>e a>f|dB d>g (3fed:| 384 | %<- meta.tune.abc 385 | % ^^ meta.tune.abc support.type.tuplet.abc 386 | % ^^ meta.tune.abc support.type.tuplet.abc 387 | 388 | X:3 389 | %<- meta.field.index.abc 390 | T:Atholl Brose 391 | %<- meta.field.title.abc 392 | M:4/4 393 | %<- meta.field.abc 394 | O:Scottish 395 | %<- meta.field.abc 396 | R:Strathspey 397 | %<- meta.field.abc 398 | % in this example, which reproduces Highland Bagpipe gracing, 399 | %<- comment.line.percentage.abc 400 | % the large number of grace notes mean that it is more convenient to be specific about 401 | %<- comment.line.percentage.abc 402 | % score line-breaks (using the $ symbol), rather than using code line breaks to indicate them 403 | %<- comment.line.percentage.abc 404 | I:linebreak $ 405 | %<- meta.instruction.abc 406 | %^ meta.instruction.abc entity.name.tag.instruction.abc 407 | % ^^^^^^^^^ meta.instruction.abc keyword.operator.word.directive.abc 408 | % ^^ meta.instruction.abc variable.parameter.directive.abc 409 | K:D 410 | %<- meta.field.key.head.abc 411 | {gcd}c<{e}A {gAGAG}A2 {gef}e>A {gAGAG}Ad| 412 | %^^^^ meta.grace.abc 413 | % ^ support.type.grace.abc 414 | % ^ support.type.grace.abc 415 | % ^ support.type.grace.abc 416 | % ^^^ meta.grace.abc 417 | % ^ support.type.grace.abc 418 | % ^ support.type.grace.abc 419 | % ^^^^^^^ meta.grace.abc 420 | % ^ support.type.grace.abc 421 | % ^ support.type.grace.abc 422 | % ^^^^^ meta.grace.abc 423 | % ^ support.type.grace.abc 424 | % ^ support.type.grace.abc 425 | % ^^^^^^^ meta.grace.abc 426 | {gcd}c<{e}A {gAGAG}A>e {ag}a>f {gef}e>d| 427 | %^^^^ meta.grace.abc 428 | % ^^^ meta.grace.abc 429 | % ^^^^^^^ meta.grace.abc 430 | % ^^^^ meta.grace.abc 431 | % ^^^^^ meta.grace.abc 432 | {gcd}c<{e}A {gAGAG}A2 {gef}e>A {gAGAG}Ad| 433 | %^^^^ meta.grace.abc 434 | % ^^^ meta.grace.abc 435 | % ^^^^^^^ meta.grace.abc 436 | % ^^^^^ meta.grace.abc 437 | % ^^^^^^^ meta.grace.abc 438 | {g}c/d/e {g}G>{d}B {gf}gG {dc}d>B:|$ 439 | %^^ meta.grace.abc 440 | % ^^^ meta.grace.abc 441 | % ^^^ meta.grace.abc 442 | % ^^^^ meta.grace.abc 443 | % ^^^^ meta.grace.abc 444 | % ^ support.type.line-break.abc 445 | {g}ce {ag}a>e {gf}g>e| 446 | %^^ meta.grace.abc 447 | % ^^^^ meta.grace.abc 448 | % ^^^^ meta.grace.abc 449 | % ^^^^ meta.grace.abc 450 | {g}ce {ag}a2 {GdG}a>d| 451 | %^^ meta.grace.abc 452 | % ^^^^ meta.grace.abc 453 | % ^^^^ meta.grace.abc 454 | % ^^^^^ meta.grace.abc 455 | {g}ce {ag}a>e {gf}g>f| 456 | %^^ meta.grace.abc 457 | % ^^^^ meta.grace.abc 458 | % ^^^^ meta.grace.abc 459 | % ^^^^ meta.grace.abc 460 | {gef}e>d {gf}g>d {gBd}B<{e}G {dc}d>B| 461 | {g}ce {ag}a>e {gf}g>e| 462 | %^^ meta.grace.abc 463 | % ^^^^ meta.grace.abc 464 | % ^^^^ meta.grace.abc 465 | % ^^^^ meta.grace.abc 466 | {g}ce {ag}a2 {GdG}ad| 467 | %^^ meta.grace.abc 468 | % ^^^^ meta.grace.abc 469 | % ^^^^ meta.grace.abc 470 | % ^^^^^ meta.grace.abc 471 | {g}c<{GdG}e {gf}ga {f}g>e {g}f>d| 472 | %^^ meta.grace.abc 473 | % ^^^^^ meta.grace.abc 474 | % ^^^^ meta.grace.abc 475 | % ^^^ meta.grace.abc 476 | % ^^^ meta.grace.abc 477 | {g}e/f/g {Gdc}d>c {gBd}B<{e}G {dc}d2|] 478 | %^^ meta.grace.abc 479 | % ^^^^^ meta.grace.abc 480 | % ^^^^^ meta.grace.abc 481 | % ^^^ meta.grace.abc 482 | % ^^^^ meta.grace.abc 483 | -------------------------------------------------------------------------------- /sublime/ABC Notation/syntax_test_ps.ps: -------------------------------------------------------------------------------- 1 | % Copyright (c) 2016 Brian Reilly 2 | % 3 | % Permission is hereby granted, free of charge, to any person obtaining a 4 | % copy of this software and associated documentation files (the "Software"), 5 | % to deal in the Software without restriction, including without limitation 6 | % the rights to use, copy, modify, merge, publish, distribute, sublicense, 7 | % and/or sell copies of the Software, and to permit persons to whom the 8 | % Software is furnished to do so, subject to the following conditions: 9 | % 10 | % The above copyright notice and this permission notice shall be included in 11 | % all copies or substantial portions of the Software. 12 | % 13 | % THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | % IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | % FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | % AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | % LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | % FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 19 | % DEALINGS IN THE SOFTWARE. 20 | 21 | % SYNTAX TEST "Packages/PostScript/PostScript.sublime-syntax" 22 | 23 | % comment {/%) blah blah blah 24 | % <- punctuation.definition.comment 25 | %^^^^^^^^^^^^^^^ comment.line 26 | 27 | 123 -98 +17 28 | % ^^^ constant.numeric 29 | % ^^^ constant.numeric 30 | % ^^^ constant.numeric 31 | 32 | -.002 123.6e10 1.0E-5 -1. 0.0 33 | % ^^^^^ constant.numeric 34 | % ^^^^^^^^ constant.numeric 35 | % ^^^^^^ constant.numeric 36 | % ^^^ constant.numeric 37 | % ^^^ constant.numeric 38 | 39 | 8#1 16#F 32#1z 40 | % ^^^ constant.numeric 41 | % ^^^^ constant.numeric 42 | % ^^^^^ constant.numeric 43 | 44 | true false null 45 | % ^^^^ constant.language 46 | % ^^^^^ constant.language 47 | % ^^^^ constant.language 48 | 49 | systemdict globaldict userdict 50 | % ^^^^^^^^^^ constant.other.dictionary 51 | % ^^^^^^^^^^ constant.other.dictionary 52 | % ^^^^^^^^ constant.other.dictionary 53 | 54 | (Strings may contain special characters *!&}^% and 55 | % <- punctuation.definition.string.begin 56 | %^^^^^^^^^^^^^^^^^^^^^^^^^^ string.literal 57 | balanced parentheses (()) (and so on).) 58 | %^^^^^^^^^^^^^^^^^^^^^^^^^^^ string.literal 59 | % ^ punctuation.definition.string.end 60 | 61 | (\n \377) 62 | % <- punctuation.definition.string.begin 63 | %^^ constant.character.escape 64 | % ^^^^ constant.character.escape 65 | % ^ punctuation.definition.string.end 66 | 67 | 68 | % <- punctuation.definition.string.begin 69 | %^ invalid.illegal.unexpected-character 70 | %^^^^ string.hexadecimal 71 | % ^ invalid.illegal.unexpected-character 72 | % ^ punctuation.definition.string.end 73 | 74 | <~asc¡i~> 75 | % ^^ punctuation.definition.string.begin 76 | % ^^^^^^^^^ string.ascii 77 | % ^ invalid.illegal.unexpected-character 78 | % ^^ punctuation.definition.string.end 79 | 80 | abc Offset $$ 23A 13−456 a.b $MyDict @pattern 81 | %^^ variable.other.readwrite 82 | % ^^^^^^ variable.other.readwrite 83 | % ^^ variable.other.readwrite 84 | % ^^^ variable.other.readwrite 85 | % ^ - variable.other.readwrite 86 | % ^^^^^^ variable.other.readwrite 87 | % ^^^ variable.other.readwrite 88 | % ^^^^^^^ variable.other.readwrite 89 | % ^^^^^^^^ variable.other.readwrite 90 | 91 | / 92 | % <- variable.other.readwrite punctuation.definition.variable 93 | 94 | // 95 | % <- variable.other.readwrite punctuation.definition.variable 96 | %^ variable.other.readwrite punctuation.definition.variable 97 | 98 | /name //name 99 | % <- punctuation.definition.variable 100 | %^^^^ variable.other.readwrite 101 | % ^^ punctuation.definition.variable 102 | % ^^^^^^ variable.other.readwrite 103 | 104 | [/name 22 (str)] 105 | %^^^^^^^^^^^^^^^^^^^^^ meta.brackets 106 | % <- punctuation.definition.brackets.begin 107 | %^^^^^ variable.other.readwrite 108 | % ^^ constant.numeric 109 | % ^^^^^ string.hexadecimal 110 | % ^^^^^ string.literal 111 | % ^ punctuation.definition.brackets.end 112 | 113 | {/name 22 (str)} 114 | %^^^^^^^^^^^^^^^^^^^^^ meta.brackets 115 | % <- punctuation.definition.brackets.begin 116 | %^^^^^ variable.other.readwrite 117 | % ^^ constant.numeric 118 | % ^^^^^ string.hexadecimal 119 | % ^^^^^ string.literal 120 | % ^ punctuation.definition.brackets.end 121 | 122 | << dictionary >> 123 | %^^ punctuation.definition.dictionary.begin 124 | %^^^^^^^^^^^^^^^^ meta.dictionary 125 | % ^^ punctuation.definition.dictionary.end 126 | 127 | = == 128 | % <- keyword.operator.file 129 | % ^^ keyword.operator.file 130 | 131 | 1 2 add 132 | % ^^^ keyword.operator.arithmetic 133 | 134 | 1 2 le 135 | % ^^ keyword.operator.comparison 136 | 137 | a b gt {a} {b} ifelse 138 | % ^^^^^^ keyword.operator.control 139 | -------------------------------------------------------------------------------- /sublime/GoCoEdit/Comments.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | name 5 | Comments 6 | scope 7 | source.gcemode, source.gcetheme 8 | settings 9 | 10 | shellVariables 11 | 12 | 13 | name 14 | TM_COMMENT_START 15 | value 16 | // 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /sublime/GoCoEdit/GoCoEdit Indents.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | name 5 | GoCoEdit Indents 6 | scope 7 | source.gcemode, source.gcetheme 8 | settings 9 | 10 | decreaseIndentPattern 11 | 12 | (?x) 13 | (^("(?:[^"\\]|\\.)*"|[^"/{\n])*\}.*$)| 14 | (^(.*\*/)?\s*\].*$) 15 | 16 | increaseIndentPattern 17 | 18 | (?x) 19 | (^.*\{ 20 | ("(?:[^"\\]|\\.)*"|[^"/}])* 21 | ($|/[/*]) 22 | )| 23 | (^.*\[ 24 | ("(?:[^"\\]|\\.)*"|[^"/\]])* 25 | ($|/[/*]) 26 | ) 27 | 28 | indentSquareBrackets 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /sublime/GoCoEdit/GoCoEdit Mode.sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | name: GoCoEdit Mode 4 | file_extensions: ["gcemode"] 5 | scope: source.gcemode 6 | 7 | contexts: 8 | prototype: 9 | - include: comments 10 | 11 | main: 12 | - include: value 13 | 14 | array: 15 | - match: '(\[)' 16 | captures: 17 | 1: punctuation.definition.array.begin.gcemode 18 | push: 19 | - meta_scope: meta.structure.array.gcemode 20 | - match: '(\])' 21 | captures: 22 | 1: punctuation.definition.array.end.gcemode 23 | pop: true 24 | - include: value 25 | - match: ',' 26 | scope: punctuation.separator.array.gcemode 27 | 28 | comments: 29 | - match: (//).*$\n? 30 | scope: comment.line.double-slash.gcemode 31 | captures: 32 | 1: punctuation.definition.comment.gcemode 33 | 34 | constant: 35 | - match: \b(?:true|false|null)\b 36 | scope: constant.language.gcemode 37 | 38 | number: 39 | # Handles integer and decimal numbers 40 | - match: |- 41 | (?x) 42 | (-?(?:0|[1-9]\d*) 43 | (?:(?:\.\d+)?(?:[eE][+-]?\d+)?)?) 44 | scope: constant.numeric.gcemode 45 | 46 | object: 47 | # a JSON object 48 | - match: '\{' 49 | scope: punctuation.definition.dictionary.begin.gcemode 50 | push: 51 | - meta_scope: meta.structure.dictionary.gcemode 52 | - match: '\}' 53 | scope: punctuation.definition.dictionary.end.gcemode 54 | pop: true 55 | - include: string 56 | # Global Keys 57 | - match: |- 58 | (?x) 59 | (?:^\s*)?(\") 60 | (token(?:izer)?|name|ext|state|parse| 61 | overwriteState|stateAfterMatch|recoverState| 62 | onlyOnLineStart|dash_docsets|symbol_search|hint|global| 63 | comment|number|atom|property|attribute|keyword|builtin| 64 | string(?:-2)?|variable(?:-2)?|variable2|variable3|def| 65 | bracket|tag|header|link|error)\b 66 | (\")\s*(:) 67 | scope: meta.structure.key.gcemode 68 | captures: 69 | 1: punctuation.definition.string.begin.gcemode 70 | 2: keyword.control.gcemode 71 | 3: punctuation.definition.string.end.gcemode 72 | 4: punctuation.separator.dictionary.key-value.gcemode 73 | push: 74 | - meta_scope: meta.structure.dictionary.value.gcemode 75 | - match: '(,)|(?=\})' 76 | captures: 77 | 1: punctuation.separator.dictionary.pair.gcemode 78 | pop: true 79 | - include: value 80 | # Regexp Key(s) 81 | - match: '(?:^\s*)?(\")(regex)(\")\s*(:)' 82 | scope: meta.structure.key.gcemode 83 | captures: 84 | 1: punctuation.definition.string.begin.gcemode 85 | 2: keyword.control.regex.gcemode 86 | 3: punctuation.definition.string.end.gcemode 87 | 4: punctuation.separator.dictionary.key-value.gcemode 88 | push: 89 | - meta_scope: meta.structure.dictionary.value.gcemode 90 | - match: '(,)|(?=\})' 91 | captures: 92 | 1: punctuation.separator.dictionary.pair.gcemode 93 | pop: true 94 | # Regexp Strings 95 | - match: '(")' 96 | captures: 97 | 1: punctuation.definition.string.begin.gcemode 98 | push: 99 | - meta_scope: string.quoted.double.regex.gcemode 100 | - clear_scopes: true 101 | - include: "Packages/GoCoEdit/Regular Expression (Escaped).sublime-syntax" 102 | - match: '(?!\\)((?=\")\")' 103 | captures: 104 | 1: punctuation.definition.string.end.gcemode 105 | pop: true 106 | - match: ',' 107 | scope: punctuation.separator.array.gcemode 108 | # Regexp Array 109 | - match: '(\[)' 110 | captures: 111 | 1: punctuation.definition.array.begin.gcemode 112 | push: 113 | - meta_scope: meta.structure.array.regex.gcemode 114 | - match: '(\])' 115 | captures: 116 | 1: punctuation.definition.array.end.gcemode 117 | pop: true 118 | - include: regexString 119 | - match: ',' 120 | scope: punctuation.separator.array.gcemode 121 | 122 | string: 123 | - match: '(")' 124 | captures: 125 | 1: punctuation.definition.string.begin.gcemode 126 | push: 127 | - meta_scope: string.quoted.double.gcemode 128 | - match: (?x:\\(?:["\\/bfnrt]|u[0-9a-fA-F]{4})) 129 | scope: constant.character.escape.gcemode 130 | - match: |- 131 | (?x) 132 | \b(start|comment|number|atom|property|attribute|keyword|builtin| 133 | string|string-2|variable|variable-2|variable2|variable3| 134 | def|bracket|tag|header|link|error)\b 135 | scope: support.constant.gcemode 136 | - match: '\\(?!["\\/bfnrt]|u[0-9a-fA-F]{4}).' 137 | scope: invalid.illegal.unrecognized-string-escape.gcemode 138 | - match: '(")' 139 | captures: 140 | 1: punctuation.definition.string.end.gcemode 141 | pop: true 142 | 143 | regexString: 144 | - match: '(")' 145 | scope: punctuation.definition.string.begin.gcemode 146 | push: 147 | - meta_scope: string.quoted.double.regex.gcemode 148 | - clear_scopes: true 149 | - include: "Packages/GoCoEdit/Regular Expression (Escaped).sublime-syntax" 150 | - match: '(?!\\)((?=\")\")' 151 | captures: 152 | 1: punctuation.definition.string.end.gcemode 153 | pop: true 154 | - match: ',' 155 | scope: punctuation.separator.array.gcemode 156 | 157 | value: 158 | - include: constant 159 | - include: number 160 | - include: string 161 | - include: array 162 | - include: object 163 | ... 164 | -------------------------------------------------------------------------------- /sublime/GoCoEdit/GoCoEdit Theme.sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | name: GoCoEdit Theme 4 | file_extensions: ["gcetheme"] 5 | scope: source.gcetheme 6 | 7 | contexts: 8 | prototype: 9 | - include: comments 10 | 11 | main: 12 | - include: value 13 | 14 | array: 15 | - match: '(\[)' 16 | captures: 17 | 1: punctuation.definition.array.begin.gcetheme 18 | push: 19 | - meta_scope: meta.structure.array.gcetheme 20 | - match: '(\])' 21 | captures: 22 | 1: punctuation.definition.array.end.gcetheme 23 | pop: true 24 | - include: value 25 | - match: ',' 26 | scope: punctuation.separator.array.gcetheme 27 | 28 | comments: 29 | - match: (//).*$\n? 30 | scope: comment.line.double-slash.gcetheme 31 | captures: 32 | 1: punctuation.definition.comment.gcetheme 33 | 34 | constant: 35 | - match: \b(?:true|false|null)\b 36 | scope: constant.language.gcetheme 37 | 38 | number: 39 | # Handles integer and decimal numbers 40 | - match: |- 41 | (?x) 42 | (-?(?:0|[1-9]\d*) 43 | (?:(?:\.\d+)?(?:[eE][+-]?\d+)?)?) 44 | scope: constant.numeric.gcetheme 45 | 46 | object: 47 | # a JSON object 48 | - match: '\{' 49 | scope: punctuation.definition.dictionary.begin.gcetheme 50 | push: 51 | - meta_scope: meta.structure.dictionary.gcetheme 52 | - include: string 53 | - match: |- 54 | (?x) 55 | (?:^\s*)?(\") 56 | (name|defaults|gutters|tokens|(?:comment|number|atom| 57 | property|attribute|keyword|builtin|string| 58 | variable|variable2|variable3|def|bracket|tag| 59 | header|link|error)_(?:color|background|style|decoration|weight)| 60 | (?:\w+)_(?:color|background|style|decoration|weight)| 61 | onlyOnLineStart|dash_docsets|symbol_search|hint|global) 62 | (\")\s*(:) 63 | scope: meta.structure.key.gcetheme 64 | captures: 65 | 1: punctuation.definition.string.begin.gcetheme 66 | 2: keyword.control.gcetheme 67 | 3: punctuation.definition.string.end.gcetheme 68 | 4: punctuation.separator.dictionary.key-value.gcetheme 69 | push: 70 | - meta_scope: meta.structure.dictionary.value.gcetheme 71 | - match: '(,)|(?=\})' 72 | captures: 73 | 1: punctuation.separator.dictionary.pair.gcetheme 74 | pop: true 75 | - include: value 76 | - match: '\}' 77 | scope: punctuation.definition.dictionary.end.gcetheme 78 | pop: true 79 | 80 | string: 81 | - match: '(")' 82 | captures: 83 | 1: punctuation.definition.string.begin.gcetheme 84 | push: 85 | - meta_scope: string.quoted.double.gcetheme 86 | - meta_include_prototype: false 87 | - match: '(?x:\\(?:["\\/bfnrt]|u[0-9a-fA-F]{4}))' 88 | scope: constant.character.escape.gcetheme 89 | - match: '\\(?!["\\/bfnrt]|u[0-9a-fA-F]{4}).' 90 | scope: invalid.illegal.unrecognized-string-escape.gcetheme 91 | - match: '(")' 92 | scope: punctuation.definition.string.end.gcetheme 93 | pop: true 94 | 95 | value: 96 | - include: constant 97 | - include: number 98 | - include: string 99 | - include: array 100 | - include: object 101 | ... 102 | -------------------------------------------------------------------------------- /sublime/GoCoEdit/Indentation Rules.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | scope 5 | source.gcemode - string - comment, source.gcetheme - string - comment 6 | settings 7 | 8 | increaseIndentPattern 9 | ^.*[:\[{]\s*$ 10 | decreaseIndentPattern 11 | ^\s*[\]}] 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /sublime/GoCoEdit/Regular Expression (Escaped).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # Based on PackageDev's Regular Expression (Escaped).JSON-tmLanguage (https://github.com/SublimeText/PackageDev/) 4 | # 5 | # License 6 | # ======= 7 | # 8 | # Copyright (c) 2014 Guillermo López-Anglada (Vintageous), 9 | # FichteFoll 10 | # 11 | # Permission is hereby granted, free of charge, to any person obtaining a copy of 12 | # this software and associated documentation files (the "Software"), to deal in 13 | # the Software without restriction, including without limitation the rights to 14 | # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 15 | # of the Software, and to permit persons to whom the Software is furnished to do 16 | # so, subject to the following conditions: 17 | # 18 | # The above copyright notice and this permission notice shall be included in all 19 | # copies or substantial portions of the Software. 20 | # 21 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 22 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 24 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 25 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 26 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 27 | # SOFTWARE. 28 | 29 | name: Regular Expression (Escaped) 30 | file_extensions: 31 | - ere 32 | scope: source.escapedregexp 33 | contexts: 34 | main: 35 | - include: classes 36 | - include: anchorsWithBackslash 37 | - include: allEscapes 38 | - include: anchors 39 | - include: quantifiers 40 | - include: granularQuantifier 41 | - include: operators 42 | - include: sets 43 | - include: groups 44 | 45 | allEscapes: 46 | # Order matters. 47 | - include: regexpEscapeSequences 48 | - include: regexpEscapedBackslash 49 | - include: jsonEscapeSequences 50 | 51 | anchors: 52 | - match: '[$^]' 53 | scope: entity.other.attribute-name.anchor.escapedregexp 54 | 55 | anchorsWithBackslash: 56 | - match: '(?:\\\\[AbBZ])' 57 | scope: entity.other.attribute-name.anchor.escapedregexp 58 | 59 | classes: 60 | # 'XXX: Add unicode escapes \x00 and escapes within comments.' 61 | - match: '\\\\[dDsSwW]' 62 | scope: keyword.other.character-class.escapedregexp 63 | 64 | granularQuantifier: 65 | - scope: meta.granular.quantifier.escapedregexp 66 | match: (\{)([0-9]+)(,)?([0-9]+)?(\}) 67 | captures: 68 | 1: keyword.other.punctuation.quantifier.start.escapedregexp 69 | 2: constant.numeric.escapedregexp 70 | 3: keyword.other.separator.escapedregexp 71 | 4: constant.numeric.escapedregexp 72 | 5: keyword.other.punctuation.quantifier.end.escapedregexp 73 | 74 | groups: 75 | - match: (\() 76 | captures: 77 | 1: string.regexp.group.escapedregexp 78 | # 'XXX: Implement named groups, options and yes/no groups.' 79 | push: 80 | - meta_scope: meta.group.escapedregexp 81 | - match: (\)) 82 | captures: 83 | 0: string.regexp.group.escapedregexp 84 | pop: true 85 | - match: '(\?(?:[:=!>]|<[=!]))' 86 | scope: support.function.assertion.escapedregexp 87 | - include: main 88 | 89 | jsonEscapeSequences: 90 | - match: '\\[bfntr"/]' 91 | scope: entity.other.attribute-name.escape.sequence.json.escapedregexp 92 | 93 | operators: 94 | - match: '[|.]' 95 | scope: keyword.other.operator.escapedregexp 96 | 97 | quantifiers: 98 | - match: '(\+|\*|\?)(\?)?' 99 | scope: keyword.other.quantifier.escapedregexp 100 | 101 | regexpEscapeSequences: 102 | # Escape next char if the slash isn't being escaped itself. 103 | - match: '(?=:!]| 36 | [imx]{,3}(?:-[imx]{1,3})?(?::(?!\))|(?=\)))| 37 | [<'](\w+)[>']) 38 | )? 39 | captures: 40 | 1: storage.type.group.begin.oniregexp 41 | 2: string.oniregexp constant.other.assertion.oniregexp 42 | 3: variable.other.oniregexp 43 | push: 44 | - include: main 45 | - match: (\)) 46 | captures: 47 | 1: storage.type.group.end.oniregexp 48 | pop: true 49 | 50 | - include: special_escapes 51 | 52 | # backref 53 | - scope: keyword.other.backref.oniregexp 54 | match: | 55 | (?x) 56 | (\\\d+)| 57 | (\\k[<'](-?\d+|\w+([-+]\d+)?)[>']) 58 | captures: 59 | 1: variable.other.oniregexp 60 | 2: keyword.other.backref.oniregexp 61 | 3: variable.other.oniregexp 62 | 63 | # subexp call 64 | - scope: keyword.other.subexp-call.oniregexp 65 | match: \\g[<'](-?\d+|\w+)[>'] 66 | captures: 67 | 1: variable.other.oniregexp 68 | 69 | - include: escaped_char 70 | 71 | set: 72 | - scope: meta.string.set.oniregexp 73 | match: \[(\^?\])? 74 | push: 75 | - meta_scope: string.regexp.set.oniregexp 76 | - match: \] 77 | pop: true 78 | - scope: constant.other.posix-bracket.oniregexp 79 | match: \[:\^?(?>alnum|alpha|ascii|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word):\] 80 | - include: set 81 | - include: character_class 82 | - include: character_property 83 | - include: special_escapes 84 | - include: escaped_char 85 | - scope: constant.other.range.oniregexp 86 | match: .-[^\]] 87 | - scope: keyword.operator.intersection.oniregexp 88 | match: (?Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower| 100 | Print|Punct|Space|Upper|XDigit|Word|ASCII) 101 | |(?>Hiragana|Katakana) 102 | |(?>Any|Assigned) 103 | |(?>C|Cc|Cf|Cn|Co|Cs|L|Ll|Lm|Lo|Lt|Lu| 104 | M|Mc|Me|Mn|N|Nd|Nl|No|P|Pc|Pd|Pe|Pf|Pi|Po|Ps| 105 | S|Sc|Sk|Sm|So|Z|Zl|Zp|Zs) 106 | |(?>Arabic|Armenian|Bengali|Bopomofo|Braille|Buginese| 107 | Buhid|Canadian_Aboriginal|Cherokee|Common|Coptic| 108 | Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian| 109 | Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul| 110 | Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana| 111 | Kharoshthi|Khmer|Lao|Latin|Limbu|Linear_B|Malayalam| 112 | Mongolian|Myanmar|New_Tai_Lue|Ogham|Old_Italic|Old_Persian| 113 | Oriya|Osmanya|Runic|Shavian|Sinhala|Syloti_Nagri|Syriac| 114 | Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan| 115 | Tifinagh|Ugaritic|Yi) 116 | )\} 117 | captures: 118 | 1: constant.other.property.oniregexp 119 | 120 | special_escapes: 121 | - scope: constant.character.escape.special.oniregexp 122 | match: \\([tvnrbfae]|[0-8]{3}|x\h\h|x\{7\h{7}\}|c\d+|M-(\\C-)?\d+|C-\d+) 123 | 124 | escaped_char: 125 | - scope: constant.character.escape.general.oniregexp 126 | match: \\. 127 | -------------------------------------------------------------------------------- /yaml/ABC Notation/ABC Formatting Extension.YAML-tmLanguage: -------------------------------------------------------------------------------- 1 | # [PackageDev] target_format: plist, ext: tmLanguage 2 | --- 3 | name: ABC Formatting Extension 4 | scopeName: source.fmt 5 | fileTypes: ['fmt'] 6 | uuid: 972d5050-f5bb-4d36-b94e-b00079652038 7 | 8 | patterns: 9 | - include: '#comments' 10 | - include: '#directive' 11 | - include: '#embedded-content' 12 | 13 | repository: 14 | comments: 15 | patterns: 16 | - name: comment.line.percentage.fmt 17 | begin: '(?:^\s*)?(%(?!abc))' 18 | beginCaptures: 19 | '1': {name: punctuation.definition.comment.fmt} 20 | end: $ 21 | - name: comment.line.namespace.fmt 22 | match: '(?:^\s*)?(?>(%)(abc(?:-\d\.\d)?))' 23 | captures: 24 | '1': {name: punctuation.definition.comment.fmt} 25 | '2': {name: keyword.other.special-method.namespace.fmt} 26 | 27 | directive: 28 | name: meta.directive.abc 29 | begin: '^\s*((?!(?:begin|end(?:text|svg|ps|js|md|ml))|postscript|ps)\w*)\b' 30 | beginCaptures: 31 | '1': {name: keyword.operator.word.directive.abc} 32 | contentName: variable.parameter.directive.abc 33 | end: $ 34 | patterns: 35 | # MIDI keywords 36 | - name: keyword.operator.word.directive.midi.abc 37 | match: |- 38 | (?x) 39 | (MIDI + 40 | (?:no)?barlines|bassprog|(?:no)?beataccents|beat(?:mod|string)?| 41 | bend(?:velocity|string)|chord(?:attack|name|program)| 42 | control(?:combo|string)?|deltaloudness|droneo(?:n|ff)| 43 | drum(?:on|off|bars|map)|expand|fermata(?:fixed|proportional)?| 44 | gchord(?:on|off)?|grace(?:divider)?|makechordchannels|pitchbend| 45 | portamento|program|ptstress|randomchordattack|ratio|stressmodel| 46 | snt|rtranspose|temperament(?:linear|equal|normal)|transpose| 47 | trim|vol(inc)?)\b 48 | - name: constant.numeric.float.length-unit.abc 49 | match: '(\d*(?:\.\d*)?(?:pt|in|cm)?)' 50 | - name: storage.type.directive.abc 51 | match: '(?i)\b(true|false|yes|no|on|off)\b' 52 | # TODO: include more keywords to be highlighted 53 | - include: '#comments' 54 | 55 | embedded-content: 56 | patterns: 57 | - comment: Typeset Text 58 | name: meta.typeset.abc 59 | begin: '^\s*(begintext)\b(\s+(?:obeylines|fill|ragged|justify|align|skip))?\b' 60 | beginCaptures: 61 | '1': {name: support.function.directive.abc} 62 | '2': {name: variable.parameter.directive.abc} 63 | contentName: string.unquoted.typeset.abc 64 | end: '^\s*(endtext)' 65 | endCaptures: 66 | '1': {name: support.function.directive.abc} 67 | patterns: 68 | - include: '#comments' 69 | - comment: Embedded HTML 70 | name: meta.html.abc 71 | begin: '^\s*(beginml)\b' 72 | beginCaptures: 73 | '1': {name: support.function.directive.abc} 74 | end: '^\s*(endml)' 75 | endCaptures: 76 | '1': {name: support.function.directive.abc} 77 | patterns: 78 | - include: text.html.basic 79 | - include: '#comments' 80 | - comment: Embedded JavaScript 81 | name: meta.js.abc 82 | begin: '^\s*(beginjs)\b' 83 | beginCaptures: 84 | '1': {name: support.function.directive.abc} 85 | end: '^\s*(endjs)' 86 | endCaptures: 87 | '1': {name: support.function.directive.abc} 88 | patterns: 89 | - include: source.js 90 | - include: '#comments' 91 | - comment: Embedded SVG 92 | name: meta.svg.abc 93 | begin: '^\s*(beginsvg)\b' 94 | beginCaptures: 95 | '1': {name: support.function.directive.abc} 96 | end: '^\s*(endsvg)' 97 | endCaptures: 98 | '1': {name: comment.line.percentage.abc} 99 | '2': {name: support.function.directive.abc} 100 | patterns: 101 | - include: text.xml 102 | - include: '#comments' 103 | - comment: Embedded PostScript 104 | name: meta.ps.abc 105 | begin: '^\s*(beginps)(\s+(?:nosvg))?' 106 | beginCaptures: 107 | '1': {name: support.function.directive.abc} 108 | '2': {name: variable.parameter.directive.abc} 109 | contentName: source.postscript 110 | end: '^\s*(endps)' 111 | endCaptures: 112 | '1': {name: support.function.directive.abc} 113 | patterns: 114 | - include: source.postscript 115 | - comment: Embedded Markdown 116 | begin: '^\s*(beginmd)\b' 117 | beginCaptures: 118 | '1': {name: support.function.directive.abc} 119 | end: '^\s*(endmd)\b' 120 | endCaptures: 121 | '1': {name: support.function.directive.abc} 122 | patterns: 123 | - include: text.html.markdown 124 | - include: '#comments' 125 | - comment: Inline Postscript Instructions 126 | patterns: 127 | - name: meta.ps.abc 128 | begin: '^\s*(postscript|ps)\b' 129 | beginCaptures: 130 | '1': {name: support.function.directive.abc} 131 | end: $ 132 | patterns: 133 | - include: source.postscript 134 | - include: '#comments' 135 | ... 136 | -------------------------------------------------------------------------------- /yaml/ABC Notation/ABC Notation.YAML-tmLanguage: -------------------------------------------------------------------------------- 1 | # [PackageDev] target_format: plist, ext: tmLanguage 2 | --- 3 | name: ABC Notation 4 | scopeName: source.abc 5 | fileTypes: [abc, abh, abp] 6 | foldingStartMarker: '^X:|\(' 7 | foldingStopMarker: '^(?:\s*)?$|\)' 8 | uuid: c87e9f8a-efbb-4aa8-83e2-c6c26f2aa6fb 9 | 10 | patterns: 11 | # Tune Body ends just before the first 'K:' field 12 | - comment: ABC Tune 13 | name: meta.tune.abc 14 | begin: '^(X:)\s*(\d+)' 15 | beginCaptures: 16 | '1': {name: entity.name.tag.index.abc} 17 | '2': {name: variable.parameter.index.abc} 18 | end: '^(\s*)?$' 19 | patterns: 20 | - include: '#tune-body' 21 | - include: '#title-field' 22 | - include: '#fields' 23 | - include: '#comments' 24 | - include: '#directive' 25 | - include: '#prototype' 26 | - include: '#embedded-content' 27 | 28 | repository: 29 | ## Escapes, Fields, Comments 30 | prototype: 31 | patterns: 32 | - include: '#escape' 33 | - include: '#fields' 34 | - include: '#comments' 35 | 36 | escape: 37 | comment: Escape Characters 38 | patterns: 39 | - name: constant.character.escape.abc 40 | match: (\\(?:\\|%|[^ \n\r]|u\h{4}|u\h{8}|\\[[:punct:]&&[\w]&&[^[ \t\v\f]]]{2})) 41 | - name: constant.character.escape.abc 42 | match: (?:&\w+;) 43 | - name: constant.character.escape.abc 44 | match: (?:&#\d+;) 45 | - name: constant.character.escape.abc 46 | match: (?:&#x\h+;) 47 | 48 | fields: 49 | comment: Instruction field, Info fields, Voice field, Part field 50 | patterns: 51 | - include: '#instruction-field' 52 | - name: meta.field.abc 53 | begin: '^((?>[[:alpha:]+&&[^IKPVTXr]]:))' 54 | beginCaptures: 55 | '1': {name: support.function.field.abc} 56 | contentName: string.unquoted.field.abc 57 | end: $ 58 | patterns: 59 | - include: '#comments' 60 | - include: '#escape' 61 | - name: meta.field.voice.abc 62 | begin: '^((?>V:))' 63 | beginCaptures: 64 | '1': {name: entity.name.tag.voice.abc} 65 | contentName: variable.parameter.voice.abc 66 | end: $ 67 | patterns: 68 | - include: '#comments' 69 | - include: '#escape' 70 | - name: meta.field.part.abc 71 | begin: '^((?>P:))' 72 | beginCaptures: 73 | '1': {name: entity.name.tag.part.abc} 74 | contentName: variable.parameter.part.abc 75 | end: $ 76 | patterns: 77 | - include: '#comments' 78 | - include: '#escape' 79 | key-field: 80 | comment: Key Field. The key is significant in that it indicates where the start of the tune body is. 81 | name: meta.field.key.abc 82 | begin: '^(?>(K:)\s*\b([^% \n\r]+)?\b)' 83 | beginCaptures: 84 | '1': {name: entity.name.tag.key.abc} 85 | '2': {name: variable.parameter.key.abc} 86 | # '3': {name: string.unquoted.key.abc} 87 | contentName: string.unquoted.key.abc 88 | end: $ 89 | patterns: 90 | - include: '#prototype' 91 | title-field: 92 | comment: Title Field. This field is only permitted in the header or body of a tune. 93 | name: meta.field.title.abc 94 | begin: '^((?>T:))' 95 | beginCaptures: 96 | '1': {name: entity.name.tag.title.abc} 97 | contentName: string.unquoted.title.abc 98 | end: $ 99 | patterns: 100 | - include: '#prototype' 101 | 102 | comments: 103 | comment: Line Comments, Directives / Pseudo-Comments, Namespace Comments, and Remark Fields 104 | patterns: 105 | - name: comment.line.percentage.abc 106 | begin: '(?:^\s*)?(?>%(?!%|abc))' 107 | beginCaptures: 108 | '1': {name: comment.line.percentage.abc punctuation.definition.comment.abc} 109 | end: $ 110 | patterns: 111 | - include: '#escape' 112 | - include: '#comments' 113 | - include: '#directive' 114 | - name: comment.line.namespace.abc 115 | match: '(?:^\s*)?(?>(%)(abc(?:-\d\.\d)?))' 116 | captures: 117 | '1': {name: punctuation.definition.comment.abc} 118 | '2': {name: keyword.other.special-method.namespace.abc} 119 | patterns: 120 | - include: '#escape' 121 | - include: '#comments' 122 | - include: '#directive' 123 | - name: meta.field.remark.abc 124 | begin: '^(r:)' 125 | beginCaptures: 126 | '1': {name: support.function.field.remark.abc} 127 | contentName: comment.line.remark.abc 128 | end: $ 129 | patterns: 130 | - include: '#escape' 131 | - include: '#comments' 132 | - include: '#directive' 133 | - include: '#directive' 134 | 135 | ## Container Contexts 136 | tune-body: 137 | comment: ABC Tune Body 138 | name: meta.tune.body.abc 139 | begin: '^(?>(K:)\s*(\w+)?)\b\s*([^%\r\n]*)' 140 | beginCaptures: 141 | '1': {name: entity.name.tag.key.abc} 142 | '2': {name: keyword.control.key.abc} 143 | '3': {name: string.unquoted.key.abc} 144 | end: '^(\s*)?$' 145 | patterns: 146 | - include: '#fields' 147 | - include: '#title-field' 148 | - include: '#key-field' 149 | - include: '#barline' 150 | - include: '#inline-field' 151 | - include: '#abc-chord' 152 | - include: '#abc-note' 153 | - include: '#abc-rest' 154 | - include: '#abc-space' 155 | - include: '#grace' 156 | - include: '#decoration' 157 | - include: '#macro' 158 | - include: '#strings' 159 | - include: '#operators' 160 | - include: '#prototype' 161 | 162 | ## Instructions / Directives 163 | directive: 164 | name: meta.directive.abc 165 | begin: '(%%)\s*((?!(?:begin|end(?:text|svg|ps|js|md|ml))|postscript|ps)\w*)\b' 166 | beginCaptures: 167 | '1': {name: comment.line.percentage.directive.abc punctuation.definition.comment.abc} 168 | '2': {name: keyword.operator.word.directive.abc} 169 | contentName: variable.parameter.directive.abc 170 | end: $ 171 | patterns: 172 | # MIDI keywords 173 | - name: keyword.operator.word.directive.midi.abc 174 | match: |- 175 | (?x) 176 | (MIDI + 177 | (?:no)?barlines|bassprog|(?:no)?beataccents|beat(?:mod|string)?| 178 | bend(?:velocity|string)|chord(?:attack|name|program)| 179 | control(?:combo|string)?|deltaloudness|droneo(?:n|ff)| 180 | drum(?:on|off|bars|map)|expand|fermata(?:fixed|proportional)?| 181 | gchord(?:on|off)?|grace(?:divider)?|makechordchannels|pitchbend| 182 | portamento|program|ptstress|randomchordattack|ratio|stressmodel| 183 | snt|rtranspose|temperament(?:linear|equal|normal)|transpose| 184 | trim|vol(inc)?)\b 185 | - name: constant.numeric.float.length-unit.abc 186 | match: '(\d*(?:\.\d*)?(?:pt|in|cm)?)' 187 | - name: storage.type.directive.abc 188 | match: '(?i)\b(true|false|yes|no|on|off)\b' 189 | # TODO: include more keywords to be highlighted 190 | - include: '#comments' 191 | 192 | instruction-field: 193 | patterns: 194 | - comment: Instruction Field 195 | name: meta.field.instruction.abc 196 | begin: '(^I:)\s*((?!(?:begin|end(?:text|svg|ps|js|md|ml))|postscript|ps)\w+)\b\s+([^%\r\n]*)' 197 | beginCaptures: 198 | '1': {name: entity.name.tag.instruction.abc} 199 | '2': {name: keyword.operator.word.directive.abc} 200 | '3': {name: variable.parameter.directive.abc} 201 | contentName: variable.parameter.directive.abc 202 | end: $ 203 | patterns: 204 | - include: '#escape' 205 | - include: '#comments' 206 | # MIDI keywords 207 | - name: keyword.operator.word.directive.midi.abc 208 | match: |- 209 | (?x) 210 | (MIDI + 211 | (?:no)?barlines|bassprog|(?:no)?beataccents|beat(?:mod|string)?| 212 | bend(?:velocity|string)|chord(?:attack|name|program)| 213 | control(?:combo|string)?|deltaloudness|droneo(?:n|ff)| 214 | drum(?:on|off|bars|map)|expand|fermata(?:fixed|proportional)?| 215 | gchord(?:on|off)?|grace(?:divider)?|makechordchannels|pitchbend| 216 | portamento|program|ptstress|randomchordattack|ratio|stressmodel| 217 | snt|rtranspose|temperament(?:linear|equal|normal)|transpose| 218 | trim|vol(inc)?)\b 219 | - name: storage.type.directive.abc 220 | match: '(?i)(true|false|yes|no|on|off)\b' 221 | - name: constant.numeric.float.length-unit.abc 222 | match: '(\d*(?:\.\d*)?(?:pt|in|cm)?)\b' 223 | - comment: PostScript Instruction Field 224 | name: meta.ps.abc 225 | begin: '(^I:)\s*(postscript|ps)\b' 226 | beginCaptures: 227 | '1': {name: entity.name.tag.instruction.abc} 228 | '2': {name: support.function.directive.abc} 229 | end: $ 230 | patterns: 231 | - include: source.postscript 232 | - include: '#prototype' 233 | 234 | inline-instruction: 235 | patterns: 236 | - comment: Inline Instruction Field 237 | name: meta.inline-field.instruction.abc 238 | begin: '(?:(\[I:)\s*((?!(?:begin|end(?:text|svg|ps|js|md|ml))|postscript|ps)\w+)\b)' 239 | beginCaptures: 240 | '1': {name: entity.name.tag.inline-field.instruction.abc} 241 | '2': {name: keyword.operator.word.instruction.abc} 242 | contentName: variable.parameter.instruction.abc 243 | end: '\s*((?>\]))' 244 | endCaptures: 245 | '1': {name: entity.name.tag.inline-field.instruction.abc} 246 | patterns: 247 | - include: '#escape' 248 | # MIDI keywords 249 | - name: keyword.operator.word.directive.midi.abc 250 | match: |- 251 | (?x) 252 | (MIDI + 253 | (?:no)?barlines|bassprog|(?:no)?beataccents|beat(?:mod|string)?| 254 | bend(?:velocity|string)|chord(?:attack|name|program)| 255 | control(?:combo|string)?|deltaloudness|droneo(?:n|ff)| 256 | drum(?:on|off|bars|map)|expand|fermata(?:fixed|proportional)?| 257 | gchord(?:on|off)?|grace(?:divider)?|makechordchannels|pitchbend| 258 | portamento|program|ptstress|randomchordattack|ratio|stressmodel| 259 | snt|rtranspose|temperament(?:linear|equal|normal)|transpose| 260 | trim|vol(inc)?)\b 261 | - name: storage.type.directive.abc 262 | match: '(?i)(true|false|yes|no|on|off)\b' 263 | - name: constant.numeric.float.length-unit.abc 264 | match: '(\d*(?:\.\d*)?(?:pt|in|cm)?)\b' 265 | - comment: Inline PostScript Field 266 | name: meta.ps.abc 267 | begin: '(\[I:)\s*(postscript|ps)\b' 268 | beginCaptures: 269 | '1': {name: entity.name.tag.inline-field.instruction.abc} 270 | '2': {name: keyword.operator.word.instruction.abc} 271 | end: '\s*((?>\]))' 272 | endCaptures: 273 | '1': {name: entity.name.tag.inline-field.instruction.abc} 274 | patterns: 275 | - include: source.postscript 276 | 277 | ## ABC Code Elements 278 | abc-note: 279 | comment: Note Values (Accidentals, Pitch, Note Length) 280 | patterns: 281 | - match: |- 282 | (?x) 283 | ([_=\^](?:\d*\/*\d*)|=|[_\^]{2})? 284 | ([A-Ga-g][,']*) 285 | (\d*[<>/]*\d*)? 286 | captures: 287 | '1': {name: constant.language.accidental.abc} 288 | '2': {name: constant.character.note.abc} 289 | '3': {name: storage.type.note-length.abc} 290 | 291 | abc-rest: 292 | comment: Rests & Multi-measure Rests 293 | patterns: 294 | - name: meta.code.abc-rest.abc 295 | match: ([XZ])(\d+)? 296 | captures: 297 | '1': {name: storage.type.abc-rest.abc} 298 | '2': {name: storage.type.rest-length.abc} 299 | - name: meta.code.abc-rest.abc 300 | match: ([xz])(\d*[<>/]*\d*)? 301 | captures: 302 | '1': {name: storage.type.abc-rest.abc} 303 | '2': {name: storage.type.rest-length.abc} 304 | 305 | abc-space: 306 | comment: Spacing Rest 307 | name: meta.code.abc-space.abc 308 | match: ([yY])(\d+(?:\.\d*(?:pt|in|cm)?)?)?\b 309 | captures: 310 | '1': {name: storage.type.spacer.abc} 311 | '2': {name: constant.numeric.space-length.abc} 312 | 313 | decoration: 314 | comment: Decoration Symbols 315 | patterns: 316 | - name: variable.language.decoration.abc 317 | match: (?:^\s*)?([-\.~HLMOPSTuv](?!:)) 318 | - name: variable.language.decoration.abc 319 | match: (!\w+!) 320 | - name: variable.language.decoration.abc 321 | match: |- 322 | (?x) 323 | (!(?:\+|-[()]|\/{1,3}|[0-5]|\<[()]?|\>[()]?|\^| 324 | accent|arpeggio|beam-accel|beam-rall|beambr[12]|beamon| 325 | breath|coda|courtesy|crescendo[()]?| 326 | D\.C\.(?:alcoda|alfine)?|D\.S\.(?:alcoda|alfine)?| 327 | dacapo|dacoda|diminuendo[()]?|dot|downbow|editorial| 328 | emphasis|f+|fermata|fine|gmark|invertedfermata| 329 | invertedturn|invertedturnx|invisible|longphrase| 330 | lowermordent|marcato|mediumphrase|mf|mordent|mp|open|p+| 331 | plus|pralltriller|rbend|rbstop|roll|segno|sfz|shortphrase| 332 | slide|snap|stemless|tenuto|thumb|trem[1-4]|trill[()]?| 333 | turn|turnx|upbow|uppermordent|wedge|xstem|\~[()])!) 334 | - name: variable.language.decoration.abc 335 | match: (~(?![h-wH-W][a-zA-Z0-9]*)) 336 | 337 | macro: 338 | comment: User-defined Macro 339 | name: support.type.macro.abc 340 | match: (\~[h-zH-Z][a-zA-Z0-9]{,30}) 341 | 342 | grace: 343 | comment: Grace Notes 344 | name: meta.code.grace.abc 345 | begin: (\{\/?) 346 | beginCaptures: 347 | '1': {name: support.type.grace.abc} 348 | end: (\}) 349 | endCaptures: 350 | '1': {name: support.type.grace.abc} 351 | patterns: 352 | - match: ([A-Ga-g][,']*) 353 | name: constant.character.note.abc 354 | - match: (\d*[<>/]*\d*)? 355 | name: storage.type.note-length.abc 356 | - include: '#abc-rest' 357 | - include: '#decoration' 358 | 359 | operators: 360 | comment: Overlay Operators, Line Continuations, Slurs, Ties, Line Breaks, Tuplets 361 | patterns: 362 | - match: (\(\&|\&\&?|\&\)) 363 | name: support.function.overlay.abc 364 | - match: (\\(?= *| *$)) 365 | name: support.function.line-continue.abc 366 | - match: ((?:\((?![\d:])[',]?)|\)) 367 | name: support.function.slur.abc 368 | - match: ([-\.`]) 369 | name: support.type.ties.abc 370 | - match: (\$(?= *| *$)) 371 | name: support.type.line-break.abc 372 | - match: (\(\d+(?::\d*(?::\d*)?)?) 373 | name: support.type.tuplet.abc 374 | 375 | strings: 376 | comment: Chord symbols and String Annotations 377 | patterns: 378 | - include: '#chord-symbol' 379 | - include: '#annotation' 380 | 381 | chord-symbol: 382 | comment: String Chord Symbols 383 | name: string.quoted.double.chord.abc 384 | begin: '("(?![_<>^@]))' 385 | beginCaptures: 386 | '1': {name: punctuation.definition.string.chord.begin.abc} 387 | end: '(")' 388 | endCaptures: 389 | '1': {name: punctuation.definition.string.chord.end.abc} 390 | patterns: 391 | - include: '#escape' 392 | 393 | annotation: 394 | comment: String Annotations 395 | name: string.quoted.double.annotation.abc 396 | begin: '(\"[_<>^@])' 397 | beginCaptures: 398 | '1': {name: punctuation.definition.string.annotation.begin.abc} 399 | contentName: string.quoted.double.annotation.abc 400 | end: '(")' 401 | endCaptures: 402 | '1': {name: punctuation.definition.string.annotation.end.abc} 403 | patterns: 404 | - include: '#escape' 405 | 406 | ## Barlines, Chord Sequences, Inline Fields 407 | barline: 408 | comment: Bar lines, Repeat Section Bar Lines 409 | patterns: 410 | - name: meta.barline.invisible.abc 411 | match: '((?>\[\|\]|\[\]))((?>\d+(?:[,-]\d+)*))?' 412 | captures: 413 | '1': {name: comment.block.documentation.barline.abc} 414 | '2': {name: comment.block.documentation.barline.repeat-length.abc} 415 | - name: meta.barline.abc 416 | match: '((?>:+))' 417 | captures: 418 | '1': {name: punctuation.separator.barline.abc} 419 | - name: meta.barline.abc 420 | match: '(\[\[)' 421 | captures: 422 | '1': {name: punctuation.separator.barline.abc} 423 | - name: meta.barline.abc 424 | match: '(\|\])' 425 | captures: 426 | '1': {name: punctuation.separator.barline.abc} 427 | - name: meta.barline.abc 428 | match: ((?>[\[\|\]]:+)) 429 | captures: 430 | '1': {name: punctuation.separator.barline.abc} 431 | - name: meta.barline.abc 432 | match: '((?>:*\|+))((?>\d+(?:[,-]\d+)*))?' 433 | captures: 434 | '1': {name: punctuation.separator.barline.abc} 435 | '2': {name: punctuation.separator.barline.repeat-length.abc} 436 | - name: meta.barline.abc 437 | match: '((?>:*\]))((?>\d+(?:[,-]\d+)*))' 438 | captures: 439 | '1': {name: punctuation.separator.barline.abc} 440 | '2': {name: punctuation.separator.barline.repeat-length.abc} 441 | - name: meta.barline.abc 442 | match: '((?>:*\[+(?![a-zA-Z]:|[^\[\s\r\n:\d\|\]])))((?>\d+(?:[,-]\d+)*))?' 443 | captures: 444 | '1': {name: punctuation.separator.barline.abc} 445 | '2': {name: punctuation.separator.barline.repeat-length.abc} 446 | 447 | abc-chord: 448 | comment: Chord Sequences 449 | name: meta.chord.abc 450 | begin: |- 451 | (?x) 452 | (\[ 453 | (?![\[\|\]<>/\d\r\n\s]|(?:[a-zA-Z]:)) 454 | ) 455 | beginCaptures: 456 | '1': {name: support.type.decoration.chord.abc} 457 | end: (\](?/]*\d*)? 458 | endCaptures: 459 | '1': {name: support.type.decoration.chord.abc} 460 | '2': {name: storage.type.note-length.abc} 461 | patterns: 462 | - include: '#abc-note' 463 | - include: '#abc-rest' 464 | - include: '#abc-space' 465 | - include: '#decoration' 466 | - include: '#macro' 467 | - include: '#operators' 468 | 469 | inline-field: 470 | patterns: 471 | - include: '#inline-instruction' 472 | - comment: Inline Info Fields 473 | name: meta.inline-field.abc 474 | begin: ((?>\[[[:alpha:]&&[^IKPVXr]]:))\s* 475 | beginCaptures: 476 | '1': {name: support.function.inline-field.abc} 477 | contentName: string.unquoted.inline-field.abc 478 | end: \s*((?>\])) 479 | endCaptures: 480 | '1': {name: support.function.inline-field.abc} 481 | - comment: Inline Remark Field 482 | name: meta.inline-field.remark.abc 483 | begin: ((?>\[r:))\s* 484 | beginCaptures: 485 | '1': {name: support.function.inline-field.remark.abc} 486 | contentName: comment.block.remark.abc 487 | end: \s*((?>\])) 488 | endCaptures: 489 | '1': {name: support.function.inline-field.remark.abc} 490 | - comment: Inline Voice Field 491 | name: meta.inline-field.voice.abc 492 | begin: ((?>\[V:))\s* 493 | beginCaptures: 494 | '1': {name: entity.name.tag.inline-field.voice.abc} 495 | contentName: variable.parameter.voice.abc 496 | end: \s*((?>\])) 497 | endCaptures: 498 | '1': {name: entity.name.tag.inline-field.voice.abc} 499 | patterns: 500 | - include: '#escape' 501 | - comment: Inline Part Field 502 | name: meta.inline-field.part.abc 503 | begin: ((?>\[P:))\s* 504 | beginCaptures: 505 | '1': {name: entity.name.tag.inline-field.part.abc} 506 | contentName: variable.parameter.part.abc 507 | end: \s*((?>\])) 508 | endCaptures: 509 | '1': {name: entity.name.tag.inline-field.part.abc} 510 | patterns: 511 | - include: '#escape' 512 | - comment: Inline Title Field 513 | name: meta.inline-field.title.abc 514 | begin: ((?>\[T:))\s* 515 | beginCaptures: 516 | '1': {name: entity.name.tag.inline-field.title.abc} 517 | contentName: string.unquoted.title.abc 518 | end: \s*((?>\])) 519 | endCaptures: 520 | '1': {name: entity.name.tag.inline-field.title.abc} 521 | patterns: 522 | - include: '#escape' 523 | - comment: Inline Key Field 524 | name: meta.inline-field.key.abc 525 | begin: ((?>\[K:)\s*\b([^% \n\r]+)?)\b 526 | beginCaptures: 527 | '1': {name: entity.name.tag.part.abc} 528 | '2': {name: variable.parameter.key.abc} 529 | contentName: string.unquoted.key.abc 530 | end: \s*((?>\])) 531 | endCaptures: 532 | '1': {name: entity.name.tag.inline-field.key.abc} 533 | patterns: 534 | - include: '#escape' 535 | 536 | ## Embedded Content 537 | embedded-content: 538 | patterns: 539 | - comment: Typeset Text 540 | name: meta.typeset.abc 541 | begin: '(%%)(begintext)\b(\s+(?:obeylines|fill|ragged|justify|align|skip))?\b' 542 | beginCaptures: 543 | '1': {name: comment.line.percentage.abc} 544 | '2': {name: support.function.directive.abc} 545 | '3': {name: variable.parameter.directive.abc} 546 | contentName: string.unquoted.typeset.abc 547 | end: '(%%)\s*(endtext)' 548 | endCaptures: 549 | '1': {name: comment.line.percentage.abc} 550 | '2': {name: support.function.directive.abc} 551 | patterns: 552 | - include: '#prototype' 553 | - comment: Embedded HTML 554 | name: meta.html.abc 555 | begin: '(%%)\s*(beginml)\b' 556 | beginCaptures: 557 | '1': {name: comment.line.percentage.abc} 558 | '2': {name: support.function.directive.abc} 559 | end: '(%%)\s*(endml)' 560 | endCaptures: 561 | '1': {name: comment.line.percentage.abc} 562 | '2': {name: support.function.directive.abc} 563 | patterns: 564 | - include: text.html.basic 565 | - include: '#prototype' 566 | - comment: Embedded JavaScript 567 | name: meta.js.abc 568 | begin: '(%%)\s*(beginjs)\b' 569 | beginCaptures: 570 | '1': {name: comment.line.percentage.abc} 571 | '2': {name: support.function.directive.abc} 572 | end: '(%%)\s*(endjs)' 573 | endCaptures: 574 | '1': {name: comment.line.percentage.abc} 575 | '2': {name: support.function.directive.abc} 576 | patterns: 577 | - include: source.js 578 | - include: '#prototype' 579 | - comment: Embedded SVG 580 | name: meta.svg.abc 581 | begin: '(%%)\s*(beginsvg)\b' 582 | beginCaptures: 583 | '1': {name: comment.line.percentage.abc} 584 | '2': {name: support.function.directive.abc} 585 | end: '(%%)\s*(endsvg)' 586 | endCaptures: 587 | '1': {name: comment.line.percentage.abc} 588 | '2': {name: support.function.directive.abc} 589 | patterns: 590 | - include: text.xml 591 | - include: '#prototype' 592 | - comment: Embedded PostScript 593 | name: meta.ps.abc 594 | begin: '(%%)\s*(beginps)(\s+(?:nosvg))?\b' 595 | beginCaptures: 596 | '1': {name: comment.line.percentage.abc} 597 | '2': {name: support.function.directive.abc} 598 | '3': {name: variable.parameter.directive.abc} 599 | end: '(%%)\s*(endps)' 600 | endCaptures: 601 | '1': {name: comment.line.percentage.abc} 602 | '2': {name: support.function.directive.abc} 603 | patterns: 604 | - include: source.postscript 605 | - include: '#prototype' 606 | - comment: Embedded Markdown 607 | begin: '(%%)\s*(beginmd)\b' 608 | beginCaptures: 609 | '1': {name: comment.line.percentage.abc} 610 | '2': {name: support.function.directive.abc} 611 | end: '(%%)\s*(endmd)' 612 | endCaptures: 613 | '1': {name: comment.line.percentage.abc} 614 | '2': {name: support.function.directive.abc} 615 | patterns: 616 | - include: text.html.markdown 617 | - include: '#prototype' 618 | - comment: Inline Postscript Instructions 619 | patterns: 620 | - name: meta.ps.abc 621 | begin: '(%%)\s*(postscript|ps)\b' 622 | beginCaptures: 623 | '1': {name: comment.line.percentage.abc} 624 | '2': {name: support.function.directive.abc} 625 | end: $ 626 | patterns: 627 | - include: source.postscript 628 | - include: '#prototype' 629 | 630 | illegals: 631 | comment: Illegal Syntax 632 | patterns: 633 | - name: meta.code.illegal.abc 634 | match: ([\[]{2,}(?) 12 | )\s*(=\/?|::=) 13 | captures: 14 | '1': {name: entity.name.class.abnf} 15 | '2': {name: keyword.operator.assignment.abnf} 16 | - include: '#rule-items' 17 | - name: meta.comment.line.abnf 18 | begin: '(;)(.*)' 19 | beginCaptures: 20 | '1': {name: punctuation.definition.comment.abnf} 21 | '2': {name: comment.line.semicolon.abnf} 22 | end: $ 23 | 24 | repository: 25 | escapes: 26 | name: constant.character.escape.abnf 27 | match: |- 28 | (?x: 29 | (?:%\h{1,2}(?:[-.]\h{1,2})?) 30 | | (?:%x\h{1,2}(?:[-.]x?\h{1,2})?) 31 | | (?:%d[0-9]{1,2}(?:[-.]d?[0-9]{1,2})?) 32 | | (?:%b[01]{1,2}(?:[-.]b?[01]{1,2})?) 33 | ) 34 | core: 35 | name: support.function.built-in.abnf 36 | match: (?i:WSP|LWSP|ALPHA|DIGIT|HEXDIG|DQUOTE|SP|HTAB|VCHAR|CHAR|OCTET|CTL|CR|LF|CRLF|BIT)\b 37 | rule-id: 38 | name: variable.parameter.abnf 39 | match: |- 40 | (?x: 41 | ((?:[a-zA-Z][-a-zA-Z]*)(?!\s*=\/?|::=))\b 42 | | <((?:[a-zA-Z][-a-zA-Z ]*)(?!\s*=\/?|::=))\b> 43 | ) 44 | terminal-single: 45 | name: meta.string.single.abnf 46 | contentName: string.quoted.single.abnf 47 | begin: (\') 48 | beginCaptures: 49 | '1': {name: punctuation.definition.string.begin.abnf} 50 | end: (\') 51 | endCaptures: 52 | '1': {name: punctuation.definition.string.end.abnf} 53 | terminal-double: 54 | name: meta.string.double.abnf 55 | contentName: string.quoted.double.abnf 56 | begin: (\") 57 | beginCaptures: 58 | '1': {name: punctuation.definition.string.begin.abnf} 59 | end: (\") 60 | endCaptures: 61 | '1': {name: punctuation.definition.string.end.abnf} 62 | terminal-string: 63 | patterns: 64 | - include: '#terminal-single' 65 | - include: '#terminal-double' 66 | alternate: 67 | name: punctuation.separator.abnf 68 | match: ((?(\")(regex)(\")\s*(:))' 81 | beginCaptures: 82 | '1': {name: punctuation.definition.string.begin.gcemode} 83 | '2': {name: keyword.control.regex.gcemode} 84 | '3': {name: punctuation.definition.string.end.gcemode} 85 | '4': {name: punctuation.separator.dictionary.key-value.gcemode} 86 | contentName: meta.structure.dictionary.value.gcemode 87 | end: '(,)|(?=\})' 88 | endCaptures: 89 | '1': {name: punctuation.separator.dictionary.pair.gcemode} 90 | patterns: 91 | - include: '#regexString' 92 | - include: '#array' 93 | # '[^\s\}]' 94 | # - match: '[^\s:\}]' 95 | # name: invalid.illegal.expected-dictionary-separator.gcemode 96 | 97 | string: 98 | comment: Strings 99 | name: string.quoted.double.gcemode 100 | begin: '(")' 101 | beginCaptures: 102 | '1': {name: punctuation.definition.string.begin.gcemode} 103 | end: '(")' 104 | endCaptures: 105 | '1': {name: punctuation.definition.string.end.gcemode} 106 | patterns: 107 | - match: '(?x:\\(?:["\\/bfnrt]|u[0-9a-fA-F]{4}))' 108 | name: constant.character.escape.gcemode 109 | - match: '\\(?!["\\/bfnrt]|u[0-9a-fA-F]{4}).' 110 | name: invalid.illegal.unrecognized-string-escape.gcemode 111 | 112 | regexArray: 113 | name: meta.structure.array.regex.gcemode 114 | begin: '(\[)' 115 | beginCaptures: 116 | '1': {name: punctuation.definition.array.begin.gcemode} 117 | end: '(\])' 118 | endCaptures: 119 | '1': {name: punctuation.definition.array.end.gcemode} 120 | patterns: 121 | - include: '#regexString' 122 | - match: ',' 123 | name: punctuation.separator.array.gcemode 124 | 125 | regexString: 126 | comment: Escaped Regex Strings 127 | name: string.quoted.double.regex.gcemode 128 | begin: '((?!\\)"(?!regex))' 129 | beginCaptures: 130 | '1': {name: punctuation.definition.string.begin.gcemode} 131 | end: '((?!regex|\\)")' 132 | endCaptures: 133 | '1': {name: punctuation.definition.string.end.gcemode} 134 | patterns: 135 | - include: source.escapedregexp 136 | - match: '\\"' 137 | name: constant.character.escape.regexp.gcemode 138 | 139 | value: 140 | patterns: 141 | - include: '#constant' 142 | - include: '#number' 143 | - include: '#string' 144 | - include: '#array' 145 | - include: '#object' 146 | ... 147 | -------------------------------------------------------------------------------- /yaml/RELAX NG Compact.YAML-tmLanguage: -------------------------------------------------------------------------------- 1 | # [PackageDev] target_format: plist, ext: tmLanguage 2 | --- 3 | # RelaxNG Compact: XML Schema definition Language 4 | name: RELAX NG Compact 5 | scopeName: source.rnc 6 | fileTypes: [rnc] 7 | uuid: 85F32571-780F-4AAC-BA70-C2229E0B1BDA 8 | patterns: 9 | - foldingStartMarker: \{\s*$ 10 | - foldingStopMarker: ^\s*\} 11 | - comment: Operation characters 12 | match: '[=,&|?*+\\]' 13 | name: constant.character.rnc 14 | - comment: Comments 15 | name: comment.line.number-sign.rnc 16 | match: '#[^#].*$' 17 | - comment: Annotations 18 | name: support.class.rnc 19 | match: '##.*$' 20 | - comment: Top-level control 21 | name: keyword.control.rnc 22 | match: \bstart\b 23 | - comment: Reserved operators 24 | name: keyword.operator.rnc 25 | match: \b(parent|externalRef|grammar|div|include|namespace|default|datatypes)\b 26 | - comment: RELAX NG named datatypes 27 | name: storage.type.rnc 28 | match: \b(list|mixed|notAllowed|text|token|empty)\b 29 | - comment: XML Schema datatypes 30 | name: storage.type.rnc 31 | match: \b(xsd\:(string|boolean|float|double|decimal|date(Time)?|duration|hexBinary|base64Binary|anyURI|ID(REF(S)?)?|ENTIT(Y|IES)|NOTATION|normalizedString|token|language|IDREFS|NMTOKEN(S)?|(Q|NC)?Name|integer|nonNegativeInteger|positiveInteger|nonPositiveInteger|negativeInteger|byte|int|long|short|unsignedByte|unsignedInt|unsignedLong|unsignedShort|time|gYearMonth|gYear|gMonthDay|gDay|gMonth))\b 32 | - comment: Namespaces 33 | name: variable.parameter.rnc 34 | match: \b(xmlns:[a-zA-Z][a-zA-Z0-9_]*)\b 35 | - comment: Inline annotations and embedded elements 36 | name: entity.other.inherited-class.rnc 37 | match: \b([a-zA-Z][a-zA-Z0-9_]*:[a-zA-Z][a-zA-Z0-9_]*)\b 38 | - comment: Attribute rule 39 | name: meta.declaration.attribute.rnc 40 | match: \b(attribute)\b\s+\b(([a-zA-Z][a-zA-Z0-9_]*:)?[a-zA-Z][a-zA-Z_0-9]*)\b\s*\{ 41 | captures: 42 | '1': {name: keyword.operator.rnc} 43 | '2': {name: variable.parameter.rnc} 44 | '3': {name: variable.parameter.rnc} 45 | - comment: Element rule 46 | name: meta.declaration.element.rnc 47 | match: \b(element)\b\s+\b(([a-zA-Z][a-zA-Z0-9_]*:)?[a-zA-Z][a-zA-Z_0-9]*)\b\s*\{ 48 | captures: 49 | '1': {name: keyword.operator.rnc} 50 | '2': {name: variable.parameter.rnc} 51 | '3': {name: variable.parameter.rnc} 52 | - comment: Double-quoted string 53 | name: string.quoted.double.rnc 54 | begin: (") 55 | end: (") 56 | patterns: 57 | - name: constant.character.escape.rnc 58 | match: \\. 59 | - comment: Single-quoted string 60 | name: string.quoted.single.rnc 61 | begin: "(')" 62 | end: "(')" 63 | patterns: 64 | - match: \\. 65 | name: constant.character.escape.rnc 66 | - comment: Triple-double-quoted string 67 | name: string.quoted.triple.rnc 68 | begin: '(""")' 69 | end: '(""")' 70 | patterns: 71 | - match: \\. 72 | name: constant.character.escape.rnc 73 | - comment: Triple-single-quoted string 74 | name: string.quoted.triple.rnc 75 | begin: "(''')" 76 | end: "(''')" 77 | patterns: 78 | - match: \\. 79 | name: constant.character.escape.rnc 80 | - comment: Nesting embedded annotations and named elements 81 | name: support.class.rnc 82 | begin: '(\[)\s*' 83 | beginCaptures: 84 | '1': {name: support.class.annotation.rnc} 85 | end: '\s*(\])' 86 | patterns: 87 | - include: $self 88 | - match: \\. 89 | name: constant.character.escape.rnc 90 | - comment: RELAX NG named rule 91 | name: meta.grammar.production.rnc 92 | match: \b([a-zA-Z][a-zA-Z_0-9\.]*)\s*= 93 | captures: 94 | '1': {name: variable.parameter.rnc} 95 | - comment: Unclosed grouping characters 96 | name: invalid.illegal.rnc 97 | match: '[\]})]' 98 | --------------------------------------------------------------------------------