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 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