Created
May 25, 2019 18:02
-
-
Save bricewge/25edc5f66404dee2fe19bf90c205a29c to your computer and use it in GitHub Desktop.
Syntax for org-mode in .sublime-syntax format
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| %YAML 1.2 | |
| --- | |
| # http://www.sublimetext.com/docs/3/syntax.html | |
| name: orgmode | |
| file_extensions: | |
| - org | |
| scope: text.orgmode | |
| contexts: | |
| main: | |
| - match: |- | |
| (?x) | |
| ^(\*+) # leading stars | |
| \s*([A-Z_]{2,})? # todo keywords | |
| \s*(\[\#[A-Ca-c]\])? # priority | |
| \s*(?=\s+[A-Za-z0-9]+) # expected heading text | |
| comment: Outline headings | |
| captures: | |
| 1: punctuation.definition.heading.orgmode | |
| 2: keyword.other.todo.orgmode | |
| 3: constant.other.priority.orgmode | |
| push: | |
| - meta_scope: markup.heading.orgmode | |
| - meta_content_scope: entity.name.section.orgmode | |
| - match: (?=\s*$\n?) | |
| pop: true | |
| - include: heading-inline | |
| - match: "^-{5,}$" | |
| scope: meta.separator.orgmode | |
| - match: '^\s*([-+]|\s+\*)\s+(.*?)\s+::' | |
| captures: | |
| 1: keyword.operator.list.orgmode | |
| 2: markup.bold.definition.orgmode | |
| push: | |
| - meta_scope: meta.list.definition.orgmode | |
| - match: $ | |
| pop: true | |
| - include: inline | |
| - match: '^\s*?([-+]|\s+\*|\d+[).])' | |
| captures: | |
| 1: keyword.operator.list.orgmode | |
| push: | |
| - meta_scope: meta.list.plain.orgmode | |
| - match: $ | |
| pop: true | |
| - include: list-inline | |
| - match: (?i)^#\+(BEGIN_(QUOTE|VERSE|CENTER))$ | |
| captures: | |
| 1: keyword.control.block.orgmode | |
| push: | |
| - meta_scope: markup.quote.orgmode | |
| - match: (?i)^#\+(END_\2)$ | |
| captures: | |
| 1: keyword.control.block.orgmode | |
| pop: true | |
| - match: "^#[^+].*$" | |
| scope: comment.line.number-sign.orgmode | |
| - match: ^:(PROPERTIES):$ | |
| captures: | |
| 1: keyword.control.drawer.orgmode | |
| push: | |
| - meta_scope: meta.drawer.properties.orgmode | |
| - match: ^:(END):$ | |
| captures: | |
| 1: keyword.control.drawer.orgmode | |
| pop: true | |
| - include: properties | |
| - match: ^:(.+):$ | |
| captures: | |
| 1: keyword.control.drawer.orgmode | |
| push: | |
| - meta_scope: meta.drawer.other.orgmode | |
| - match: ^:(END):$ | |
| captures: | |
| 1: keyword.control.drawer.orgmode | |
| pop: true | |
| - match: (?i)#\+(BEGIN_LaTeX)$ | |
| captures: | |
| 1: keyword.control.block.orgmode | |
| push: | |
| - meta_scope: meta.block.latex.orgmode | |
| - match: (?i)#\+(END_LaTeX)$ | |
| captures: | |
| 1: keyword.control.block.orgmode | |
| pop: true | |
| - include: scope:text.tex.latex | |
| - match: (?i)#\+(BEGIN_HTML)$ | |
| captures: | |
| 1: keyword.control.block.orgmode | |
| push: | |
| - meta_scope: meta.block.html.orgmode | |
| - match: (?i)#\+(END_HTML)$ | |
| captures: | |
| 1: keyword.control.block.orgmode | |
| pop: true | |
| - include: scope:text.html.basic | |
| - match: (?i)#\+(BEGIN_SRC)\s+(python)\s*(.*)$ | |
| captures: | |
| 1: keyword.control.block.orgmode | |
| 2: constant.other.language.orgmode | |
| 3: string.other.header-args.orgmode | |
| push: | |
| - meta_scope: meta.block.source.python.orgmode | |
| - match: (?i)#\+(END_SRC)$ | |
| captures: | |
| 1: keyword.control.block.orgmode | |
| pop: true | |
| - include: scope:source.python | |
| - match: (?i)#\+(BEGIN_SRC)\s+(ruby)\s*(.*)$ | |
| captures: | |
| 1: keyword.control.block.orgmode | |
| 2: constant.other.language.orgmode | |
| 3: string.other.header-args.orgmode | |
| push: | |
| - meta_scope: meta.block.source.ruby.orgmode | |
| - match: (?i)#\+(END_SRC)$ | |
| captures: | |
| 1: keyword.control.block.orgmode | |
| pop: true | |
| - include: scope:source.ruby | |
| - match: (?i)#\+(BEGIN_SRC)\s+((?:emacs-)?lisp)\s*(.*)$ | |
| captures: | |
| 1: keyword.control.block.orgmode | |
| 2: constant.other.language.orgmode | |
| 3: string.other.header-args.orgmode | |
| push: | |
| - meta_scope: meta.block.source.lisp.orgmode | |
| - match: (?i)#\+(END_SRC)$ | |
| captures: | |
| 1: keyword.control.block.orgmode | |
| pop: true | |
| - include: scope:source.lisp | |
| - match: (?i)#\+(BEGIN_SRC)\s+(sh)\s*(.*)$ | |
| captures: | |
| 1: keyword.control.block.orgmode | |
| 2: constant.other.language.orgmode | |
| 3: string.other.header-args.orgmode | |
| push: | |
| - meta_scope: meta.block.source.shell.orgmode | |
| - match: (?i)#\+(END_SRC)$ | |
| captures: | |
| 1: keyword.control.block.orgmode | |
| pop: true | |
| - include: scope:source.shell | |
| - match: '(?i)#\+(BEGIN_(SRC|EXAMPLE))(?:\s+([\w-]+)?\s*(.*))?$' | |
| captures: | |
| 1: keyword.control.block.orgmode | |
| 3: constant.other.language.orgmode | |
| 4: string.other.header-args.orgmode | |
| push: | |
| - meta_scope: meta.block.source.other.orgmode | |
| - meta_content_scope: markup.raw.block.orgmode | |
| - match: (?i)#\+(END_\2)$ | |
| captures: | |
| 1: keyword.control.block.orgmode | |
| pop: true | |
| - match: '#\+(OPTIONS):' | |
| captures: | |
| 1: keyword.control.pragma.orgmode | |
| push: | |
| - meta_scope: meta.pragma.options.orgmode | |
| - match: $ | |
| pop: true | |
| - match: '([^\s]+):([^\s]+)' | |
| scope: meta.option.orgmode | |
| captures: | |
| 1: variable.parameter.option.orgmode | |
| 2: string.other.option.orgmode | |
| - match: '#\+(CALL):\s+[A-Za-z-]+(?:\[([^\]]*)\])?\(?' | |
| captures: | |
| 1: keyword.control.pragma.orgmode | |
| 2: string.other.header-args.orgmode | |
| push: | |
| - meta_scope: meta.pragma.call.orgmode | |
| - match: '\)?([^)]*)$' | |
| captures: | |
| 1: string.other.header-args.orgmode | |
| pop: true | |
| - match: (\w+)= | |
| scope: meta.assignment.orgmode | |
| captures: | |
| 1: variable.parameter.header-args.orgmode | |
| - match: '^#\+([a-zA-Z_-]+): ?(.*)$' | |
| scope: meta.pragma.orgmode | |
| captures: | |
| 1: keyword.control.pragma.orgmode | |
| 2: string.unquoted.pragma.orgmode | |
| - include: inline | |
| heading-inline: | |
| - match: ':([^:^\s]*)(?=:)' | |
| scope: meta.keyword.orgmode | |
| captures: | |
| 1: string.quoted.keyword.orgmode | |
| - include: inline | |
| inline: | |
| - match: '(?<=^|[.,:;\s])/[^/]+/(?=$|[.,:;\s])' | |
| scope: markup.italic.orgmode | |
| - match: '(?<=^|[.,:;\s])\*[^*]+\*(?=$|[.,:;\s])' | |
| scope: markup.bold.orgmode | |
| - match: '(?<=^|[.,:;\s])_[^_]+_(?=$|[.,:;\s])' | |
| scope: markup.underline.orgmode | |
| - match: '(?<=^|[.,:;\s])([~=]).+?\1(?=$|[.,:;\s])' | |
| scope: markup.raw.inline.orgmode | |
| - match: '\[(?:\[([^\]]*)\])?\[([^\]]*)\]\]' | |
| scope: meta.link.orgmode | |
| captures: | |
| 1: markup.underline.link.orgmode | |
| 2: string.other.link.orgmode | |
| - match: (?:http|ftp)s?:\/\/\S+ | |
| scope: markup.underline.url.orgmode | |
| list-inline: | |
| - match: '\[[ -X]\]' | |
| scope: keyword.operator.checkbox.orgmode | |
| - include: inline | |
| properties: | |
| - match: '^:([A-Za-z_]+):\s(.*)$' | |
| scope: meta.property.orgmode | |
| captures: | |
| 1: keyword.control.property.orgmode | |
| 2: string.unquoted.propval.orgmode |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment