blob: 4f1dadd131998c3d008a2d5c6d1a5fd5977d667b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
%YAML 1.2
---
name: Man (*roff)
scope: text.man
file_extensions: \d
first_line_match: ^([.'])TH\b
variables:
# Requests always have a period (‘.’) or an apostrophe (‘'’)
# as the first character of the input line.
cc: ^([.']) # cc - control character
escape: \\f
macro: (TH|SH|SS|TP|LP|PP|P|HP|RS|RE)\b
numeric: '\b(-)?[0-9.]+\b'
font_size: (SM|SB)\b
font_alt: (BI|IB|RI|IR|BR|RB)\b
font_style: ([BRI])
contexts:
main:
- match: (?={{cc}})
push: macros
- match: (?={{escape}}{{font_style}})
push: font_styles
with_prototype:
- match: '(?={{escape}}|{{cc}})'
meta_content_scope: markup.regular.man
pop: true
# Comments begin and finish at the end of the line
- match: \\["#]
scope: comment.man
push:
- meta_scope: comment.line.man
- match: $
pop: true
macros:
- match: '{{cc}}{{macro}}'
scope: keyword.control.man
push: macros_line
pop: true
- match: '{{cc}}(?={{font_style}})\b'
scope: keyword.control.man
push: font_styles
with_prototype:
- match: '(?={{escape}}|$)'
pop: true
pop: true
- match: '{{cc}}\w+\b'
scope: support.function.groff
push: macros_line
pop: true
macros_line:
- match: '"'
scope: punctuation.definition.string.begin.man
push:
- meta_scope: string.quoted.double.man
- match: '"'
scope: punctuation.definition.string.end.man
pop: true
- match: '[^\\]\n'
pop: true
- match: '{{numeric}}'
scope: constant.numeric.man
- match: \w
scope: variable.parameter.man
- match: $
pop: true
font_styles:
- match: (B\b|{{escape}}(B))
captures:
1: keyword.control.man
2: constant.character.escape.man
push:
- meta_content_scope: markup.bold.man
- match: ({{escape}})(R) # only \fR
captures:
1: keyword.control.man
2: constant.character.escape.man
- match: (I\b|{{escape}}(I))
captures:
1: keyword.control.man
2: constant.character.escape.man
push:
- meta_content_scope: markup.italic.man
|