Skip to content

Commit d991894

Browse files
committed
Docstring highlighting.
1 parent 96f72cc commit d991894

File tree

19 files changed

+1231
-71
lines changed

19 files changed

+1231
-71
lines changed

grammars/MagicPython.YAML-tmLanguage

Lines changed: 86 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ repository:
6868

6969
comments:
7070
name: comment.line.number-sign.python
71-
match: (\#)\s*(BUG|FIXME|TODO|XXX|NB)?.*
71+
match: (\#)\s*(BUG|FIXME|TODO|XXX|NB)?.*$
7272
captures:
7373
'1': {name: punctuation.definition.comment.python}
7474
'2': {name: comment.line.note.notation.python}
@@ -80,6 +80,91 @@ repository:
8080
- include: '#statement-keyword'
8181
- include: '#assignment-operator'
8282
- include: '#decorator'
83+
- include: '#docstring-block'
84+
- include: '#docstring-module'
85+
86+
docstring-block:
87+
begin: (?<=:)
88+
end: |
89+
(?x)
90+
(?! \s | \# | [rR]?(\'\'\'|\"\"\") | $)
91+
|
92+
(?<=\'\'\'|\"\"\")
93+
endCaptures:
94+
'1': {name: punctuation.definition.string.end.python}
95+
patterns:
96+
- include: '#comments'
97+
- include: '#docstring'
98+
99+
docstring-module:
100+
begin: ^(?=[rR]?(\'\'\'|\"\"\"))
101+
end: (?<=\'\'\'|\"\"\")
102+
patterns:
103+
- include: '#docstring'
104+
105+
docstring:
106+
patterns:
107+
- name: string.quoted.docstring.python
108+
begin: (\'\'\')
109+
end: (\'\'\')
110+
beginCaptures:
111+
'1': {name: punctuation.definition.string.begin.python}
112+
endCaptures:
113+
'1': {name: punctuation.definition.string.end.python}
114+
patterns:
115+
- include: '#docstring-guts-unicode'
116+
117+
- name: string.quoted.docstring.raw.python
118+
begin: ([rR])(\'\'\')
119+
end: (\'\'\')
120+
beginCaptures:
121+
'1': {name: storage.type.string.python}
122+
'2': {name: punctuation.definition.string.begin.python}
123+
endCaptures:
124+
'1': {name: punctuation.definition.string.end.python}
125+
patterns:
126+
- include: '#docstring-guts-raw'
127+
128+
- name: string.quoted.docstring.python
129+
begin: (\"\"\")
130+
end: (\"\"\")
131+
beginCaptures:
132+
'1': {name: punctuation.definition.string.begin.python}
133+
endCaptures:
134+
'1': {name: punctuation.definition.string.end.python}
135+
patterns:
136+
- include: '#docstring-guts-unicode'
137+
138+
- name: string.quoted.docstring.raw.python
139+
begin: ([rR])(\"\"\")
140+
end: (\"\"\")
141+
beginCaptures:
142+
'1': {name: storage.type.string.python}
143+
'2': {name: punctuation.definition.string.begin.python}
144+
endCaptures:
145+
'1': {name: punctuation.definition.string.end.python}
146+
patterns:
147+
- include: '#docstring-guts-raw'
148+
149+
docstring-guts-unicode:
150+
patterns:
151+
- include: '#escape-sequence-unicode'
152+
- include: '#escape-sequence'
153+
- include: '#string-line-continuation'
154+
- include: '#docstring-guts-common'
155+
156+
docstring-guts-raw:
157+
patterns:
158+
- include: '#escape-sequence'
159+
- include: '#string-line-continuation'
160+
- include: '#docstring-guts-common'
161+
162+
docstring-guts-common:
163+
begin: (>>>|\.\.\.)
164+
end: $
165+
patterns:
166+
- include: '#statement'
167+
- include: '#expression'
83168

84169
statement-keyword:
85170
patterns:

grammars/MagicPython.cson

Lines changed: 144 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ patterns: [
2525
repository:
2626
comments:
2727
name: "comment.line.number-sign.python"
28-
match: "(\\#)\\s*(BUG|FIXME|TODO|XXX|NB)?.*"
28+
match: "(\\#)\\s*(BUG|FIXME|TODO|XXX|NB)?.*$"
2929
captures:
3030
"1":
3131
name: "punctuation.definition.comment.python"
@@ -48,6 +48,149 @@ repository:
4848
{
4949
include: "#decorator"
5050
}
51+
{
52+
include: "#docstring-block"
53+
}
54+
{
55+
include: "#docstring-module"
56+
}
57+
]
58+
"docstring-block":
59+
begin: "(?<=:)"
60+
end: '''
61+
(?x)
62+
(?! \\s | \\# | [rR]?(\\'\\'\\'|\\"\\"\\") | $)
63+
|
64+
(?<=\\'\\'\\'|\\"\\"\\")
65+
66+
'''
67+
endCaptures:
68+
"1":
69+
name: "punctuation.definition.string.end.python"
70+
patterns: [
71+
{
72+
include: "#comments"
73+
}
74+
{
75+
include: "#docstring"
76+
}
77+
]
78+
"docstring-module":
79+
begin: "^(?=[rR]?(\\'\\'\\'|\\\"\\\"\\\"))"
80+
end: "(?<=\\'\\'\\'|\\\"\\\"\\\")"
81+
patterns: [
82+
{
83+
include: "#docstring"
84+
}
85+
]
86+
docstring:
87+
patterns: [
88+
{
89+
name: "string.quoted.docstring.python"
90+
begin: "(\\'\\'\\')"
91+
end: "(\\'\\'\\')"
92+
beginCaptures:
93+
"1":
94+
name: "punctuation.definition.string.begin.python"
95+
endCaptures:
96+
"1":
97+
name: "punctuation.definition.string.end.python"
98+
patterns: [
99+
{
100+
include: "#docstring-guts-unicode"
101+
}
102+
]
103+
}
104+
{
105+
name: "string.quoted.docstring.raw.python"
106+
begin: "([rR])(\\'\\'\\')"
107+
end: "(\\'\\'\\')"
108+
beginCaptures:
109+
"1":
110+
name: "storage.type.string.python"
111+
"2":
112+
name: "punctuation.definition.string.begin.python"
113+
endCaptures:
114+
"1":
115+
name: "punctuation.definition.string.end.python"
116+
patterns: [
117+
{
118+
include: "#docstring-guts-raw"
119+
}
120+
]
121+
}
122+
{
123+
name: "string.quoted.docstring.python"
124+
begin: "(\\\"\\\"\\\")"
125+
end: "(\\\"\\\"\\\")"
126+
beginCaptures:
127+
"1":
128+
name: "punctuation.definition.string.begin.python"
129+
endCaptures:
130+
"1":
131+
name: "punctuation.definition.string.end.python"
132+
patterns: [
133+
{
134+
include: "#docstring-guts-unicode"
135+
}
136+
]
137+
}
138+
{
139+
name: "string.quoted.docstring.raw.python"
140+
begin: "([rR])(\\\"\\\"\\\")"
141+
end: "(\\\"\\\"\\\")"
142+
beginCaptures:
143+
"1":
144+
name: "storage.type.string.python"
145+
"2":
146+
name: "punctuation.definition.string.begin.python"
147+
endCaptures:
148+
"1":
149+
name: "punctuation.definition.string.end.python"
150+
patterns: [
151+
{
152+
include: "#docstring-guts-raw"
153+
}
154+
]
155+
}
156+
]
157+
"docstring-guts-unicode":
158+
patterns: [
159+
{
160+
include: "#escape-sequence-unicode"
161+
}
162+
{
163+
include: "#escape-sequence"
164+
}
165+
{
166+
include: "#string-line-continuation"
167+
}
168+
{
169+
include: "#docstring-guts-common"
170+
}
171+
]
172+
"docstring-guts-raw":
173+
patterns: [
174+
{
175+
include: "#escape-sequence"
176+
}
177+
{
178+
include: "#string-line-continuation"
179+
}
180+
{
181+
include: "#docstring-guts-common"
182+
}
183+
]
184+
"docstring-guts-common":
185+
begin: "(>>>|\\.\\.\\.)"
186+
end: "$"
187+
patterns: [
188+
{
189+
include: "#statement"
190+
}
191+
{
192+
include: "#expression"
193+
}
51194
]
52195
"statement-keyword":
53196
patterns: [

0 commit comments

Comments
 (0)