Skip to content

Commit 50a61a9

Browse files
committed
Don't try to highlight python in docstrings; Simply highlight '>>>' and '...'
1 parent 8ec2d4c commit 50a61a9

File tree

7 files changed

+98
-155
lines changed

7 files changed

+98
-155
lines changed

grammars/MagicPython.YAML-tmLanguage

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ repository:
112112
endCaptures:
113113
'1': {name: punctuation.definition.string.end.python}
114114
patterns:
115+
- include: '#docstring-guts-common'
115116
- include: '#docstring-guts-unicode'
116-
- include: '#docstring-guts-common-single'
117117

118118
- name: string.quoted.docstring.raw.python
119119
begin: ([rR])(\'\'\')
@@ -124,8 +124,8 @@ repository:
124124
endCaptures:
125125
'1': {name: punctuation.definition.string.end.python}
126126
patterns:
127+
- include: '#docstring-guts-common'
127128
- include: '#docstring-guts-raw'
128-
- include: '#docstring-guts-common-single'
129129

130130
- name: string.quoted.docstring.python
131131
begin: (\"\"\")
@@ -135,8 +135,8 @@ repository:
135135
endCaptures:
136136
'1': {name: punctuation.definition.string.end.python}
137137
patterns:
138+
- include: '#docstring-guts-common'
138139
- include: '#docstring-guts-unicode'
139-
- include: '#docstring-guts-common-double'
140140

141141
- name: string.quoted.docstring.raw.python
142142
begin: ([rR])(\"\"\")
@@ -147,8 +147,8 @@ repository:
147147
endCaptures:
148148
'1': {name: punctuation.definition.string.end.python}
149149
patterns:
150+
- include: '#docstring-guts-common'
150151
- include: '#docstring-guts-raw'
151-
- include: '#docstring-guts-common-double'
152152

153153
docstring-guts-unicode:
154154
patterns:
@@ -161,19 +161,15 @@ repository:
161161
- include: '#escape-sequence'
162162
- include: '#string-line-continuation'
163163

164-
docstring-guts-common-single:
165-
begin: (>>>|\.\.\.)
166-
end: ($|(?=\'\'\'))
167-
patterns:
168-
- include: '#statement'
169-
- include: '#expression'
170-
171-
docstring-guts-common-double:
172-
begin: (>>>|\.\.\.)
173-
end: ($|(?=\"\"\"))
174-
patterns:
175-
- include: '#statement'
176-
- include: '#expression'
164+
docstring-guts-common:
165+
match: |
166+
(?x)
167+
(?:
168+
(?:^|\G) \s* (?# '\G' is necessary for ST)
169+
((?:>>>|\.\.\.) \s)
170+
)
171+
captures:
172+
'1': {name: keyword.control.flow.python}
177173

178174
statement-keyword:
179175
patterns:
@@ -281,7 +277,7 @@ repository:
281277
|
282278
(?! ([rR]? (\'\'\'|\"\"\"))
283279
|
284-
(\G $)
280+
(\G $) (?# '\G' is necessary for ST)
285281
)
286282
beginCaptures:
287283
'1': {name: separator.continuation.line.python}

grammars/MagicPython.cson

Lines changed: 21 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,10 @@ repository:
9797
name: "punctuation.definition.string.end.python"
9898
patterns: [
9999
{
100-
include: "#docstring-guts-unicode"
100+
include: "#docstring-guts-common"
101101
}
102102
{
103-
include: "#docstring-guts-common-single"
103+
include: "#docstring-guts-unicode"
104104
}
105105
]
106106
}
@@ -118,10 +118,10 @@ repository:
118118
name: "punctuation.definition.string.end.python"
119119
patterns: [
120120
{
121-
include: "#docstring-guts-raw"
121+
include: "#docstring-guts-common"
122122
}
123123
{
124-
include: "#docstring-guts-common-single"
124+
include: "#docstring-guts-raw"
125125
}
126126
]
127127
}
@@ -137,10 +137,10 @@ repository:
137137
name: "punctuation.definition.string.end.python"
138138
patterns: [
139139
{
140-
include: "#docstring-guts-unicode"
140+
include: "#docstring-guts-common"
141141
}
142142
{
143-
include: "#docstring-guts-common-double"
143+
include: "#docstring-guts-unicode"
144144
}
145145
]
146146
}
@@ -158,10 +158,10 @@ repository:
158158
name: "punctuation.definition.string.end.python"
159159
patterns: [
160160
{
161-
include: "#docstring-guts-raw"
161+
include: "#docstring-guts-common"
162162
}
163163
{
164-
include: "#docstring-guts-common-double"
164+
include: "#docstring-guts-raw"
165165
}
166166
]
167167
}
@@ -187,28 +187,18 @@ repository:
187187
include: "#string-line-continuation"
188188
}
189189
]
190-
"docstring-guts-common-single":
191-
begin: "(>>>|\\.\\.\\.)"
192-
end: "($|(?=\\'\\'\\'))"
193-
patterns: [
194-
{
195-
include: "#statement"
196-
}
197-
{
198-
include: "#expression"
199-
}
200-
]
201-
"docstring-guts-common-double":
202-
begin: "(>>>|\\.\\.\\.)"
203-
end: "($|(?=\\\"\\\"\\\"))"
204-
patterns: [
205-
{
206-
include: "#statement"
207-
}
208-
{
209-
include: "#expression"
210-
}
211-
]
190+
"docstring-guts-common":
191+
match: '''
192+
(?x)
193+
(?:
194+
(?:^|\\G) \\s* (?# '\\G' is necessary for ST)
195+
((?:>>>|\\.\\.\\.) \\s)
196+
)
197+
198+
'''
199+
captures:
200+
"1":
201+
name: "keyword.control.flow.python"
212202
"statement-keyword":
213203
patterns: [
214204
{
@@ -388,7 +378,7 @@ repository:
388378
|
389379
(?! ([rR]? (\\'\\'\\'|\\"\\"\\"))
390380
|
391-
(\\G $)
381+
(\\G $) (?# '\\G' is necessary for ST)
392382
)
393383
394384
'''

grammars/MagicPython.tmLanguage

Lines changed: 23 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -165,11 +165,11 @@
165165
<array>
166166
<dict>
167167
<key>include</key>
168-
<string>#docstring-guts-unicode</string>
168+
<string>#docstring-guts-common</string>
169169
</dict>
170170
<dict>
171171
<key>include</key>
172-
<string>#docstring-guts-common-single</string>
172+
<string>#docstring-guts-unicode</string>
173173
</dict>
174174
</array>
175175
</dict>
@@ -205,11 +205,11 @@
205205
<array>
206206
<dict>
207207
<key>include</key>
208-
<string>#docstring-guts-raw</string>
208+
<string>#docstring-guts-common</string>
209209
</dict>
210210
<dict>
211211
<key>include</key>
212-
<string>#docstring-guts-common-single</string>
212+
<string>#docstring-guts-raw</string>
213213
</dict>
214214
</array>
215215
</dict>
@@ -240,11 +240,11 @@
240240
<array>
241241
<dict>
242242
<key>include</key>
243-
<string>#docstring-guts-unicode</string>
243+
<string>#docstring-guts-common</string>
244244
</dict>
245245
<dict>
246246
<key>include</key>
247-
<string>#docstring-guts-common-double</string>
247+
<string>#docstring-guts-unicode</string>
248248
</dict>
249249
</array>
250250
</dict>
@@ -280,11 +280,11 @@
280280
<array>
281281
<dict>
282282
<key>include</key>
283-
<string>#docstring-guts-raw</string>
283+
<string>#docstring-guts-common</string>
284284
</dict>
285285
<dict>
286286
<key>include</key>
287-
<string>#docstring-guts-common-double</string>
287+
<string>#docstring-guts-raw</string>
288288
</dict>
289289
</array>
290290
</dict>
@@ -322,41 +322,23 @@
322322
</dict>
323323
</array>
324324
</dict>
325-
<key>docstring-guts-common-single</key>
326-
<dict>
327-
<key>begin</key>
328-
<string>(&gt;&gt;&gt;|\.\.\.)</string>
329-
<key>end</key>
330-
<string>($|(?=\&apos;\&apos;\&apos;))</string>
331-
<key>patterns</key>
332-
<array>
333-
<dict>
334-
<key>include</key>
335-
<string>#statement</string>
336-
</dict>
337-
<dict>
338-
<key>include</key>
339-
<string>#expression</string>
340-
</dict>
341-
</array>
342-
</dict>
343-
<key>docstring-guts-common-double</key>
325+
<key>docstring-guts-common</key>
344326
<dict>
345-
<key>begin</key>
346-
<string>(&gt;&gt;&gt;|\.\.\.)</string>
347-
<key>end</key>
348-
<string>($|(?=\&quot;\&quot;\&quot;))</string>
349-
<key>patterns</key>
350-
<array>
351-
<dict>
352-
<key>include</key>
353-
<string>#statement</string>
354-
</dict>
327+
<key>match</key>
328+
<string>(?x)
329+
(?:
330+
(?:^|\G) \s* (?# &apos;\G&apos; is necessary for ST)
331+
((?:&gt;&gt;&gt;|\.\.\.) \s)
332+
)
333+
</string>
334+
<key>captures</key>
335+
<dict>
336+
<key>1</key>
355337
<dict>
356-
<key>include</key>
357-
<string>#expression</string>
338+
<key>name</key>
339+
<string>keyword.control.flow.python</string>
358340
</dict>
359-
</array>
341+
</dict>
360342
</dict>
361343
<key>statement-keyword</key>
362344
<dict>
@@ -634,7 +616,7 @@
634616
|
635617
(?! ([rR]? (\&apos;\&apos;\&apos;|\&quot;\&quot;\&quot;))
636618
|
637-
(\G $)
619+
(\G $) (?# &apos;\G&apos; is necessary for ST)
638620
)
639621
</string>
640622
<key>beginCaptures</key>

test/docstrings/continuation1.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,7 @@
4444
docstring : comment.line.number-sign.python, source.python
4545
r : source.python, storage.type.string.python, string.quoted.docstring.raw.python
4646
''' : punctuation.definition.string.begin.python, source.python, string.quoted.docstring.raw.python
47-
>>> : source.python, string.quoted.docstring.raw.python
48-
: source.python, string.quoted.docstring.raw.python
49-
print : meta.function-call.python, source.python, string.quoted.docstring.raw.python, support.function.builtin.python
50-
( : meta.function-call.arguments.python, meta.function-call.python, punctuation.definition.arguments.begin.python, source.python, string.quoted.docstring.raw.python
51-
) : meta.function-call.python, punctuation.definition.arguments.end.python, source.python, string.quoted.docstring.raw.python
47+
>>> : keyword.control.flow.python, source.python, string.quoted.docstring.raw.python
48+
print() : source.python, string.quoted.docstring.raw.python
5249
a[wer] : source.python, string.quoted.docstring.raw.python
5350
''' : punctuation.definition.string.end.python, source.python, string.quoted.docstring.raw.python

test/docstrings/oneline1.py

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,38 @@
11
'''>>> print("""docstring""")'''
2+
async
23
""">>> print('''docstring''')"""
3-
4+
await
5+
"""\n>>> print('''docstring''')"""
6+
await
7+
""" >>> print('''docstring''')"""
8+
await
9+
""" 1 >>> print('''docstring''')"""
10+
await
411

512

613

714
''' : punctuation.definition.string.begin.python, source.python, string.quoted.docstring.python
8-
>>> : source.python, string.quoted.docstring.python
9-
: source.python, string.quoted.docstring.python
10-
print : meta.function-call.python, source.python, string.quoted.docstring.python, support.function.builtin.python
11-
( : meta.function-call.arguments.python, meta.function-call.python, punctuation.definition.arguments.begin.python, source.python, string.quoted.docstring.python
12-
""" : meta.function-call.arguments.python, meta.function-call.python, punctuation.definition.string.begin.python, source.python, string.quoted.docstring.python, string.quoted.double.multi.python
13-
docstring : meta.function-call.arguments.python, meta.function-call.python, source.python, string.quoted.docstring.python, string.quoted.double.multi.python
14-
""" : meta.function-call.arguments.python, meta.function-call.python, punctuation.definition.string.end.python, source.python, string.quoted.docstring.python, string.quoted.double.multi.python
15-
) : meta.function-call.python, punctuation.definition.arguments.end.python, source.python, string.quoted.docstring.python
15+
>>> : keyword.control.flow.python, source.python, string.quoted.docstring.python
16+
print("""docstring""") : source.python, string.quoted.docstring.python
1617
''' : punctuation.definition.string.end.python, source.python, string.quoted.docstring.python
18+
async : keyword.control.flow.python, source.python
19+
""" : punctuation.definition.string.begin.python, source.python, string.quoted.docstring.python
20+
>>> : keyword.control.flow.python, source.python, string.quoted.docstring.python
21+
print('''docstring''') : source.python, string.quoted.docstring.python
22+
""" : punctuation.definition.string.end.python, source.python, string.quoted.docstring.python
23+
await : keyword.operator.python, source.python
24+
""" : punctuation.definition.string.begin.python, source.python, string.quoted.docstring.python
25+
\n : constant.character.python, source.python, string.quoted.docstring.python
26+
>>> print('''docstring''') : source.python, string.quoted.docstring.python
27+
""" : punctuation.definition.string.end.python, source.python, string.quoted.docstring.python
28+
await : keyword.operator.python, source.python
1729
""" : punctuation.definition.string.begin.python, source.python, string.quoted.docstring.python
18-
>>> : source.python, string.quoted.docstring.python
1930
: source.python, string.quoted.docstring.python
20-
print : meta.function-call.python, source.python, string.quoted.docstring.python, support.function.builtin.python
21-
( : meta.function-call.arguments.python, meta.function-call.python, punctuation.definition.arguments.begin.python, source.python, string.quoted.docstring.python
22-
''' : meta.function-call.arguments.python, meta.function-call.python, punctuation.definition.string.begin.python, source.python, string.quoted.docstring.python, string.quoted.single.multi.python
23-
docstring : meta.function-call.arguments.python, meta.function-call.python, source.python, string.quoted.docstring.python, string.quoted.single.multi.python
24-
''' : meta.function-call.arguments.python, meta.function-call.python, punctuation.definition.string.end.python, source.python, string.quoted.docstring.python, string.quoted.single.multi.python
25-
) : meta.function-call.python, punctuation.definition.arguments.end.python, source.python, string.quoted.docstring.python
31+
>>> : keyword.control.flow.python, source.python, string.quoted.docstring.python
32+
print('''docstring''') : source.python, string.quoted.docstring.python
33+
""" : punctuation.definition.string.end.python, source.python, string.quoted.docstring.python
34+
await : keyword.operator.python, source.python
35+
""" : punctuation.definition.string.begin.python, source.python, string.quoted.docstring.python
36+
1 >>> print('''docstring''') : source.python, string.quoted.docstring.python
2637
""" : punctuation.definition.string.end.python, source.python, string.quoted.docstring.python
38+
await : keyword.operator.python, source.python

0 commit comments

Comments
 (0)