annotate vendor/github.com/alecthomas/chroma/v2/lexers/org.go @ 66:787b5ee0289d draft

Use vendored modules Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
author yakumo.izuru
date Sun, 23 Jul 2023 13:18:53 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
66
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
1 package lexers
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
2
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
3 import (
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
4 . "github.com/alecthomas/chroma/v2" // nolint
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
5 )
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
6
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
7 // Org mode lexer.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
8 var Org = Register(MustNewLexer(
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
9 &Config{
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
10 Name: "Org Mode",
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
11 Aliases: []string{"org", "orgmode"},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
12 Filenames: []string{"*.org"},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
13 MimeTypes: []string{"text/org"}, // https://lists.gnu.org/r/emacs-orgmode/2017-09/msg00087.html
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
14 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
15 orgRules,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
16 ))
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
17
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
18 func orgRules() Rules {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
19 return Rules{
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
20 "root": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
21 {`^# .*$`, Comment, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
22 // Headings
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
23 {`^(\*)( COMMENT)( .*)$`, ByGroups(GenericHeading, NameEntity, GenericStrong), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
24 {`^(\*\*+)( COMMENT)( .*)$`, ByGroups(GenericSubheading, NameEntity, Text), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
25 {`^(\*)( DONE)( .*)$`, ByGroups(GenericHeading, LiteralStringRegex, GenericStrong), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
26 {`^(\*\*+)( DONE)( .*)$`, ByGroups(GenericSubheading, LiteralStringRegex, Text), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
27 {`^(\*)( TODO)( .*)$`, ByGroups(GenericHeading, Error, GenericStrong), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
28 {`^(\*\*+)( TODO)( .*)$`, ByGroups(GenericSubheading, Error, Text), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
29 {`^(\*)( .+?)( :[a-zA-Z0-9_@:]+:)$`, ByGroups(GenericHeading, GenericStrong, GenericEmph), nil}, // Level 1 heading with tags
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
30 {`^(\*)( .+)$`, ByGroups(GenericHeading, GenericStrong), nil}, // // Level 1 heading with NO tags
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
31 {`^(\*\*+)( .+?)( :[a-zA-Z0-9_@:]+:)$`, ByGroups(GenericSubheading, Text, GenericEmph), nil}, // Level 2+ heading with tags
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
32 {`^(\*\*+)( .+)$`, ByGroups(GenericSubheading, Text), nil}, // Level 2+ heading with NO tags
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
33 // Checkbox lists
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
34 {`^( *)([+-] )(\[[ X]\])( .+)$`, ByGroups(Text, Keyword, Keyword, UsingSelf("inline")), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
35 {`^( +)(\* )(\[[ X]\])( .+)$`, ByGroups(Text, Keyword, Keyword, UsingSelf("inline")), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
36 // Definition lists
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
37 {`^( *)([+-] )([^ \n]+ ::)( .+)$`, ByGroups(Text, Keyword, Keyword, UsingSelf("inline")), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
38 {`^( +)(\* )([^ \n]+ ::)( .+)$`, ByGroups(Text, Keyword, Keyword, UsingSelf("inline")), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
39 // Unordered lists
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
40 {`^( *)([+-] )(.+)$`, ByGroups(Text, Keyword, UsingSelf("inline")), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
41 {`^( +)(\* )(.+)$`, ByGroups(Text, Keyword, UsingSelf("inline")), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
42 // Ordered lists
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
43 {`^( *)([0-9]+[.)])( \[@[0-9]+\])( .+)$`, ByGroups(Text, Keyword, GenericEmph, UsingSelf("inline")), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
44 {`^( *)([0-9]+[.)])( .+)$`, ByGroups(Text, Keyword, UsingSelf("inline")), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
45 // Dynamic Blocks
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
46 {`(?i)^( *#\+begin: )([^ ]+)([\w\W]*?\n)([\w\W]*?)(^ *#\+end: *$)`, ByGroups(Comment, CommentSpecial, Comment, UsingSelf("inline"), Comment), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
47 // Blocks
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
48 // - Comment Blocks
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
49 {`(?i)^( *#\+begin_comment *\n)([\w\W]*?)(^ *#\+end_comment *$)`, ByGroups(Comment, Comment, Comment), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
50 // - Src Blocks
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
51 {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
52 `(?i)^( *#\+begin_src )([^ \n]+)(.*?\n)([\w\W]*?)(^ *#\+end_src *$)`,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
53 UsingByGroup(2, 4, Comment, CommentSpecial, Comment, Text, Comment),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
54 nil,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
55 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
56 // - Export Blocks
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
57 {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
58 `(?i)^( *#\+begin_export )(\w+)( *\n)([\w\W]*?)(^ *#\+end_export *$)`,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
59 UsingByGroup(2, 4, Comment, CommentSpecial, Text, Text, Comment),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
60 nil,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
61 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
62 // - Org Special, Example, Verse, etc. Blocks
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
63 {`(?i)^( *#\+begin_)(\w+)( *\n)([\w\W]*?)(^ *#\+end_\2)( *$)`, ByGroups(Comment, Comment, Text, Text, Comment, Text), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
64 // Keywords
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
65 {`^(#\+\w+)(:.*)$`, ByGroups(CommentSpecial, Comment), nil}, // Other Org keywords like #+title
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
66 // Properties and Drawers
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
67 {`(?i)^( *:\w+: *\n)([\w\W]*?)(^ *:end: *$)`, ByGroups(Comment, CommentSpecial, Comment), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
68 // Line break operator
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
69 {`^(.*)(\\\\)$`, ByGroups(UsingSelf("inline"), Operator), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
70 // Deadline/Scheduled
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
71 {`(?i)^( *(?:DEADLINE|SCHEDULED): )(<[^<>]+?> *)$`, ByGroups(Comment, CommentSpecial), nil}, // DEADLINE/SCHEDULED: <datestamp>
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
72 // DONE state CLOSED
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
73 {`(?i)^( *CLOSED: )(\[[^][]+?\] *)$`, ByGroups(Comment, CommentSpecial), nil}, // CLOSED: [datestamp]
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
74 // All other lines
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
75 Include("inline"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
76 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
77 "inline": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
78 {`(\s)*(\*[^ \n*][^*]+?[^ \n*]\*)((?=\W|\n|$))`, ByGroups(Text, GenericStrong, Text), nil}, // Bold
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
79 {`(\s)*(/[^/]+?/)((?=\W|\n|$))`, ByGroups(Text, GenericEmph, Text), nil}, // Italic
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
80 {`(\s)*(=[^\n=]+?=)((?=\W|\n|$))`, ByGroups(Text, NameClass, Text), nil}, // Verbatim
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
81 {`(\s)*(~[^\n~]+?~)((?=\W|\n|$))`, ByGroups(Text, NameClass, Text), nil}, // Code
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
82 {`(\s)*(\+[^+]+?\+)((?=\W|\n|$))`, ByGroups(Text, GenericDeleted, Text), nil}, // Strikethrough
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
83 {`(\s)*(_[^_]+?_)((?=\W|\n|$))`, ByGroups(Text, GenericUnderline, Text), nil}, // Underline
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
84 {`(<)([^<>]+?)(>)`, ByGroups(Text, String, Text), nil}, // <datestamp>
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
85 {`[{]{3}[^}]+[}]{3}`, NameBuiltin, nil}, // {{{macro(foo,1)}}}
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
86 {`([^[])(\[fn:)([^]]+?)(\])([^]])`, ByGroups(Text, NameBuiltinPseudo, LiteralString, NameBuiltinPseudo, Text), nil}, // [fn:1]
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
87 // Links
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
88 {`(\[\[)([^][]+?)(\]\[)([^][]+)(\]\])`, ByGroups(Text, NameAttribute, Text, NameTag, Text), nil}, // [[link][descr]]
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
89 {`(\[\[)([^][]+?)(\]\])`, ByGroups(Text, NameAttribute, Text), nil}, // [[link]]
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
90 {`(<<)([^<>]+?)(>>)`, ByGroups(Text, NameAttribute, Text), nil}, // <<targetlink>>
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
91 // Tables
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
92 {`^( *)(\|[ -].*?[ -]\|)$`, ByGroups(Text, String), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
93 // Blank lines, newlines
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
94 {`\n`, Text, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
95 // Any other text
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
96 {`.`, Text, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
97 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
98 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
99 }