blob: 89c8de31b40b7a56d034fc73773be615e9f280a6 [file] [log] [blame]
Luca Saccarola06848002024-11-14 22:44:14 +01001" Vim syntax file
2" Language: Org
3" Maintainer: Luca Saccarola <github.e41mv@aleeas.com>
4" Last Change: 2024 Nov 14
5"
6" Reference Specification: Org mode manual
7" GNU Info: `$ info Org`
8" Web: <https://orgmode.org/manual/index.html>
9
10" Quit when a (custom) syntax file was already loaded
11if exists("b:current_syntax")
12 finish
13endif
14let b:current_syntax = 'org'
15
16syn case ignore
17
18" Bold
19syn region orgBold matchgroup=orgBoldDelimiter start="\(^\|[- '"({\]]\)\@<=\*\ze[^ ]" end="^\@!\*\([^\k\*]\|$\)\@=" keepend
20hi def link orgBold markdownBold
21hi def link orgBoldDelimiter orgBold
22
23" Italic
24syn region orgItalic matchgroup=orgItalicDelimiter start="\(^\|[- '"({\]]\)\@<=\/\ze[^ ]" end="^\@!\/\([^\k\/]\|$\)\@=" keepend
25hi def link orgItalic markdownItalic
26hi def link orgItalicDelimiter orgItalic
27
28" Strikethrogh
29syn region orgStrikethrough matchgroup=orgStrikethroughDelimiter start="\(^\|[ '"({\]]\)\@<=+\ze[^ ]" end="^\@!+\([^\k+]\|$\)\@=" keepend
30hi def link orgStrikethrough markdownStrike
31hi def link orgStrikethroughDelimiter orgStrikethrough
32
33" Underline
34syn region orgUnderline matchgroup=orgUnderlineDelimiter start="\(^\|[- '"({\]]\)\@<=_\ze[^ ]" end="^\@!_\([^\k_]\|$\)\@=" keepend
35
36" Headlines
37syn match orgHeadline "^\*\+\s\+.*$" keepend
38hi def link orgHeadline Title
39
40" Line Comment
41syn match orgLineComment /^\s*#\s\+.*$/ keepend
42hi def link orgLineComment Comment
43
44" Block Comment
45syn region orgBlockComment matchgroup=orgBlockCommentDelimiter start="\c^\s*#+BEGIN_COMMENT" end="\c^\s*#+END_COMMENT" keepend
46hi def link orgBlockComment Comment
47hi def link orgBlockCommentDelimiter Comment
48
49" Lists
50syn match orgUnorderedListMarker "^\s*[-+]\s\+" keepend
51hi def link orgUnorderedListMarker markdownOrderedListMarker
52syn match orgOrderedListMarker "^\s*\(\d\|\a\)\+[.)]\s\+" keepend
53hi def link orgOrderedListMarker markdownOrderedListMarker
54"
55" Verbatim
56syn region orgVerbatimInline matchgroup=orgVerbatimInlineDelimiter start="\(^\|[- '"({\]]\)\@<==\ze[^ ]" end="^\@!=\([^\k=]\|$\)\@=" keepend
57hi def link orgVerbatimInline markdownCodeBlock
58hi def link orgVerbatimInlineDelimiter orgVerbatimInline
59syn region orgVerbatimBlock matchgroup=orgVerbatimBlockDelimiter start="\c^\s*#+BEGIN_.*" end="\c^\s*#+END_.*" keepend
60hi def link orgVerbatimBlock orgCode
61hi def link orgVerbatimBlockDelimiter orgVerbatimBlock
62
63" Code
64syn region orgCodeInline matchgroup=orgCodeInlineDelimiter start="\(^\|[- '"({\]]\)\@<=\~\ze[^ ]" end="^\@!\~\([^\k\~]\|$\)\@=" keepend
65highlight def link orgCodeInline markdownCodeBlock
66highlight def link orgCodeInlineDelimiter orgCodeInline
67syn region orgCodeBlock matchgroup=orgCodeBlockDelimiter start="\c^\s*#+BEGIN_SRC.*" end="\c^\s*#+END_SRC" keepend
68highlight def link orgCodeBlock markdownCodeBlock
69highlight def link orgCodeBlockDelimiter orgCodeBlock
70
71" vim: ts=8 sts=2 sw=2 et