github-linguist 7.5.1 → 7.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/grammars/annotation.liquidhaskell.haskell.json +122 -24
  3. data/grammars/etc.json +7 -0
  4. data/grammars/hint.haskell.json +122 -24
  5. data/grammars/hint.message.haskell.json +122 -24
  6. data/grammars/hint.type.haskell.json +122 -24
  7. data/grammars/injections.etc.json +48 -10
  8. data/grammars/source.abnf.json +180 -353
  9. data/grammars/source.ballerina.json +205 -50
  10. data/grammars/source.bnf.json +191 -0
  11. data/grammars/source.cabal.json +1 -1
  12. data/grammars/source.ditroff.desc.json +1 -1
  13. data/grammars/source.ebnf.json +157 -147
  14. data/grammars/source.editorconfig.json +30 -5
  15. data/grammars/source.emacs.lisp.json +4 -4
  16. data/grammars/source.gremlin.json +200 -0
  17. data/grammars/source.haproxy-config.json +65 -13
  18. data/grammars/source.haskell.json +122 -24
  19. data/grammars/source.hql.json +1 -1
  20. data/grammars/source.hsig.json +122 -24
  21. data/grammars/source.hx.json +5 -5
  22. data/grammars/source.hxml.json +4 -4
  23. data/grammars/source.ideal.json +4 -4
  24. data/grammars/source.igor.json +325 -0
  25. data/grammars/source.jlex.json +322 -0
  26. data/grammars/source.julia.json +132 -1
  27. data/grammars/source.lean.json +103 -54
  28. data/grammars/source.lex.json +232 -0
  29. data/grammars/source.lex.regexp.json +269 -0
  30. data/grammars/source.logos.json +1 -1
  31. data/grammars/source.meson.json +1 -1
  32. data/grammars/source.mlir.json +389 -0
  33. data/grammars/source.nanorc.json +3 -0
  34. data/grammars/source.pic.json +19 -19
  35. data/grammars/source.plist.json +336 -0
  36. data/grammars/source.powershell.json +2 -2
  37. data/grammars/source.purescript.json +2 -2
  38. data/grammars/source.rascal.json +1 -0
  39. data/grammars/source.regexp.extended.json +544 -6
  40. data/grammars/source.regexp.json +408 -31
  41. data/grammars/source.renpy.json +3 -1
  42. data/grammars/source.scala.json +199 -97
  43. data/grammars/source.smpl.json +314 -0
  44. data/grammars/source.solidity.json +1 -1
  45. data/grammars/source.sourcepawn.json +654 -0
  46. data/grammars/source.sqf.json +5 -1
  47. data/grammars/source.swift.json +56 -11
  48. data/grammars/source.sy.json +800 -0
  49. data/grammars/source.ts.json +64 -47
  50. data/grammars/source.tsx.json +65 -48
  51. data/grammars/source.v.json +1184 -0
  52. data/grammars/source.viml.json +31 -31
  53. data/grammars/source.wollok.json +1 -1
  54. data/grammars/source.xojo.json +2 -2
  55. data/grammars/source.yacc.json +626 -0
  56. data/grammars/source.yara.json +1 -1
  57. data/grammars/source.yasnippet.json +15 -25
  58. data/grammars/source.zeek.json +4 -4
  59. data/grammars/source.zig.json +594 -195
  60. data/grammars/text.eml.basic.json +19 -6
  61. data/grammars/text.html.php.blade.json +3 -3
  62. data/grammars/text.plain.json +18 -0
  63. data/grammars/text.roff.json +926 -437
  64. data/grammars/text.runoff.json +3 -3
  65. data/grammars/text.tex.latex.haskell.json +122 -24
  66. data/grammars/text.texinfo.json +1525 -0
  67. data/grammars/text.xml.plist.json +664 -0
  68. data/grammars/text.xml.svg.json +556 -0
  69. data/grammars/version +1 -1
  70. data/lib/linguist.rb +3 -1
  71. data/lib/linguist/VERSION +1 -1
  72. data/lib/linguist/generated.rb +62 -17
  73. data/lib/linguist/heuristics.yml +13 -0
  74. data/lib/linguist/language.rb +1 -11
  75. data/lib/linguist/languages.json +1 -1
  76. data/lib/linguist/languages.yml +179 -19
  77. data/lib/linguist/samples.json +2778 -732
  78. data/lib/linguist/strategy/manpage.rb +42 -0
  79. metadata +22 -5
  80. data/grammars/source.bison.json +0 -55
  81. data/grammars/source.sp.json +0 -113
@@ -41,7 +41,7 @@
41
41
  "patterns": [
42
42
  {
43
43
  "name": "meta.email-address.eml",
44
- "match": "(?x)\n((\") [-a-zA-Z0-9.\\x20+_]+ (\")) \\s*\n((\u003c) [-a-zA-Z0-9.]+@[-a-zA-Z0-9.]+ (\u003e))",
44
+ "match": "(?ix)\n((\") [-a-zA-Z0-9.\\x20+_]+ (\")) \\s*\n((\u003c) [-a-zA-Z0-9.]+@[-a-zA-Z0-9.]+ (\u003e))",
45
45
  "captures": {
46
46
  "1": {
47
47
  "name": "string.quoted.double.author-name.eml"
@@ -65,7 +65,7 @@
65
65
  },
66
66
  {
67
67
  "name": "meta.email-address.eml",
68
- "match": "(?x)\n((\") [-a-zA-Z0-9.\\ +_]+ (\")) \\s*\n((\u0026lt;) [-a-zA-Z0-9.]+@[-a-zA-Z0-9.]+ (\u0026gt;))",
68
+ "match": "(?ix)\n((\") [-a-zA-Z0-9.\\ +_]+ (\")) \\s*\n((\u0026lt;) [-a-zA-Z0-9.]+@[-a-zA-Z0-9.]+ (\u0026gt;))",
69
69
  "captures": {
70
70
  "1": {
71
71
  "name": "string.quoted.double.author-name.eml"
@@ -89,7 +89,7 @@
89
89
  },
90
90
  {
91
91
  "name": "meta.email-address.eml",
92
- "match": "(?x)\n([-a-zZ-Z0-9.+_]+) \\s*\n(\u003c)([-a-zA-Z0-9.]+@[-a-zA-Z0-9.]+)(\u003e)",
92
+ "match": "(?ix)\n([-a-zZ-Z0-9.+_]+) \\s*\n(\u003c)([-a-zA-Z0-9.]+@[-a-zA-Z0-9.]+)(\u003e)",
93
93
  "captures": {
94
94
  "1": {
95
95
  "name": "string.unquoted.author-name.eml"
@@ -107,7 +107,7 @@
107
107
  },
108
108
  {
109
109
  "name": "meta.email-address.eml",
110
- "match": "(?x)\n([-a-zZ-Z0-9.+_]+) \\s*\n(\u0026lt;)([-a-zA-Z0-9.]+@[-a-zA-Z0-9.]+)(\u0026gt;)",
110
+ "match": "(?ix)\n([-a-zZ-Z0-9.+_]+) \\s*\n(\u0026lt;)([-a-zA-Z0-9.]+@[-a-zA-Z0-9.]+)(\u0026gt;)",
111
111
  "captures": {
112
112
  "1": {
113
113
  "name": "string.unquoted.author-name.eml"
@@ -138,7 +138,7 @@
138
138
  }
139
139
  },
140
140
  {
141
- "match": "(\u003c)([-a-zA-Z0-9.+_]+@[-a-zA-Z0-9.]+)(\u003e)",
141
+ "match": "(\u003c?)([-a-zA-Z0-9.+_]+@[-a-zA-Z0-9.]+)(\u003e?)",
142
142
  "captures": {
143
143
  "1": {
144
144
  "name": "punctuation.definition.tag.begin.eml"
@@ -257,13 +257,26 @@
257
257
  }
258
258
  }
259
259
  },
260
+ "html": {
261
+ "name": "meta.single.html.eml",
262
+ "begin": "(?xi)^\u003chtml(.*)\u003e$",
263
+ "end": "(?xi)^\u003c/html\u003e$",
264
+ "patterns": [
265
+ {
266
+ "include": "text.html.basic"
267
+ },
268
+ {
269
+ "include": "$self"
270
+ }
271
+ ]
272
+ },
260
273
  "ipv4": {
261
274
  "name": "variable.other.ipv4.eml",
262
275
  "match": "(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"
263
276
  },
264
277
  "ipv6": {
265
278
  "name": "variable.other.eml",
266
- "match": "(?x)\n( ([0-9a-fA-F]{1,4}:){7} [0-9a-fA-F]{1,4}\n| ([0-9a-fA-F]{1,4}:){1,7} :\n| ([0-9a-fA-F]{1,4}:){1,6} :[0-9a-fA-F]{1,4}\n| ([0-9a-fA-F]{1,4}:){1,5} (:[0-9a-fA-F]{1,4}){1,2}\n| ([0-9a-fA-F]{1,4}:){1,4} (:[0-9a-fA-F]{1,4}){1,3}\n| ([0-9a-fA-F]{1,4}:){1,3} (:[0-9a-fA-F]{1,4}){1,4}\n| ([0-9a-fA-F]{1,4}:){1,2} (:[0-9a-fA-F]{1,4}){1,5}\n| [0-9a-fA-F]{1,4} :((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)\n| fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]+\n| ::(ffff(:0{1,4})?:)? ((25[0-5]|(2[0-4]|1?[0-9])?[0-9])\\.){3}(25[0-5]|(2[0-4]|1?[0-9])?[0-9])\n| ([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?[0-9])?[0-9])\\.){3}(25[0-5]|(2[0-4]|1?[0-9])?[0-9])\n)"
279
+ "match": "(?x)\n( ([0-9a-fA-F]{1,4}:){7} [0-9a-fA-F]{1,4}\n| ([0-9a-fA-F]{1,4}:){1,4} :[0-9a-fA-F]{1,4}\n| ([0-9a-fA-F]{1,4}:){1,6} :[0-9a-fA-F]{1,4}\n| ([0-9a-fA-F]{1,4}:){1,7} :\n| ([0-9a-fA-F]{1,4}:){1,5} (:[0-9a-fA-F]{1,4}){1,2}\n| ([0-9a-fA-F]{1,4}:){1,4} (:[0-9a-fA-F]{1,4}){1,3}\n| ([0-9a-fA-F]{1,4}:){1,3} (:[0-9a-fA-F]{1,4}){1,4}\n| ([0-9a-fA-F]{1,4}:){1,2} (:[0-9a-fA-F]{1,4}){1,5}\n| [0-9a-fA-F]{1,4} :((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)\n| fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]+\n| ::(ffff(:0{1,4})?:)? ((25[0-5]|(2[0-4]|1?[0-9])?[0-9])\\.){3}(25[0-5]|(2[0-4]|1?[0-9])?[0-9])\n| ([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?[0-9])?[0-9])\\.){3}(25[0-5]|(2[0-4]|1?[0-9])?[0-9])\n)"
267
280
  },
268
281
  "quote": {
269
282
  "name": "markup.quote.line.eml",
@@ -3580,7 +3580,7 @@
3580
3580
  {
3581
3581
  "name": "meta.directive.blade",
3582
3582
  "contentName": "source.php",
3583
- "begin": "(?x)\n(?\u003c![A-Za-z0-9_@]) # Prepended @ or literal character escapes the sequence\n(\n @\n (?i: # Ordering not important as we everything will be matched up to opening parentheses\n auth\n |break\n |can\n |canany\n |cannot\n |case\n |choice\n |component\n |continue\n |dd\n |dump\n |each\n |elseauth\n |elsecan\n |elsecanany\n |elsecannot\n |elseguest\n |elseif\n |empty\n |error\n |extends\n |for\n |foreach\n |forelse\n |guest\n |hassection\n |if\n |include\n |includefirst\n |includeif\n |includewhen\n |inject\n |isset\n |json\n |lang\n |method\n |php\n |prepend\n |push\n |section\n |slot\n |stack\n |switch\n |unless\n |unset\n |while\n |yield\n )\n [\\t ]* # Whitespace between name and parentheses\n)\n(\\() # Followed by opening parentheses",
3583
+ "begin": "(?x)\n(?\u003c![A-Za-z0-9_@]) # Prepended @ or literal character escapes the sequence\n(\n @\n (?i: # Ordering not important as we everything will be matched up to opening parentheses\n auth\n |break\n |can\n |canany\n |cannot\n |case\n |choice\n |component\n |componentfirst\n |continue\n |dd\n |dump\n |each\n |elseauth\n |elsecan\n |elsecanany\n |elsecannot\n |elseguest\n |elseif\n |empty\n |error\n |extends\n |for\n |foreach\n |forelse\n |guest\n |hassection\n |if\n |include\n |includefirst\n |includeif\n |includewhen\n |inject\n |isset\n |json\n |lang\n |method\n |php\n |prepend\n |push\n |section\n |slot\n |stack\n |switch\n |unless\n |unset\n |while\n |yield\n )\n [\\t ]* # Whitespace between name and parentheses\n)\n(\\() # Followed by opening parentheses",
3584
3584
  "end": "\\)",
3585
3585
  "patterns": [
3586
3586
  {
@@ -3604,7 +3604,7 @@
3604
3604
  {
3605
3605
  "name": "meta.directive.blade",
3606
3606
  "contentName": "comment.blade",
3607
- "begin": "(?x)\n(?\u003c![A-Za-z0-9_@]) # Prepended @ or literal character escapes the sequence\n(\n @\n (?i: # Ordering not important as we everything will be matched up to opening parentheses\n append\n |csrf\n |default\n |else\n |endauth\n |endcan\n |endcanany\n |endcannot\n |endcomponent\n |endempty\n |enderror\n |endfor\n |endforeach\n |endforelse\n |endguest\n |endif\n |endisset\n |endlang\n |endprepend\n |endpush\n |endsection\n |endslot\n |endswitch\n |endunless\n |endwhile\n |overwrite\n |parent\n |show\n |stop\n )\n [\\t ]* # Whitespace between name and parentheses\n)\n(\\() # Followed by opening parentheses",
3607
+ "begin": "(?x)\n(?\u003c![A-Za-z0-9_@]) # Prepended @ or literal character escapes the sequence\n(\n @\n (?i: # Ordering not important as we everything will be matched up to opening parentheses\n append\n |csrf\n |default\n |else\n |endauth\n |endcan\n |endcanany\n |endcannot\n |endcomponent\n |endcomponentfirst\n |endempty\n |enderror\n |endfor\n |endforeach\n |endforelse\n |endguest\n |endif\n |endisset\n |endlang\n |endprepend\n |endpush\n |endsection\n |endslot\n |endswitch\n |endunless\n |endwhile\n |overwrite\n |parent\n |show\n |stop\n )\n [\\t ]* # Whitespace between name and parentheses\n)\n(\\() # Followed by opening parentheses",
3608
3608
  "end": "\\)",
3609
3609
  "patterns": [
3610
3610
  {
@@ -3627,7 +3627,7 @@
3627
3627
  },
3628
3628
  {
3629
3629
  "name": "keyword.blade",
3630
- "match": "(?x)\n(?\u003c![A-Za-z0-9_@]) # Prepended @ or literal character escapes the sequence\n@\n(?: # Ordering not important as we everything will be matched up to word boundary\n (?i)append\n|(?i)auth\n|(?i)break\n|(?i)continue\n|(?i)csrf\n|(?i)default\n|(?i)else\n|(?i)elseauth\n|(?i)elseguest\n|(?i)empty\n|(?i)endauth\n|(?i)endcan\n|(?i)endcanany\n|(?i)endcannot\n|(?i)endcomponent\n|(?i)endempty\n|(?i)enderror\n|(?i)endfor\n|(?i)endforeach\n|(?i)endforelse\n|(?i)endguest\n|(?i)endif\n|(?i)endisset\n|(?i)endlang\n|(?i)endprepend\n|(?i)endpush\n|(?i)endsection\n|(?i)endslot\n|(?i)endswitch\n|(?i)endunless\n|endverbatim\n|(?i)endwhile\n|(?i)guest\n|(?i)lang\n|(?i)overwrite\n|(?i)parent\n|(?i)show\n|(?i)stop\n|verbatim\n)\n\\b"
3630
+ "match": "(?x)\n(?\u003c![A-Za-z0-9_@]) # Prepended @ or literal character escapes the sequence\n@\n(?: # Ordering not important as we everything will be matched up to word boundary\n (?i)append\n|(?i)auth\n|(?i)break\n|(?i)continue\n|(?i)csrf\n|(?i)default\n|(?i)else\n|(?i)elseauth\n|(?i)elseguest\n|(?i)empty\n|(?i)endauth\n|(?i)endcan\n|(?i)endcanany\n|(?i)endcannot\n|(?i)endcomponent\n|(?i)endcomponentfirst\n|(?i)endempty\n|(?i)enderror\n|(?i)endfor\n|(?i)endforeach\n|(?i)endforelse\n|(?i)endguest\n|(?i)endif\n|(?i)endisset\n|(?i)endlang\n|(?i)endprepend\n|(?i)endpush\n|(?i)endsection\n|(?i)endslot\n|(?i)endswitch\n|(?i)endunless\n|endverbatim\n|(?i)endwhile\n|(?i)guest\n|(?i)lang\n|(?i)overwrite\n|(?i)parent\n|(?i)show\n|(?i)stop\n|verbatim\n)\n\\b"
3631
3631
  },
3632
3632
  {
3633
3633
  "name": "meta.embedded.block.blade",
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "Show EOL characters",
3
+ "scopeName": "text.plain",
4
+ "patterns": [
5
+ {
6
+ "name": "crlf",
7
+ "match": "(?:\\r\\n)"
8
+ },
9
+ {
10
+ "name": "lf",
11
+ "match": "(?:\\n)"
12
+ },
13
+ {
14
+ "name": "cr",
15
+ "match": "\\r"
16
+ }
17
+ ]
18
+ }
@@ -9,7 +9,7 @@
9
9
  "repository": {
10
10
  "3-part-title": {
11
11
  "name": "string.3-part.other.roff",
12
- "match": "\\G[ \t]*(.)((?:(?!\\1).)*)(\\1)((?:(?!\\1).)*)(\\1)((?:(?!\\1).)*)(\\1)",
12
+ "match": "\\G[ \\t]*(.)((?:(?!\\1).)*)(\\1)((?:(?!\\1).)*)(\\1)((?:(?!\\1).)*)(\\1)",
13
13
  "captures": {
14
14
  "1": {
15
15
  "name": "punctuation.definition.string.begin.roff"
@@ -52,8 +52,8 @@
52
52
  "alternating-fonts": {
53
53
  "patterns": [
54
54
  {
55
- "begin": "^([.'])[ \t]*(BI)(?=\\s)",
56
- "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\n|$)|(?=\\\\\")",
55
+ "begin": "^([.'])[ \\t]*(BI)(?=\\s)",
56
+ "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\R|$)|(?=\\\\\")",
57
57
  "patterns": [
58
58
  {
59
59
  "include": "#odd-bold"
@@ -81,8 +81,8 @@
81
81
  }
82
82
  },
83
83
  {
84
- "begin": "^([.'])[ \t]*(BR)(?=\\s)",
85
- "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\n|$)|(?=\\\\\")",
84
+ "begin": "^([.'])[ \\t]*(BR)(?=\\s)",
85
+ "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\R|$)|(?=\\\\\")",
86
86
  "patterns": [
87
87
  {
88
88
  "include": "#odd-bold"
@@ -110,8 +110,8 @@
110
110
  }
111
111
  },
112
112
  {
113
- "begin": "^([.'])[ \t]*(IB)(?=\\s)",
114
- "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\n|$)|(?=\\\\\")",
113
+ "begin": "^([.'])[ \\t]*(IB)(?=\\s)",
114
+ "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\R|$)|(?=\\\\\")",
115
115
  "patterns": [
116
116
  {
117
117
  "include": "#odd-italic"
@@ -139,8 +139,8 @@
139
139
  }
140
140
  },
141
141
  {
142
- "begin": "^([.'])[ \t]*(IR)(?=\\s)",
143
- "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\n|$)|(?=\\\\\")",
142
+ "begin": "^([.'])[ \\t]*(IR)(?=\\s)",
143
+ "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\R|$)|(?=\\\\\")",
144
144
  "patterns": [
145
145
  {
146
146
  "include": "#odd-italic"
@@ -168,8 +168,8 @@
168
168
  }
169
169
  },
170
170
  {
171
- "begin": "^([.'])[ \t]*(RB)(?=\\s)",
172
- "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\n|$)|(?=\\\\\")",
171
+ "begin": "^([.'])[ \\t]*(RB)(?=\\s)",
172
+ "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\R|$)|(?=\\\\\")",
173
173
  "patterns": [
174
174
  {
175
175
  "include": "#odd-roman"
@@ -197,8 +197,8 @@
197
197
  }
198
198
  },
199
199
  {
200
- "begin": "^([.'])[ \t]*(RI)(?=\\s)",
201
- "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\n|$)|(?=\\\\\")",
200
+ "begin": "^([.'])[ \\t]*(RI)(?=\\s)",
201
+ "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\R|$)|(?=\\\\\")",
202
202
  "patterns": [
203
203
  {
204
204
  "include": "#odd-roman"
@@ -292,8 +292,8 @@
292
292
  "patterns": [
293
293
  {
294
294
  "name": "markup.bold.roff",
295
- "begin": "\\G[ \t]*(?!\")(?=(?:[^\\s\\\\]|\\\\(?!\").)+)",
296
- "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\s|$)|(?=\\\\\")",
295
+ "begin": "\\G[ \\t]*(?!\")(?=(?:[^\\s\\\\]|\\\\(?!E?\").)+)",
296
+ "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\s|$)|(?=\\\\E?\")",
297
297
  "patterns": [
298
298
  {
299
299
  "include": "#escapes"
@@ -318,8 +318,8 @@
318
318
  {
319
319
  "name": "markup.bold.roff",
320
320
  "contentName": "string.quoted.double.roff",
321
- "begin": "\\G[ \t]*(\")",
322
- "end": "((?:\"\")*)\"(?!\")|(?\u003c!\\\\)(?:$|\\n)|(?=\\\\\")",
321
+ "begin": "\\G[ \\t]*(\")",
322
+ "end": "((?:\"\")*)\"(?!\")|(?\u003c!\\\\)(?:$|\\R)|(?=\\\\E?\")",
323
323
  "patterns": [
324
324
  {
325
325
  "include": "#string-escapes"
@@ -359,8 +359,8 @@
359
359
  "patterns": [
360
360
  {
361
361
  "name": "markup.bold.italic.roff",
362
- "begin": "\\G[ \t]*(?!\")(?=(?:[^\\s\\\\]|\\\\(?!\").)+)",
363
- "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\s|$)|(?=\\\\\")",
362
+ "begin": "\\G[ \\t]*(?!\")(?=(?:[^\\s\\\\]|\\\\(?!E?\").)+)",
363
+ "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\s|$)|(?=\\\\E?\")",
364
364
  "patterns": [
365
365
  {
366
366
  "include": "#escapes"
@@ -385,8 +385,8 @@
385
385
  {
386
386
  "name": "markup.bold.italic.roff",
387
387
  "contentName": "string.quoted.double.roff",
388
- "begin": "\\G[ \t]*(\")",
389
- "end": "((?:\"\")*)\"(?!\")|(?\u003c!\\\\)(?:$|\\n)|(?=\\\\\")",
388
+ "begin": "\\G[ \\t]*(\")",
389
+ "end": "((?:\"\")*)\"(?!\")|(?\u003c!\\\\)(?:$|\\R)|(?=\\\\E?\")",
390
390
  "patterns": [
391
391
  {
392
392
  "include": "#string-escapes"
@@ -434,7 +434,7 @@
434
434
  "patterns": [
435
435
  {
436
436
  "name": "constant.character.escape.newline.roff",
437
- "begin": "[ \t]+(\\\\)$\\n?",
437
+ "begin": "[ \\t]+(\\\\)$\\R?",
438
438
  "end": "^",
439
439
  "beginCaptures": {
440
440
  "1": {
@@ -444,8 +444,8 @@
444
444
  },
445
445
  {
446
446
  "name": "constant.character.escape.newline.roff",
447
- "begin": "(\\\\)$\\n?",
448
- "end": "^[ \t]*",
447
+ "begin": "(\\\\)$\\R?",
448
+ "end": "^[ \\t]*",
449
449
  "beginCaptures": {
450
450
  "1": {
451
451
  "name": "punctuation.definition.escape.roff"
@@ -457,7 +457,7 @@
457
457
  "conditional-innards": {
458
458
  "patterns": [
459
459
  {
460
- "begin": "^\\s*(\\\\\\{(?:\\\\(?=\\n))?)?\\s*(.*)",
460
+ "begin": "^\\s*(\\\\E?\\{(?:\\\\E?(?=\\R|$))?)?\\s*(.*)",
461
461
  "end": "$",
462
462
  "beginCaptures": {
463
463
  "1": {
@@ -477,7 +477,7 @@
477
477
  "conditionals": {
478
478
  "patterns": [
479
479
  {
480
- "begin": "(?x)^\n([.']) [ \t]* # 1: punctuation.definition.request.roff\n(ie|if) [ \t]* # 2: keyword.control.roff\n(!)? # 3: keyword.operator.logical\n\n(?:\n\t# One-character built-in comparison name\n\t([notev]) # 4: constant.language.builtin-comparison.$4.roff\n\t\n\t|\n\t\n\t# GNU extensions\n\t([cdFmrS]) # 5: constant.language.builtin-comparison.$5.gnu.roff\n\t\n\t# Name being validated\n\t[ \t]*\n\t((?:[^ \\t\\\\]|\\\\(?![\"#]).)+) # 6: Include “#escapes”\n\t\n\t|\n\t\n\t# Arithmetic\n\t( # 7: meta.equation.roff\n\t\t\n\t\t# Starts with a bracket\n\t\t(\\() # 8: punctuation.definition.begin.roff\n\t\t(.*?) # 9: Include “#arithmetic”\n\t\t(\\)) # 10: punctuation.definition.end.roff\n\t\t\n\t\t# Anything else affixed to it\n\t\t( # 11: Include “#arithmetic”\n\t\t\t(?:\n\t\t\t\t[^\\s\\(] | # Operators/numbers\n\t\t\t\t\\(.*?\\) # More brackets\n\t\t\t)*\n\t\t)\n\t\t\n\t\t|\n\t\t\n\t\t# Doesn’t start with a bracket\n\t\t(?:\n\t\t\t# Starts with a long-form string/register\n\t\t\t(\\|?\\\\+[n*]\\(\\S{2}) # 12: Include “#escapes”\n\t\t\t|\n\t\t\t# Starts with a digit or backslash\n\t\t\t(?=\\d|\\\\)\n\t\t)\n\t\t([^\\s\\(]*) # 13: Sandwiched mathematical junk\n\t\t\n\t\t(?: # Possible embedded brackets\n\t\t\t(\\() # 14: punctuation.definition.begin.roff\n\t\t\t(.*?) # 15: Include “#arithmetic”\n\t\t\t(\\)) # 16: punctuation.definition.end.roff\n\t\t)?\n\t\t(?: # Possible trailing digits/operators\n\t\t\t[^\\s\\(]*?\n\t\t\t\\d+\n\t\t)?\n\t\t\n\t\t# Ends with a...\n\t\t(?\u003c=\n\t\t\t# Digit\n\t\t\t\\d |\n\t\t\t\n\t\t\t# Unit suffix\n\t\t\t(?\u003c=[\\d.])\n\t\t\t[A-Za-z] |\n\t\t\t\n\t\t\t# Closing bracket\n\t\t\t[\\)\\]] |\n\t\t\t\n\t\t\t# String/register: Long-form\n\t\t\t\\\\[n*]\n\t\t\t\\(\n\t\t\t\\S{2} |\n\t\t\t\n\t\t\t# String/register: Short-form\n\t\t\t\\\\[n*]\\S\n\t\t)\n\t)\n\t\n\t|\n\t\n\t# String/variable comparison\n\t([^\\d\\s\\\\]) # 17: punctuation.definition.string.begin.roff\n\t( # 18: variable.parameter.operand.left.roff\n\t\t(.*?) # 19: Include “#escapes”\n\t)\n\t(\\17) # 20: punctuation.definition.string.roff\n\t( # 21: variable.parameter.operand.right.roff\n\t\t(.*?) # 22: Include “#escapes”\n\t)\n\t(\\17) # 23: punctuation.definition.string.end.roff\n\t\n\t|\n\t\n\t# Anything not recognised\n\t(\\S) # 24: meta.operand.single.roff\n)?\n\n(.*) # 25: Include “#conditional-innards”",
480
+ "begin": "(?x)^\n([.']) [ \\t]* # 1: punctuation.definition.request.roff\n(ie|if) [ \\t]* # 2: keyword.control.roff\n(!)? # 3: keyword.operator.logical\n\n(?:\n\t# One-character built-in comparison name\n\t([notev]) # 4: constant.language.builtin-comparison.$4.roff\n\t\n\t|\n\t\n\t# GNU extensions\n\t([cdFmrS]) # 5: constant.language.builtin-comparison.$5.gnu.roff\n\t\n\t# Name being validated\n\t[ \\t]*\n\t((?:[^ \\t\\\\]|\\\\(?!E?[\"#]).)+) # 6: Include “#escapes”\n\t\n\t|\n\t\n\t# Arithmetic\n\t( # 7: meta.equation.roff\n\t\t\n\t\t# Starts with a bracket\n\t\t(\\() # 8: punctuation.definition.begin.roff\n\t\t(.*?) # 9: Include “#arithmetic”\n\t\t(\\)) # 10: punctuation.definition.end.roff\n\t\t\n\t\t# Anything else affixed to it\n\t\t( # 11: Include “#arithmetic”\n\t\t\t(?:\n\t\t\t\t[^\\s\\(] | # Operators/numbers\n\t\t\t\t\\(.*?\\) # More brackets\n\t\t\t)*\n\t\t)\n\t\t\n\t\t|\n\t\t\n\t\t# Doesn’t start with a bracket\n\t\t(?:\n\t\t\t# Starts with a long-form string/register\n\t\t\t(\\|?\\\\+E?[n*]\\(\\S{2}) # 12: Include “#escapes”\n\t\t\t|\n\t\t\t# Starts with a digit or backslash\n\t\t\t(?=\\d|\\\\)\n\t\t)\n\t\t([^\\s\\(]*) # 13: Sandwiched mathematical junk\n\t\t\n\t\t(?: # Possible embedded brackets\n\t\t\t(\\() # 14: punctuation.definition.begin.roff\n\t\t\t(.*?) # 15: Include “#arithmetic”\n\t\t\t(\\)) # 16: punctuation.definition.end.roff\n\t\t)?\n\t\t(?: # Possible trailing digits/operators\n\t\t\t[^\\s\\(]*?\n\t\t\t\\d+\n\t\t)?\n\t\t\n\t\t# Ends with a...\n\t\t(?\u003c=\n\t\t\t# Digit\n\t\t\t\\d |\n\t\t\t\n\t\t\t# Unit suffix\n\t\t\t(?\u003c=[\\d.])\n\t\t\t[A-Za-z] |\n\t\t\t\n\t\t\t# Closing bracket\n\t\t\t[\\)\\]] |\n\t\t\t\n\t\t\t# String/register: Long-form\n\t\t\t\\\\ [n*] \\( \\S{2} |\n\t\t\t\\\\E [n*] \\( \\S{2} |\n\t\t\t\n\t\t\t# String/register: Short-form\n\t\t\t\\\\ [n*] \\S |\n\t\t\t\\\\E [n*] \\S\n\t\t)\n\t)\n\t\n\t|\n\t\n\t# String/variable comparison\n\t([^\\d\\s\\\\]) # 17: punctuation.definition.string.begin.roff\n\t( # 18: variable.parameter.operand.left.roff\n\t\t(.*?) # 19: Include “#escapes”\n\t)\n\t(\\17) # 20: punctuation.definition.string.roff\n\t( # 21: variable.parameter.operand.right.roff\n\t\t(.*?) # 22: Include “#escapes”\n\t)\n\t(\\17) # 23: punctuation.definition.string.end.roff\n\t\n\t|\n\t\n\t# Anything not recognised\n\t(\\S) # 24: meta.operand.single.roff\n)?\n\n(.*) # 25: Include “#conditional-innards”",
481
481
  "end": "$",
482
482
  "beginCaptures": {
483
483
  "0": {
@@ -597,7 +597,7 @@
597
597
  }
598
598
  },
599
599
  {
600
- "begin": "^([.'])[ \t]*(el)\\s*(.*)",
600
+ "begin": "^([.'])[ \\t]*(el)\\s*(.*)",
601
601
  "end": "$",
602
602
  "beginCaptures": {
603
603
  "0": {
@@ -621,7 +621,7 @@
621
621
  ]
622
622
  },
623
623
  "continuous-newline": {
624
- "begin": "(\\\\)?(\\\\)$\\n?",
624
+ "begin": "(\\\\)?(\\\\)$\\R?",
625
625
  "end": "^(?:[.'])?",
626
626
  "beginCaptures": {
627
627
  "0": {
@@ -639,8 +639,8 @@
639
639
  "patterns": [
640
640
  {
641
641
  "name": "meta.macro.definition.$2.roff",
642
- "begin": "^([.'])[ \t]*((dei?1?)|(ami?1?))\\s+(\\S+?)?\\s*(\\\\[\"#].*)?$",
643
- "end": "^(?:[ \t]*\\x5C{2})?\\.[ \t]*\\.",
642
+ "begin": "^([.'])[ \\t]*((dei?1?)|(ami?1?))\\s+(\\S+?)?\\s*(\\\\E?[\"#].*)?$",
643
+ "end": "^(?:[ \\t]*\\x5C{2})?\\.[ \\t]*\\.",
644
644
  "patterns": [
645
645
  {
646
646
  "include": "$self"
@@ -682,8 +682,8 @@
682
682
  },
683
683
  {
684
684
  "name": "meta.macro.definition.with-terminator.$2.roff",
685
- "begin": "^([.'])[ \t]*((dei?1?)|(ami?1?))\\s+(\\S+)\\s*(\"[^\"]+\"?|\\S+?(?=\\s|\\\\[\"#]))?(.*)$",
686
- "end": "^(\\.)[ \t]*((\\6)(?=$|\\s|\\\\(?:$|\")))",
685
+ "begin": "^([.'])[ \\t]*((dei?1?)|(ami?1?))\\s+(\\S+)\\s*(\"[^\"]+\"?|\\S+?(?=\\s|\\\\E?[\"#]))?(.*)$",
686
+ "end": "^(\\.)[ \\t]*((\\6)(?=$|\\s|\\\\(?:$|\")))",
687
687
  "patterns": [
688
688
  {
689
689
  "include": "$self"
@@ -742,21 +742,163 @@
742
742
  "name": "constant.language.greek-letter.eqn.roff",
743
743
  "match": "(?x)\\b\n(DELTA|GAMMA|LAMBDA|OMEGA|PHI|PI|PSI|SIGMA|THETA|UPSILON|XI|alpha|beta|chi\n|delta|epsilon|eta|gamma|iota|kappa|lambda|mu|nu|omega|omicron|phi|pi|psi\n|rho|sigma|tau|theta|upsilon|xi|zeta)\\b"
744
744
  },
745
+ {
746
+ "name": "constant.language.math-function.eqn.roff",
747
+ "match": "\\b(and|arc|cos|cosh|det|exp|for|if|Im|lim|ln|log|max|min|Re|sin|sinh|tan|tanh)\\b"
748
+ },
745
749
  {
746
750
  "name": "constant.character.math-symbol.eqn.roff",
747
- "match": "(?x)\\b\n(sum|int|prod|union|inter|inf|partial|half|prime|approx|nothing|cdot\n|times|del|grad|[\u003e\u003c=!]=|\\+-|-\u003e|\u003c-|\u003c\u003c|\u003e\u003e|\\.{3}|,\\.,)\\b"
751
+ "match": "(?x)\n(?:[\u003e\u003c=!]=|\\+-|-\u003e|\u003c-|\u003c\u003c|\u003e\u003e|\\.{3}|,\\.+,|[-+=](?!\\d)|[*/\u003c\u003e])\n|\\b(?:approx|cdot|ceiling|del|grad|half|inf|inter|int|floor\n|nothing|partial|prime|prod|sum|times|union)\\b"
752
+ },
753
+ {
754
+ "begin": "{",
755
+ "end": "}|(?=\\.EN)",
756
+ "patterns": [
757
+ {
758
+ "include": "#eqn"
759
+ }
760
+ ],
761
+ "beginCaptures": {
762
+ "0": {
763
+ "name": "punctuation.section.bracket.curly.begin.eqn.roff"
764
+ }
765
+ },
766
+ "endCaptures": {
767
+ "0": {
768
+ "name": "punctuation.section.bracket.curly.end.eqn.roff"
769
+ }
770
+ }
771
+ },
772
+ {
773
+ "match": "(~|\\^)|(,)",
774
+ "captures": {
775
+ "1": {
776
+ "name": "keyword.operator.spacing.eqn.roff"
777
+ },
778
+ "2": {
779
+ "name": "punctuation.separator.delimiter.comma.eqn.roff"
780
+ }
781
+ }
748
782
  },
749
783
  {
750
- "name": "punctuation.definition.eqn.roff",
751
- "match": "[~,^{}]"
784
+ "begin": "\\b([nts]?define)\\s*(\\S+)\\s*(\\S)",
785
+ "end": "((?:(?!\\3).)*+)(\\3)|(?=\\.EN)",
786
+ "patterns": [
787
+ {
788
+ "match": "(\\{)([^}]*)(\\})",
789
+ "captures": {
790
+ "1": {
791
+ "name": "punctuation.section.bracket.curly.begin.eqn.roff"
792
+ },
793
+ "2": {
794
+ "patterns": [
795
+ {
796
+ "include": "#eqn"
797
+ },
798
+ {
799
+ "include": "#main"
800
+ }
801
+ ]
802
+ },
803
+ "3": {
804
+ "name": "punctuation.section.bracket.curly.end.eqn.roff"
805
+ }
806
+ }
807
+ },
808
+ {
809
+ "include": "#eqn"
810
+ },
811
+ {
812
+ "include": "#main"
813
+ }
814
+ ],
815
+ "beginCaptures": {
816
+ "1": {
817
+ "name": "storage.type.function.definition.eqn.roff"
818
+ },
819
+ "2": {
820
+ "name": "entity.name.function.eqn.roff"
821
+ },
822
+ "3": {
823
+ "name": "punctuation.section.definition.begin.eqn.roff"
824
+ }
825
+ },
826
+ "endCaptures": {
827
+ "1": {
828
+ "patterns": [
829
+ {
830
+ "include": "#eqn"
831
+ }
832
+ ]
833
+ },
834
+ "2": {
835
+ "name": "punctuation.section.definition.end.eqn.roff"
836
+ }
837
+ }
838
+ },
839
+ {
840
+ "begin": "\\b(ifdef)\\s*(\\S+)\\s*(\\S)",
841
+ "end": "((?:(?!\\3).)*+)(\\3)|(?=\\.EN)",
842
+ "patterns": [
843
+ {
844
+ "match": "(\\{)([^}]*)(\\})",
845
+ "captures": {
846
+ "1": {
847
+ "name": "punctuation.section.bracket.curly.begin.eqn.roff"
848
+ },
849
+ "2": {
850
+ "patterns": [
851
+ {
852
+ "include": "#eqn"
853
+ },
854
+ {
855
+ "include": "#main"
856
+ }
857
+ ]
858
+ },
859
+ "3": {
860
+ "name": "punctuation.section.bracket.curly.end.eqn.roff"
861
+ }
862
+ }
863
+ },
864
+ {
865
+ "include": "#eqn"
866
+ },
867
+ {
868
+ "include": "#main"
869
+ }
870
+ ],
871
+ "beginCaptures": {
872
+ "1": {
873
+ "name": "keyword.control.flow.if-defined.eqn.roff"
874
+ },
875
+ "2": {
876
+ "name": "entity.name.function.eqn.roff"
877
+ },
878
+ "3": {
879
+ "name": "punctuation.section.definition.begin.eqn.roff"
880
+ }
881
+ },
882
+ "endCaptures": {
883
+ "1": {
884
+ "patterns": [
885
+ {
886
+ "include": "#eqn"
887
+ }
888
+ ]
889
+ },
890
+ "2": {
891
+ "name": "punctuation.section.definition.end.eqn.roff"
892
+ }
893
+ }
752
894
  },
753
895
  {
754
896
  "name": "keyword.language.eqn.roff",
755
- "match": "(?x)\\b\n(above|back|bar|bold|ccol|col|cpile|define|delim|dot|dotdot|down|dyad|fat|font|from\n|fwd|gfont|gsize|hat|italic|lcol|left|lineup|lpile|mark|matrix|ndefine|over|pile\n|rcol|right|roman|rpile|size|sqrt|sub|sup|tdefine|tilde|to|under|up|vec)\\b"
897
+ "match": "(?x)\\b\n(above|back|bar|bold|ccol|col|cpile|delim|dot|dotdot|down|dyad|fat|font|from\n|fwd|gfont|gsize|hat|italic|lcol|left|lineup|lpile|mark|matrix|over|pile\n|rcol|right|roman|rpile|size|sqrt|sub|sup|tilde|to|under|up|vec)\\b"
756
898
  },
757
899
  {
758
900
  "name": "keyword.language.eqn.gnu.roff",
759
- "match": "(?x)\\b\n(accent|big|chartype|smallover|type|vcenter|uaccent|split|nosplit\n|opprime|special|sdefine|include|ifdef|undef|g[rb]font|space)\\b"
901
+ "match": "(?x)\\b\n(accent|big|chartype|smallover|type|vcenter|uaccent|split|nosplit\n|opprime|special|include|ifdef|undef|g[rb]font|space)\\b"
760
902
  },
761
903
  {
762
904
  "name": "constant.language.eqn.gnu.roff",
@@ -764,7 +906,7 @@
764
906
  },
765
907
  {
766
908
  "name": "meta.set-variable.eqn.gnu.roff",
767
- "match": "(?x)\\b(set)[ \t]+\n(accent_width|axis_height|baseline_sep|big_op_spacing[1-5]|body_depth|body_height|column_sep\n|default_rule_thickness|delimiter_factor|delimiter_shortfall|denom[12]|draw_lines|fat_offset\n|matrix_side_sep|medium_space|minimum_size|nroff|null_delimiter_space|num[12]|over_hang\n|script_space|shift_down|su[bp]_drop|sub[12]|sup[1-3]|thick_space|thin_space|x_height)\\b",
909
+ "match": "(?x)\\b(set)[ \\t]+\n(accent_width|axis_height|baseline_sep|big_op_spacing[1-5]|body_depth|body_height|column_sep\n|default_rule_thickness|delimiter_factor|delimiter_shortfall|denom[12]|draw_lines|fat_offset\n|matrix_side_sep|medium_space|minimum_size|nroff|null_delimiter_space|num[12]|over_hang\n|script_space|shift_down|su[bp]_drop|sub[12]|sup[1-3]|thick_space|thin_space|x_height)\\b",
768
910
  "captures": {
769
911
  "1": {
770
912
  "name": "storage.type.var.eqn.roff"
@@ -774,6 +916,27 @@
774
916
  }
775
917
  }
776
918
  },
919
+ {
920
+ "name": "string.unquoted.parameter.eqn.roff",
921
+ "match": "(?![\\d\\\\\"])[^-,!.{}\\[\\]*/^+\u003c=\u003e~\\s\"]+"
922
+ },
923
+ {
924
+ "match": "(?\u003c=delim)\\s*(?:(on)|(off))\\b",
925
+ "captures": {
926
+ "1": {
927
+ "name": "constant.language.boolean.logical.true.eqn.roff"
928
+ },
929
+ "2": {
930
+ "name": "constant.language.boolean.logical.false.eqn.roff"
931
+ }
932
+ }
933
+ },
934
+ {
935
+ "include": "#escapes"
936
+ },
937
+ {
938
+ "include": "#number"
939
+ },
777
940
  {
778
941
  "include": "#string"
779
942
  }
@@ -792,8 +955,8 @@
792
955
  "escapes-clipped": {
793
956
  "patterns": [
794
957
  {
795
- "begin": "\\\\f(?:[I2]|\\(CI|\\[\\s*(?:[I2]|CI)\\s*\\])",
796
- "end": "$|(?=\\\\f[\\[A-Za-z0-9])",
958
+ "begin": "\\\\E?f(?:[I2]|\\(CI|\\[\\s*(?:[I2]|CI)\\s*\\])",
959
+ "end": "$|(?=\\\\E?f[\\[A-Za-z0-9])",
797
960
  "patterns": [
798
961
  {
799
962
  "include": "#escaped-newline"
@@ -816,8 +979,8 @@
816
979
  }
817
980
  },
818
981
  {
819
- "begin": "\\\\f(?:[B3]|\\(CB|\\[\\s*(?:[B3]|CB)\\s*\\])",
820
- "end": "$|(?=\\\\f[\\[A-Za-z0-9])",
982
+ "begin": "\\\\E?f(?:[B3]|\\(CB|\\[\\s*(?:[B3]|CB)\\s*\\])",
983
+ "end": "$|(?=\\\\E?f[\\[A-Za-z0-9])",
821
984
  "patterns": [
822
985
  {
823
986
  "include": "#escaped-newline"
@@ -840,8 +1003,8 @@
840
1003
  }
841
1004
  },
842
1005
  {
843
- "begin": "\\\\f(?:4|\\(BI|\\[\\s*BI\\s*\\])",
844
- "end": "$|(?=\\\\f[\\[A-Za-z0-9])",
1006
+ "begin": "\\\\E?f(?:4|\\(BI|\\[\\s*BI\\s*\\])",
1007
+ "end": "$|(?=\\\\E?f[\\[A-Za-z0-9])",
845
1008
  "patterns": [
846
1009
  {
847
1010
  "include": "#escaped-newline"
@@ -864,8 +1027,8 @@
864
1027
  }
865
1028
  },
866
1029
  {
867
- "begin": "\\\\f(?:\\(C[WR]|\\[\\s*C[WR]\\s*\\])",
868
- "end": "$|(?=\\\\f[\\[A-Za-z0-9])",
1030
+ "begin": "\\\\E?f(?:\\(C[WR]|\\[\\s*C[WR]\\s*\\])",
1031
+ "end": "$|(?=\\\\E?f[\\[A-Za-z0-9])",
869
1032
  "patterns": [
870
1033
  {
871
1034
  "include": "#escaped-newline"
@@ -897,7 +1060,7 @@
897
1060
  },
898
1061
  {
899
1062
  "name": "comment.line.roff",
900
- "begin": "(?:^(\\.|'+)\\s*)?(\\\\\")",
1063
+ "begin": "(?:^(\\.|'+)\\s*)?(\\\\E?\")",
901
1064
  "end": "$",
902
1065
  "beginCaptures": {
903
1066
  "1": {
@@ -910,7 +1073,7 @@
910
1073
  },
911
1074
  {
912
1075
  "name": "comment.line.number-sign.gnu.roff",
913
- "begin": "(?:^(\\.|'+)\\s*)?(\\\\#).*$\\n?",
1076
+ "begin": "(?:^(\\.|'+)\\s*)?(\\\\E?#).*$\\R?",
914
1077
  "end": "^",
915
1078
  "beginCaptures": {
916
1079
  "1": {
@@ -923,7 +1086,7 @@
923
1086
  },
924
1087
  {
925
1088
  "name": "comment.empty.roff",
926
- "match": "^(\\.|'+)[ \t]*$",
1089
+ "match": "^(\\.|'+)[ \\t]*$",
927
1090
  "captures": {
928
1091
  "1": {
929
1092
  "name": "punctuation.definition.comment.roff"
@@ -938,36 +1101,60 @@
938
1101
  },
939
1102
  {
940
1103
  "name": "constant.character.escape.backslash.roff",
941
- "match": "(\\\\)\\1",
1104
+ "match": "(?:((\\\\)E)|(\\\\))\\\\",
942
1105
  "captures": {
943
1106
  "1": {
1107
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1108
+ },
1109
+ "2": {
1110
+ "name": "punctuation.definition.escape.roff"
1111
+ },
1112
+ "3": {
944
1113
  "name": "punctuation.definition.escape.roff"
945
1114
  }
946
1115
  }
947
1116
  },
948
1117
  {
949
1118
  "name": "constant.character.escape.tab.roff",
950
- "match": "(\\\\)t",
1119
+ "match": "(?:((\\\\)E)|(\\\\))t",
951
1120
  "captures": {
952
1121
  "1": {
1122
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1123
+ },
1124
+ "2": {
1125
+ "name": "punctuation.definition.escape.roff"
1126
+ },
1127
+ "3": {
953
1128
  "name": "punctuation.definition.escape.roff"
954
1129
  }
955
1130
  }
956
1131
  },
957
1132
  {
958
1133
  "name": "constant.character.escape.leader-char.roff",
959
- "match": "(\\\\)a",
1134
+ "match": "(?:((\\\\)E)|(\\\\))a",
960
1135
  "captures": {
961
1136
  "1": {
1137
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1138
+ },
1139
+ "2": {
1140
+ "name": "punctuation.definition.escape.roff"
1141
+ },
1142
+ "3": {
962
1143
  "name": "punctuation.definition.escape.roff"
963
1144
  }
964
1145
  }
965
1146
  },
966
1147
  {
967
1148
  "name": "constant.character.escape.dot.roff",
968
- "match": "(\\\\)\\.",
1149
+ "match": "(?:((\\\\)E)|(\\\\))\\.",
969
1150
  "captures": {
970
1151
  "1": {
1152
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1153
+ },
1154
+ "2": {
1155
+ "name": "punctuation.definition.escape.roff"
1156
+ },
1157
+ "3": {
971
1158
  "name": "punctuation.definition.escape.roff"
972
1159
  }
973
1160
  }
@@ -995,7 +1182,7 @@
995
1182
  {
996
1183
  "name": "constant.character.escape.function.interpolate-string.gnu.roff",
997
1184
  "contentName": "function-call.arguments.roff",
998
- "begin": "((\\\\)\\*(\\[))",
1185
+ "begin": "((?:((\\\\)E)|(\\\\))\\*(\\[))",
999
1186
  "end": "(\\])|(?\u003c!\\\\)(?=$)",
1000
1187
  "patterns": [
1001
1188
  {
@@ -1007,9 +1194,15 @@
1007
1194
  "name": "entity.name.roff"
1008
1195
  },
1009
1196
  "2": {
1010
- "name": "punctuation.definition.escape.roff"
1197
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1011
1198
  },
1012
1199
  "3": {
1200
+ "name": "punctuation.definition.escape.roff"
1201
+ },
1202
+ "4": {
1203
+ "name": "punctuation.definition.escape.roff"
1204
+ },
1205
+ "5": {
1013
1206
  "name": "punctuation.section.begin.bracket.square.roff"
1014
1207
  }
1015
1208
  },
@@ -1021,39 +1214,57 @@
1021
1214
  },
1022
1215
  {
1023
1216
  "name": "constant.character.escape.function.interpolate-string.roff",
1024
- "match": "((\\\\)\\*(\\())(\\S{2})|((\\\\)\\*)(\\S)",
1217
+ "match": "((?:((\\\\)E)|(\\\\))\\*(\\())(\\S{2})|((?:((\\\\)E)|(\\\\))\\*)(\\S)",
1025
1218
  "captures": {
1026
1219
  "1": {
1027
1220
  "name": "entity.name.roff"
1028
1221
  },
1029
- "2": {
1222
+ "10": {
1030
1223
  "name": "punctuation.definition.escape.roff"
1031
1224
  },
1225
+ "11": {
1226
+ "name": "variable.parameter.roff"
1227
+ },
1228
+ "2": {
1229
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1230
+ },
1032
1231
  "3": {
1033
- "name": "punctuation.definition.brace.roff"
1232
+ "name": "punctuation.definition.escape.roff"
1034
1233
  },
1035
1234
  "4": {
1036
- "name": "variable.parameter.roff"
1235
+ "name": "punctuation.definition.escape.roff"
1037
1236
  },
1038
1237
  "5": {
1039
- "name": "entity.name.roff"
1238
+ "name": "punctuation.definition.brace.roff"
1040
1239
  },
1041
1240
  "6": {
1042
- "name": "punctuation.definition.escape.roff"
1241
+ "name": "variable.parameter.roff"
1043
1242
  },
1044
1243
  "7": {
1045
- "name": "variable.parameter.roff"
1244
+ "name": "entity.name.roff"
1245
+ },
1246
+ "8": {
1247
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1248
+ },
1249
+ "9": {
1250
+ "name": "punctuation.definition.escape.roff"
1046
1251
  }
1047
1252
  }
1048
1253
  },
1049
1254
  {
1050
1255
  "name": "constant.character.escape.function.interpolate-argument.roff",
1051
- "match": "((\\\\)\\$\\d)",
1256
+ "match": "((?:((\\\\)E)|(\\\\))\\$\\d)",
1052
1257
  "captures": {
1053
1258
  "1": {
1054
1259
  "name": "entity.name.roff"
1055
1260
  },
1056
1261
  "2": {
1262
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1263
+ },
1264
+ "3": {
1265
+ "name": "punctuation.definition.escape.roff"
1266
+ },
1267
+ "4": {
1057
1268
  "name": "punctuation.definition.escape.roff"
1058
1269
  }
1059
1270
  }
@@ -1061,11 +1272,11 @@
1061
1272
  {
1062
1273
  "name": "constant.character.escape.function.set-colour.gnu.roff",
1063
1274
  "contentName": "variable.parameter.roff",
1064
- "begin": "((\\\\)[Mm](\\[))",
1275
+ "begin": "((?:((\\\\)E)|(\\\\))[Mm](\\[))",
1065
1276
  "end": "(\\])|(?\u003c!\\\\)(?=$)",
1066
1277
  "patterns": [
1067
1278
  {
1068
- "include": "#params"
1279
+ "include": "#long-params"
1069
1280
  }
1070
1281
  ],
1071
1282
  "beginCaptures": {
@@ -1073,9 +1284,15 @@
1073
1284
  "name": "entity.name.roff"
1074
1285
  },
1075
1286
  "2": {
1076
- "name": "punctuation.definition.escape.roff"
1287
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1077
1288
  },
1078
1289
  "3": {
1290
+ "name": "punctuation.definition.escape.roff"
1291
+ },
1292
+ "4": {
1293
+ "name": "punctuation.definition.escape.roff"
1294
+ },
1295
+ "5": {
1079
1296
  "name": "punctuation.section.begin.bracket.square.roff"
1080
1297
  }
1081
1298
  },
@@ -1087,39 +1304,51 @@
1087
1304
  },
1088
1305
  {
1089
1306
  "name": "constant.character.escape.function.set-colour.gnu.roff",
1090
- "match": "((\\\\)[Mm](\\())(\\S{2})|((\\\\)[Mm])(\\S)",
1307
+ "match": "((?:((\\\\)E)|(\\\\))[Mm](\\())(\\S{2})|((?:((\\\\)E)|(\\\\))[Mm])(\\S)",
1091
1308
  "captures": {
1092
1309
  "1": {
1093
1310
  "name": "entity.name.roff"
1094
1311
  },
1095
- "2": {
1312
+ "10": {
1096
1313
  "name": "punctuation.definition.escape.roff"
1097
1314
  },
1315
+ "11": {
1316
+ "name": "variable.parameter.roff"
1317
+ },
1318
+ "2": {
1319
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1320
+ },
1098
1321
  "3": {
1099
- "name": "punctuation.definition.brace.roff"
1322
+ "name": "punctuation.definition.escape.roff"
1100
1323
  },
1101
1324
  "4": {
1102
- "name": "variable.parameter.roff"
1325
+ "name": "punctuation.definition.escape.roff"
1103
1326
  },
1104
1327
  "5": {
1105
- "name": "entity.name.roff"
1328
+ "name": "punctuation.definition.brace.roff"
1106
1329
  },
1107
1330
  "6": {
1108
- "name": "punctuation.definition.escape.roff"
1331
+ "name": "variable.parameter.roff"
1109
1332
  },
1110
1333
  "7": {
1111
- "name": "variable.parameter.roff"
1334
+ "name": "entity.name.roff"
1335
+ },
1336
+ "8": {
1337
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1338
+ },
1339
+ "9": {
1340
+ "name": "punctuation.definition.escape.roff"
1112
1341
  }
1113
1342
  }
1114
1343
  },
1115
1344
  {
1116
1345
  "name": "constant.character.escape.function.point-size.gnu.roff",
1117
1346
  "contentName": "variable.parameter.roff",
1118
- "begin": "((\\\\)s([-+])?(\\[))",
1347
+ "begin": "((?:((\\\\)E)|(\\\\))s([-+])?(\\[))",
1119
1348
  "end": "(\\])|(?\u003c!\\\\)(?=$)",
1120
1349
  "patterns": [
1121
1350
  {
1122
- "include": "#params"
1351
+ "include": "#long-params"
1123
1352
  }
1124
1353
  ],
1125
1354
  "beginCaptures": {
@@ -1127,12 +1356,18 @@
1127
1356
  "name": "entity.name.roff"
1128
1357
  },
1129
1358
  "2": {
1130
- "name": "punctuation.definition.escape.roff"
1359
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1131
1360
  },
1132
1361
  "3": {
1133
- "name": "keyword.operator.arithmetic.roff"
1362
+ "name": "punctuation.definition.escape.roff"
1134
1363
  },
1135
1364
  "4": {
1365
+ "name": "punctuation.definition.escape.roff"
1366
+ },
1367
+ "5": {
1368
+ "name": "keyword.operator.arithmetic.roff"
1369
+ },
1370
+ "6": {
1136
1371
  "name": "punctuation.section.begin.bracket.square.roff"
1137
1372
  }
1138
1373
  },
@@ -1145,8 +1380,8 @@
1145
1380
  {
1146
1381
  "name": "constant.character.escape.function.check-identifier.gnu.roff",
1147
1382
  "contentName": "string.other.roff",
1148
- "begin": "((\\\\)(?!s[-+]?\\d)[ABRsZ])((.))",
1149
- "end": "(\\4)|(?\u003c!\\\\)(?=$)",
1383
+ "begin": "((?:((\\\\)E)|(\\\\))(?!s[-+]?\\(?\\d)[ABRsZ])((.))",
1384
+ "end": "(\\6)|(?\u003c!\\\\)(?=$)",
1150
1385
  "patterns": [
1151
1386
  {
1152
1387
  "include": "#escapes"
@@ -1157,12 +1392,18 @@
1157
1392
  "name": "entity.name.function.roff"
1158
1393
  },
1159
1394
  "2": {
1160
- "name": "punctuation.definition.escape.roff"
1395
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1161
1396
  },
1162
1397
  "3": {
1163
- "name": "string.other.roff"
1398
+ "name": "punctuation.definition.escape.roff"
1164
1399
  },
1165
1400
  "4": {
1401
+ "name": "punctuation.definition.escape.roff"
1402
+ },
1403
+ "5": {
1404
+ "name": "string.other.roff"
1405
+ },
1406
+ "6": {
1166
1407
  "name": "punctuation.definition.begin.roff"
1167
1408
  }
1168
1409
  },
@@ -1177,15 +1418,21 @@
1177
1418
  },
1178
1419
  {
1179
1420
  "name": "constant.character.escape.internal.gnu.roff",
1180
- "match": "((\\\\)O([0-4]))",
1421
+ "match": "((?:((\\\\)E)|(\\\\))O([0-4]))",
1181
1422
  "captures": {
1182
1423
  "1": {
1183
1424
  "name": "entity.name.roff"
1184
1425
  },
1185
1426
  "2": {
1186
- "name": "punctuation.definition.escape.roff"
1427
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1187
1428
  },
1188
1429
  "3": {
1430
+ "name": "punctuation.definition.escape.roff"
1431
+ },
1432
+ "4": {
1433
+ "name": "punctuation.definition.escape.roff"
1434
+ },
1435
+ "5": {
1189
1436
  "name": "constant.numeric.roff"
1190
1437
  }
1191
1438
  }
@@ -1193,7 +1440,7 @@
1193
1440
  {
1194
1441
  "name": "constant.character.escape.internal.stderr-write-file.gnu.roff",
1195
1442
  "contentName": "string.unquoted.filename.roff",
1196
- "begin": "((\\\\)O(5)(\\[))",
1443
+ "begin": "((?:((\\\\)E)|(\\\\))O(5)(\\[))",
1197
1444
  "end": "(\\])|(?\u003c!\\\\)(?=$)",
1198
1445
  "patterns": [
1199
1446
  {
@@ -1205,12 +1452,18 @@
1205
1452
  "name": "entity.name.roff"
1206
1453
  },
1207
1454
  "2": {
1208
- "name": "punctuation.definition.escape.roff"
1455
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1209
1456
  },
1210
1457
  "3": {
1211
- "name": "constant.numeric.roff"
1458
+ "name": "punctuation.definition.escape.roff"
1212
1459
  },
1213
1460
  "4": {
1461
+ "name": "punctuation.definition.escape.roff"
1462
+ },
1463
+ "5": {
1464
+ "name": "constant.numeric.roff"
1465
+ },
1466
+ "6": {
1214
1467
  "name": "punctuation.section.begin.bracket.square.roff"
1215
1468
  }
1216
1469
  },
@@ -1222,7 +1475,7 @@
1222
1475
  },
1223
1476
  {
1224
1477
  "name": "constant.character.escape.function.interpolate-variable.gnu.roff",
1225
- "begin": "((\\\\)[VY](\\[))",
1478
+ "begin": "((?:((\\\\)E)|(\\\\))[VY](\\[))",
1226
1479
  "end": "(\\])|(?\u003c!\\\\)(?=$)",
1227
1480
  "patterns": [
1228
1481
  {
@@ -1234,9 +1487,15 @@
1234
1487
  "name": "entity.name.roff"
1235
1488
  },
1236
1489
  "2": {
1237
- "name": "punctuation.definition.escape.roff"
1490
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1238
1491
  },
1239
1492
  "3": {
1493
+ "name": "punctuation.definition.escape.roff"
1494
+ },
1495
+ "4": {
1496
+ "name": "punctuation.definition.escape.roff"
1497
+ },
1498
+ "5": {
1240
1499
  "name": "punctuation.section.begin.bracket.square.roff"
1241
1500
  }
1242
1501
  },
@@ -1248,44 +1507,62 @@
1248
1507
  },
1249
1508
  {
1250
1509
  "name": "constant.character.escape.function.interpolate-variable.gnu.roff",
1251
- "match": "((\\\\)[VY](\\())(\\S{2})|((\\\\)[VY])(\\S)",
1510
+ "match": "((?:((\\\\)E)|(\\\\))[VY](\\())(\\S{2})|((?:((\\\\)E)|(\\\\))[VY])(\\S)",
1252
1511
  "captures": {
1253
1512
  "1": {
1254
1513
  "name": "entity.name.roff"
1255
1514
  },
1256
- "2": {
1515
+ "10": {
1257
1516
  "name": "punctuation.definition.escape.roff"
1258
1517
  },
1518
+ "11": {
1519
+ "name": "variable.parameter.roff"
1520
+ },
1521
+ "2": {
1522
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1523
+ },
1259
1524
  "3": {
1260
- "name": "punctuation.definition.brace.roff"
1525
+ "name": "punctuation.definition.escape.roff"
1261
1526
  },
1262
1527
  "4": {
1263
- "name": "variable.parameter.roff"
1528
+ "name": "punctuation.definition.escape.roff"
1264
1529
  },
1265
1530
  "5": {
1266
- "name": "entity.name.roff"
1531
+ "name": "punctuation.definition.brace.roff"
1267
1532
  },
1268
1533
  "6": {
1269
- "name": "punctuation.definition.escape.roff"
1534
+ "name": "variable.parameter.roff"
1270
1535
  },
1271
1536
  "7": {
1272
- "name": "variable.parameter.roff"
1537
+ "name": "entity.name.roff"
1538
+ },
1539
+ "8": {
1540
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1541
+ },
1542
+ "9": {
1543
+ "name": "punctuation.definition.escape.roff"
1273
1544
  }
1274
1545
  }
1275
1546
  },
1276
1547
  {
1277
- "match": "((\\\\)(\\?))(.*)((\\\\)(\\?))",
1548
+ "match": "((?:((\\\\)E)|(\\\\))(\\?))(.*?)((\\\\)(\\?))",
1278
1549
  "captures": {
1279
1550
  "1": {
1280
1551
  "name": "constant.character.escape.embed-diversion.start.gnu.roff"
1281
1552
  },
1282
1553
  "2": {
1283
- "name": "punctuation.definition.escape.roff"
1554
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1284
1555
  },
1285
1556
  "3": {
1286
- "name": "punctuation.definition.script.roff"
1557
+ "name": "punctuation.definition.escape.roff"
1287
1558
  },
1288
1559
  "4": {
1560
+ "name": "punctuation.definition.escape.roff"
1561
+ },
1562
+ "5": {
1563
+ "name": "punctuation.definition.script.roff"
1564
+ },
1565
+ "6": {
1289
1566
  "name": "string.interpolated.roff",
1290
1567
  "patterns": [
1291
1568
  {
@@ -1293,43 +1570,55 @@
1293
1570
  }
1294
1571
  ]
1295
1572
  },
1296
- "5": {
1573
+ "7": {
1297
1574
  "name": "constant.character.escape.embed-diversion.start.gnu.roff"
1298
1575
  },
1299
- "6": {
1576
+ "8": {
1300
1577
  "name": "punctuation.definition.escape.roff"
1301
1578
  },
1302
- "7": {
1579
+ "9": {
1303
1580
  "name": "punctuation.definition.script.roff"
1304
1581
  }
1305
1582
  }
1306
1583
  },
1307
1584
  {
1308
1585
  "name": "constant.character.escape.function.concatenated-arguments.gnu.roff",
1309
- "match": "((\\\\)\\$[*@^])",
1586
+ "match": "((?:((\\\\)E)|(\\\\))\\$[*@^])",
1310
1587
  "captures": {
1311
1588
  "1": {
1312
1589
  "name": "variable.language.roff"
1313
1590
  },
1314
1591
  "2": {
1592
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1593
+ },
1594
+ "3": {
1595
+ "name": "punctuation.definition.escape.roff"
1596
+ },
1597
+ "4": {
1315
1598
  "name": "punctuation.definition.escape.roff"
1316
1599
  }
1317
1600
  }
1318
1601
  },
1319
1602
  {
1320
1603
  "name": "constant.character.escape.function.interpolate-argument.gnu.roff",
1321
- "match": "((\\\\)\\$(\\())(\\S{2})",
1604
+ "match": "((?:((\\\\)E)|(\\\\))\\$(\\())(\\S{2})",
1322
1605
  "captures": {
1323
1606
  "1": {
1324
1607
  "name": "entity.name.roff"
1325
1608
  },
1326
1609
  "2": {
1327
- "name": "punctuation.definition.escape.roff"
1610
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1328
1611
  },
1329
1612
  "3": {
1330
- "name": "punctuation.definition.brace.roff"
1613
+ "name": "punctuation.definition.escape.roff"
1331
1614
  },
1332
1615
  "4": {
1616
+ "name": "punctuation.definition.escape.roff"
1617
+ },
1618
+ "5": {
1619
+ "name": "punctuation.definition.brace.roff"
1620
+ },
1621
+ "6": {
1333
1622
  "name": "variable.parameter.roff"
1334
1623
  }
1335
1624
  }
@@ -1337,7 +1626,7 @@
1337
1626
  {
1338
1627
  "name": "constant.character.escape.function.interpolate-argument.gnu.roff",
1339
1628
  "contentName": "variable.parameter.roff",
1340
- "begin": "((\\\\)\\$(\\[))",
1629
+ "begin": "((?:((\\\\)E)|(\\\\))\\$(\\[))",
1341
1630
  "end": "(\\])|(?\u003c!\\\\)(?=$)",
1342
1631
  "patterns": [
1343
1632
  {
@@ -1349,9 +1638,15 @@
1349
1638
  "name": "entity.name.roff"
1350
1639
  },
1351
1640
  "2": {
1352
- "name": "punctuation.definition.escape.roff"
1641
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1353
1642
  },
1354
1643
  "3": {
1644
+ "name": "punctuation.definition.escape.roff"
1645
+ },
1646
+ "4": {
1647
+ "name": "punctuation.definition.escape.roff"
1648
+ },
1649
+ "5": {
1355
1650
  "name": "punctuation.section.begin.bracket.square.roff"
1356
1651
  }
1357
1652
  },
@@ -1367,7 +1662,7 @@
1367
1662
  "patterns": [
1368
1663
  {
1369
1664
  "name": "constant.character.escape.current-escape-char.roff",
1370
- "match": "(\\\\)e",
1665
+ "match": "(\\\\)E?e",
1371
1666
  "captures": {
1372
1667
  "1": {
1373
1668
  "name": "punctuation.definition.escape.roff"
@@ -1376,163 +1671,259 @@
1376
1671
  },
1377
1672
  {
1378
1673
  "name": "constant.character.escape.acute-accent.roff",
1379
- "match": "(\\\\)´",
1674
+ "match": "(?:((\\\\)E)|(\\\\))´",
1380
1675
  "captures": {
1381
1676
  "1": {
1677
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1678
+ },
1679
+ "2": {
1680
+ "name": "punctuation.definition.escape.roff"
1681
+ },
1682
+ "3": {
1382
1683
  "name": "punctuation.definition.escape.roff"
1383
1684
  }
1384
1685
  }
1385
1686
  },
1386
1687
  {
1387
1688
  "name": "constant.character.escape.grave-accent.roff",
1388
- "match": "(\\\\)`",
1689
+ "match": "(?:((\\\\)E)|(\\\\))`",
1389
1690
  "captures": {
1390
1691
  "1": {
1692
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1693
+ },
1694
+ "2": {
1695
+ "name": "punctuation.definition.escape.roff"
1696
+ },
1697
+ "3": {
1391
1698
  "name": "punctuation.definition.escape.roff"
1392
1699
  }
1393
1700
  }
1394
1701
  },
1395
1702
  {
1396
1703
  "name": "constant.character.escape.minus.roff",
1397
- "match": "(\\\\)-",
1704
+ "match": "(?:((\\\\)E)|(\\\\))-",
1398
1705
  "captures": {
1399
1706
  "1": {
1707
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1708
+ },
1709
+ "2": {
1710
+ "name": "punctuation.definition.escape.roff"
1711
+ },
1712
+ "3": {
1400
1713
  "name": "punctuation.definition.escape.roff"
1401
1714
  }
1402
1715
  }
1403
1716
  },
1404
1717
  {
1405
1718
  "name": "constant.character.escape.space.roff",
1406
- "match": "(\\\\) ",
1719
+ "match": "(?:((\\\\)E)|(\\\\)) ",
1407
1720
  "captures": {
1408
1721
  "1": {
1722
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1723
+ },
1724
+ "2": {
1725
+ "name": "punctuation.definition.escape.roff"
1726
+ },
1727
+ "3": {
1409
1728
  "name": "punctuation.definition.escape.roff"
1410
1729
  }
1411
1730
  }
1412
1731
  },
1413
1732
  {
1414
1733
  "name": "constant.character.escape.space.digit-width.roff",
1415
- "match": "(\\\\)0",
1734
+ "match": "(?:((\\\\)E)|(\\\\))0",
1416
1735
  "captures": {
1417
1736
  "1": {
1737
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1738
+ },
1739
+ "2": {
1740
+ "name": "punctuation.definition.escape.roff"
1741
+ },
1742
+ "3": {
1418
1743
  "name": "punctuation.definition.escape.roff"
1419
1744
  }
1420
1745
  }
1421
1746
  },
1422
1747
  {
1423
1748
  "name": "constant.character.escape.space.one-sixth-em.roff",
1424
- "match": "(\\\\)\\|",
1749
+ "match": "(?:((\\\\)E)|(\\\\))\\|",
1425
1750
  "captures": {
1426
1751
  "1": {
1752
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1753
+ },
1754
+ "2": {
1755
+ "name": "punctuation.definition.escape.roff"
1756
+ },
1757
+ "3": {
1427
1758
  "name": "punctuation.definition.escape.roff"
1428
1759
  }
1429
1760
  }
1430
1761
  },
1431
1762
  {
1432
1763
  "name": "constant.character.escape.space.one-twelfth-em.roff",
1433
- "match": "(\\\\)\\^",
1764
+ "match": "(?:((\\\\)E)|(\\\\))\\^",
1434
1765
  "captures": {
1435
1766
  "1": {
1767
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1768
+ },
1769
+ "2": {
1770
+ "name": "punctuation.definition.escape.roff"
1771
+ },
1772
+ "3": {
1436
1773
  "name": "punctuation.definition.escape.roff"
1437
1774
  }
1438
1775
  }
1439
1776
  },
1440
1777
  {
1441
1778
  "name": "constant.character.escape.zero-width-marker.roff",
1442
- "match": "(\\\\)\u0026",
1779
+ "match": "(?:((\\\\)E)|(\\\\))\u0026",
1443
1780
  "captures": {
1444
1781
  "1": {
1782
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1783
+ },
1784
+ "2": {
1785
+ "name": "punctuation.definition.escape.roff"
1786
+ },
1787
+ "3": {
1445
1788
  "name": "punctuation.definition.escape.roff"
1446
1789
  }
1447
1790
  }
1448
1791
  },
1449
1792
  {
1450
1793
  "name": "constant.character.escape.hyphenation-char.roff",
1451
- "match": "(\\\\)%",
1794
+ "match": "(?:((\\\\)E)|(\\\\))%",
1452
1795
  "captures": {
1453
1796
  "1": {
1797
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1798
+ },
1799
+ "2": {
1800
+ "name": "punctuation.definition.escape.roff"
1801
+ },
1802
+ "3": {
1454
1803
  "name": "punctuation.definition.escape.roff"
1455
1804
  }
1456
1805
  }
1457
1806
  },
1458
1807
  {
1459
1808
  "name": "constant.character.escape.connect.roff",
1460
- "match": "(\\\\)c",
1809
+ "match": "(?:((\\\\)E)|(\\\\))c",
1461
1810
  "captures": {
1462
1811
  "1": {
1812
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1813
+ },
1814
+ "2": {
1815
+ "name": "punctuation.definition.escape.roff"
1816
+ },
1817
+ "3": {
1463
1818
  "name": "punctuation.definition.escape.roff"
1464
1819
  }
1465
1820
  }
1466
1821
  },
1467
1822
  {
1468
1823
  "name": "constant.character.escape.downwards.roff",
1469
- "match": "(\\\\)d",
1824
+ "match": "(?:((\\\\)E)|(\\\\))d",
1470
1825
  "captures": {
1471
1826
  "1": {
1827
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1828
+ },
1829
+ "2": {
1830
+ "name": "punctuation.definition.escape.roff"
1831
+ },
1832
+ "3": {
1472
1833
  "name": "punctuation.definition.escape.roff"
1473
1834
  }
1474
1835
  }
1475
1836
  },
1476
1837
  {
1477
1838
  "name": "constant.character.escape.spread-line.roff",
1478
- "match": "(\\\\)p",
1839
+ "match": "(?:((\\\\)E)|(\\\\))p",
1479
1840
  "captures": {
1480
1841
  "1": {
1842
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1843
+ },
1844
+ "2": {
1845
+ "name": "punctuation.definition.escape.roff"
1846
+ },
1847
+ "3": {
1481
1848
  "name": "punctuation.definition.escape.roff"
1482
1849
  }
1483
1850
  }
1484
1851
  },
1485
1852
  {
1486
1853
  "name": "constant.character.escape.reverse.roff",
1487
- "match": "(\\\\)r",
1854
+ "match": "(?:((\\\\)E)|(\\\\))r",
1488
1855
  "captures": {
1489
1856
  "1": {
1857
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1858
+ },
1859
+ "2": {
1860
+ "name": "punctuation.definition.escape.roff"
1861
+ },
1862
+ "3": {
1490
1863
  "name": "punctuation.definition.escape.roff"
1491
1864
  }
1492
1865
  }
1493
1866
  },
1494
1867
  {
1495
1868
  "name": "constant.character.escape.upwards.roff",
1496
- "match": "(\\\\)u",
1869
+ "match": "(?:((\\\\)E)|(\\\\))u",
1497
1870
  "captures": {
1498
1871
  "1": {
1872
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1873
+ },
1874
+ "2": {
1875
+ "name": "punctuation.definition.escape.roff"
1876
+ },
1877
+ "3": {
1499
1878
  "name": "punctuation.definition.escape.roff"
1500
1879
  }
1501
1880
  }
1502
1881
  },
1503
1882
  {
1504
1883
  "name": "constant.character.escape.function.named-char.roff",
1505
- "match": "(\\\\)(\\()(\\S{2})",
1884
+ "match": "(?:((\\\\)E)|(\\\\))(\\()(\\S{2})",
1506
1885
  "captures": {
1507
1886
  "1": {
1508
- "name": "punctuation.definition.brace.roff"
1887
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1509
1888
  },
1510
1889
  "2": {
1511
1890
  "name": "punctuation.definition.escape.roff"
1512
1891
  },
1513
- "3": {
1892
+ "3": {
1893
+ "name": "punctuation.definition.brace.roff"
1894
+ },
1895
+ "4": {
1896
+ "name": "punctuation.definition.escape.roff"
1897
+ },
1898
+ "5": {
1514
1899
  "name": "variable.parameter.roff"
1515
1900
  }
1516
1901
  }
1517
1902
  },
1518
1903
  {
1519
1904
  "name": "constant.character.escape.function.named-char.gnu.roff",
1520
- "begin": "(\\\\)(\\[)",
1905
+ "begin": "(?:((\\\\)E)|(\\\\))(\\[)",
1521
1906
  "end": "(\\S*?)(\\])|(?\u003c!\\\\)(?=$)",
1522
1907
  "patterns": [
1523
1908
  {
1524
- "include": "#params"
1909
+ "include": "#long-params"
1525
1910
  },
1526
1911
  {
1527
1912
  "name": "variable.parameter.roff",
1528
- "match": "(?:[^\\s\\]\\\\]|\\\\(?![\"#]).)+"
1913
+ "match": "(?:[^\\s\\]\\\\]|\\\\(?!E?[\"#]).)+"
1529
1914
  }
1530
1915
  ],
1531
1916
  "beginCaptures": {
1532
1917
  "1": {
1533
- "name": "punctuation.definition.escape.roff"
1918
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1534
1919
  },
1535
1920
  "2": {
1921
+ "name": "punctuation.definition.escape.roff"
1922
+ },
1923
+ "3": {
1924
+ "name": "punctuation.definition.escape.roff"
1925
+ },
1926
+ "4": {
1536
1927
  "name": "punctuation.section.begin.bracket.square.roff"
1537
1928
  }
1538
1929
  },
@@ -1540,7 +1931,7 @@
1540
1931
  "1": {
1541
1932
  "patterns": [
1542
1933
  {
1543
- "include": "#params"
1934
+ "include": "#long-params"
1544
1935
  }
1545
1936
  ]
1546
1937
  },
@@ -1551,7 +1942,7 @@
1551
1942
  },
1552
1943
  {
1553
1944
  "name": "meta.function.begin.roff",
1554
- "match": "(?:^(\\.|'+)[ \t]*)?(\\\\\\{(?:\\\\(?=\\n))?)",
1945
+ "match": "(?:^(\\.|'+)[ \\t]*)?(\\\\\\{(?:\\\\(?=\\R|$))?)",
1555
1946
  "captures": {
1556
1947
  "1": {
1557
1948
  "name": "punctuation.definition.request.roff"
@@ -1563,7 +1954,7 @@
1563
1954
  },
1564
1955
  {
1565
1956
  "name": "meta.function.end.roff",
1566
- "match": "(?:^(\\.|'+)[ \t]*)?(\\\\\\}(?:\\\\(?=\\n))?)",
1957
+ "match": "(?:^(\\.|'+)[ \\t]*)?(\\\\\\}(?:\\\\(?=\\R|$))?)",
1567
1958
  "captures": {
1568
1959
  "1": {
1569
1960
  "name": "punctuation.definition.request.roff"
@@ -1576,8 +1967,8 @@
1576
1967
  {
1577
1968
  "name": "constant.character.escape.function.roff",
1578
1969
  "contentName": "string.other.roff",
1579
- "begin": "((\\\\)[bCDhHSlLovwxXN])((.))",
1580
- "end": "(\\4)|(?\u003c!\\\\)(?=$)",
1970
+ "begin": "((?:((\\\\)E)|(\\\\))[bCDhHSlLovwxXN])((.))",
1971
+ "end": "(\\6)|(?\u003c!\\\\)(?=$)",
1581
1972
  "patterns": [
1582
1973
  {
1583
1974
  "include": "#escapes"
@@ -1588,12 +1979,18 @@
1588
1979
  "name": "entity.name.function.roff"
1589
1980
  },
1590
1981
  "2": {
1591
- "name": "punctuation.definition.escape.roff"
1982
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1592
1983
  },
1593
1984
  "3": {
1594
- "name": "string.other.roff"
1985
+ "name": "punctuation.definition.escape.roff"
1595
1986
  },
1596
1987
  "4": {
1988
+ "name": "punctuation.definition.escape.roff"
1989
+ },
1990
+ "5": {
1991
+ "name": "string.other.roff"
1992
+ },
1993
+ "6": {
1597
1994
  "name": "punctuation.definition.begin.roff"
1598
1995
  }
1599
1996
  },
@@ -1608,7 +2005,7 @@
1608
2005
  },
1609
2006
  {
1610
2007
  "name": "meta.throughput.roff",
1611
- "begin": "(\\\\)!",
2008
+ "begin": "(?:((\\\\)E)|(\\\\))!",
1612
2009
  "end": "(?\u003c!\\\\)$",
1613
2010
  "patterns": [
1614
2011
  {
@@ -1620,25 +2017,37 @@
1620
2017
  "name": "constant.character.escape.transparent-line.roff"
1621
2018
  },
1622
2019
  "1": {
2020
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
2021
+ },
2022
+ "2": {
2023
+ "name": "punctuation.definition.escape.roff"
2024
+ },
2025
+ "3": {
1623
2026
  "name": "punctuation.definition.escape.roff"
1624
2027
  }
1625
2028
  }
1626
2029
  },
1627
2030
  {
1628
2031
  "name": "constant.character.escape.font.roff",
1629
- "match": "(\\\\)f[RP1]",
2032
+ "match": "(?:((\\\\)E)|(\\\\))f[RP1]",
1630
2033
  "captures": {
1631
2034
  "0": {
1632
2035
  "name": "entity.name.roff"
1633
2036
  },
1634
2037
  "1": {
2038
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
2039
+ },
2040
+ "2": {
2041
+ "name": "punctuation.definition.escape.roff"
2042
+ },
2043
+ "3": {
1635
2044
  "name": "punctuation.definition.escape.roff"
1636
2045
  }
1637
2046
  }
1638
2047
  },
1639
2048
  {
1640
- "begin": "((\\\\)f(?:[I2]|(\\()CI|(\\[)\\s*(?:[I2]|CI)\\s*(\\])))",
1641
- "end": "(?=\\\\f[\\[A-Za-z0-9])|^(?=\\.(?:SH|SS|P|[HILPT]P)\\b)",
2049
+ "begin": "((?:((\\\\)E)|(\\\\))f(?:[I2]|(\\()CI|(\\[)\\s*(?:[I2]|CI)\\s*(\\])))",
2050
+ "end": "(?=\\\\E?f[\\[A-Za-z0-9])|^(?=[.']\\s*(?:(?:SH|SS|P|[HILPT]P|di)\\b)|\\.)",
1642
2051
  "patterns": [
1643
2052
  {
1644
2053
  "include": "$self"
@@ -1655,19 +2064,25 @@
1655
2064
  "name": "entity.name.roff"
1656
2065
  },
1657
2066
  "2": {
1658
- "name": "punctuation.definition.escape.roff"
2067
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1659
2068
  },
1660
2069
  "3": {
1661
- "name": "punctuation.section.begin.bracket.square.roff"
2070
+ "name": "punctuation.definition.escape.roff"
1662
2071
  },
1663
2072
  "4": {
2073
+ "name": "punctuation.definition.escape.roff"
2074
+ },
2075
+ "5": {
2076
+ "name": "punctuation.section.begin.bracket.square.roff"
2077
+ },
2078
+ "6": {
1664
2079
  "name": "punctuation.section.end.bracket.square.roff"
1665
2080
  }
1666
2081
  }
1667
2082
  },
1668
2083
  {
1669
- "begin": "((\\\\)f(?:[B3]|(\\()CB|(\\[)\\s*(?:[B3]|CB)\\s*(\\])))",
1670
- "end": "(?=\\\\f[\\[A-Za-z0-9])|^(?=\\.(?:SH|SS|P|[HILPT]P)\\b)",
2084
+ "begin": "((?:((\\\\)E)|(\\\\))f(?:[B3]|(\\()CB|(\\[)\\s*(?:[B3]|CB)\\s*(\\])))",
2085
+ "end": "(?=\\\\E?f[\\[A-Za-z0-9])|^(?=[.']\\s*(?:(?:SH|SS|P|[HILPT]P|di)\\b)|\\.)",
1671
2086
  "patterns": [
1672
2087
  {
1673
2088
  "include": "$self"
@@ -1684,22 +2099,28 @@
1684
2099
  "name": "entity.name.roff"
1685
2100
  },
1686
2101
  "2": {
1687
- "name": "punctuation.definition.escape.roff"
2102
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1688
2103
  },
1689
2104
  "3": {
1690
- "name": "punctuation.definition.brace.roff"
2105
+ "name": "punctuation.definition.escape.roff"
1691
2106
  },
1692
2107
  "4": {
1693
- "name": "punctuation.section.begin.bracket.square.roff"
2108
+ "name": "punctuation.definition.escape.roff"
1694
2109
  },
1695
2110
  "5": {
2111
+ "name": "punctuation.definition.brace.roff"
2112
+ },
2113
+ "6": {
2114
+ "name": "punctuation.section.begin.bracket.square.roff"
2115
+ },
2116
+ "7": {
1696
2117
  "name": "punctuation.section.end.bracket.square.roff"
1697
2118
  }
1698
2119
  }
1699
2120
  },
1700
2121
  {
1701
- "begin": "((\\\\)f(?:4|(\\()BI|(\\[)\\s*BI\\s*(\\])))",
1702
- "end": "(?=\\\\f[\\[A-Za-z0-9])|^(?=\\.(?:SH|SS|P|[HILPT]P)\\b)",
2122
+ "begin": "((?:((\\\\)E)|(\\\\))f(?:4|(\\()BI|(\\[)\\s*BI\\s*(\\])))",
2123
+ "end": "(?=\\\\E?f[\\[A-Za-z0-9])|^(?=[.']\\s*(?:(?:SH|SS|P|[HILPT]P|di)\\b)|\\.)",
1703
2124
  "patterns": [
1704
2125
  {
1705
2126
  "include": "$self"
@@ -1716,22 +2137,28 @@
1716
2137
  "name": "entity.name.roff"
1717
2138
  },
1718
2139
  "2": {
1719
- "name": "punctuation.definition.escape.roff"
2140
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1720
2141
  },
1721
2142
  "3": {
1722
- "name": "punctuation.definition.brace.roff"
2143
+ "name": "punctuation.definition.escape.roff"
1723
2144
  },
1724
2145
  "4": {
1725
- "name": "punctuation.section.begin.bracket.square.roff"
2146
+ "name": "punctuation.definition.escape.roff"
1726
2147
  },
1727
2148
  "5": {
2149
+ "name": "punctuation.definition.brace.roff"
2150
+ },
2151
+ "6": {
2152
+ "name": "punctuation.section.begin.bracket.square.roff"
2153
+ },
2154
+ "7": {
1728
2155
  "name": "punctuation.section.end.bracket.square.roff"
1729
2156
  }
1730
2157
  }
1731
2158
  },
1732
2159
  {
1733
- "begin": "((\\\\)f(?:(\\()C[WR]|(\\[)\\s*C[WR]\\s*(\\])))",
1734
- "end": "(?=\\\\f[\\[A-Za-z0-9])|^(?=\\.(?:SH|SS|P|[HILPT]P)\\b)",
2160
+ "begin": "((?:((\\\\)E)|(\\\\))f(?:(\\()C[WR]|(\\[)\\s*C[WR]\\s*(\\])))",
2161
+ "end": "(?=\\\\E?f[\\[A-Za-z0-9])|^(?=[.']\\s*(?:(?:SH|SS|P|[HILPT]P|di)\\b)|\\.)",
1735
2162
  "patterns": [
1736
2163
  {
1737
2164
  "include": "$self"
@@ -1748,15 +2175,21 @@
1748
2175
  "name": "entity.name.roff"
1749
2176
  },
1750
2177
  "2": {
1751
- "name": "punctuation.definition.escape.roff"
2178
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1752
2179
  },
1753
2180
  "3": {
1754
- "name": "punctuation.definition.brace.roff"
2181
+ "name": "punctuation.definition.escape.roff"
1755
2182
  },
1756
2183
  "4": {
1757
- "name": "punctuation.section.begin.bracket.square.roff"
2184
+ "name": "punctuation.definition.escape.roff"
1758
2185
  },
1759
2186
  "5": {
2187
+ "name": "punctuation.definition.brace.roff"
2188
+ },
2189
+ "6": {
2190
+ "name": "punctuation.section.begin.bracket.square.roff"
2191
+ },
2192
+ "7": {
1760
2193
  "name": "punctuation.section.end.bracket.square.roff"
1761
2194
  }
1762
2195
  }
@@ -1764,7 +2197,7 @@
1764
2197
  {
1765
2198
  "name": "constant.character.escape.function.font.gnu.roff",
1766
2199
  "contentName": "variable.parameter.roff",
1767
- "begin": "((\\\\)[Ff](\\[))",
2200
+ "begin": "((?:((\\\\)E)|(\\\\))[Ff](\\[))",
1768
2201
  "end": "(\\])|(?\u003c!\\\\)(?=$)",
1769
2202
  "patterns": [
1770
2203
  {
@@ -1776,9 +2209,15 @@
1776
2209
  "name": "entity.name.roff"
1777
2210
  },
1778
2211
  "2": {
1779
- "name": "punctuation.definition.escape.roff"
2212
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1780
2213
  },
1781
2214
  "3": {
2215
+ "name": "punctuation.definition.escape.roff"
2216
+ },
2217
+ "4": {
2218
+ "name": "punctuation.definition.escape.roff"
2219
+ },
2220
+ "5": {
1782
2221
  "name": "punctuation.section.begin.bracket.square.roff"
1783
2222
  }
1784
2223
  },
@@ -1790,111 +2229,159 @@
1790
2229
  },
1791
2230
  {
1792
2231
  "name": "constant.character.escape.function.font.roff",
1793
- "match": "((\\\\)[Ff](\\())(\\S{2})|((\\\\)[Ff])(\\S)",
2232
+ "match": "((?:((\\\\)E)|(\\\\))[Ff](\\())(\\S{2})|((?:((\\\\)E)|(\\\\))[Ff])(\\S)",
1794
2233
  "captures": {
1795
2234
  "1": {
1796
2235
  "name": "entity.name.roff"
1797
2236
  },
1798
- "2": {
2237
+ "10": {
1799
2238
  "name": "punctuation.definition.escape.roff"
1800
2239
  },
2240
+ "11": {
2241
+ "name": "variable.parameter.roff"
2242
+ },
2243
+ "2": {
2244
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
2245
+ },
1801
2246
  "3": {
1802
- "name": "punctuation.definition.brace.roff"
2247
+ "name": "punctuation.definition.escape.roff"
1803
2248
  },
1804
2249
  "4": {
1805
- "name": "variable.parameter.roff"
2250
+ "name": "punctuation.definition.escape.roff"
1806
2251
  },
1807
2252
  "5": {
1808
- "name": "entity.name.roff"
2253
+ "name": "punctuation.definition.brace.roff"
1809
2254
  },
1810
2255
  "6": {
1811
- "name": "punctuation.definition.escape.roff"
2256
+ "name": "variable.parameter.roff"
1812
2257
  },
1813
2258
  "7": {
1814
- "name": "variable.parameter.roff"
2259
+ "name": "entity.name.roff"
2260
+ },
2261
+ "8": {
2262
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
2263
+ },
2264
+ "9": {
2265
+ "name": "punctuation.definition.escape.roff"
1815
2266
  }
1816
2267
  }
1817
2268
  },
1818
2269
  {
1819
2270
  "name": "constant.character.escape.function.format-register.roff",
1820
- "match": "((\\\\)g(\\())(\\S{2})|((\\\\)g)(\\S)",
2271
+ "match": "((?:((\\\\)E)|(\\\\))g(\\())(\\S{2})|((?:((\\\\)E)|(\\\\))g)(\\S)",
1821
2272
  "captures": {
1822
2273
  "1": {
1823
2274
  "name": "entity.name.roff"
1824
2275
  },
1825
- "2": {
2276
+ "10": {
1826
2277
  "name": "punctuation.definition.escape.roff"
1827
2278
  },
2279
+ "11": {
2280
+ "name": "variable.parameter.roff"
2281
+ },
2282
+ "2": {
2283
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
2284
+ },
1828
2285
  "3": {
1829
- "name": "punctuation.definition.brace.roff"
2286
+ "name": "punctuation.definition.escape.roff"
1830
2287
  },
1831
2288
  "4": {
1832
- "name": "variable.parameter.roff"
2289
+ "name": "punctuation.definition.escape.roff"
1833
2290
  },
1834
2291
  "5": {
1835
- "name": "entity.name.roff"
2292
+ "name": "punctuation.definition.brace.roff"
1836
2293
  },
1837
2294
  "6": {
1838
- "name": "punctuation.definition.escape.roff"
2295
+ "name": "variable.parameter.roff"
1839
2296
  },
1840
2297
  "7": {
1841
- "name": "variable.parameter.roff"
2298
+ "name": "entity.name.roff"
2299
+ },
2300
+ "8": {
2301
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
2302
+ },
2303
+ "9": {
2304
+ "name": "punctuation.definition.escape.roff"
1842
2305
  }
1843
2306
  }
1844
2307
  },
1845
2308
  {
1846
2309
  "name": "constant.character.escape.function.mark-input.roff",
1847
- "match": "((\\\\)k)(\\S)",
2310
+ "match": "((?:((\\\\)E)|(\\\\))k)(\\S)",
1848
2311
  "captures": {
1849
2312
  "1": {
1850
2313
  "name": "entity.name.roff"
1851
2314
  },
1852
2315
  "2": {
1853
- "name": "punctuation.definition.escape.roff"
2316
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1854
2317
  },
1855
2318
  "3": {
2319
+ "name": "punctuation.definition.escape.roff"
2320
+ },
2321
+ "4": {
2322
+ "name": "punctuation.definition.escape.roff"
2323
+ },
2324
+ "5": {
1856
2325
  "name": "variable.parameter.roff"
1857
2326
  }
1858
2327
  }
1859
2328
  },
1860
2329
  {
1861
2330
  "name": "constant.character.escape.function.point-size.roff",
1862
- "match": "((\\\\)s[-+]?(\\()?)(\\d+)",
2331
+ "match": "((?:((\\\\)E)|(\\\\))s[-+]?(\\()?)(\\d+)",
1863
2332
  "captures": {
1864
2333
  "1": {
1865
2334
  "name": "entity.name.roff"
1866
2335
  },
1867
2336
  "2": {
1868
- "name": "punctuation.definition.escape.roff"
2337
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1869
2338
  },
1870
2339
  "3": {
1871
- "name": "punctuation.definition.brace.roff"
2340
+ "name": "punctuation.definition.escape.roff"
1872
2341
  },
1873
2342
  "4": {
2343
+ "name": "punctuation.definition.escape.roff"
2344
+ },
2345
+ "5": {
2346
+ "name": "punctuation.definition.brace.roff"
2347
+ },
2348
+ "6": {
1874
2349
  "name": "variable.parameter.roff"
1875
2350
  }
1876
2351
  }
1877
2352
  },
1878
2353
  {
1879
2354
  "name": "constant.character.escape.function.zero-width-print.roff",
1880
- "match": "((\\\\)z)([^\\s\\\\])",
2355
+ "match": "((?:((\\\\)E)|(\\\\))z)([^\\s\\\\])",
1881
2356
  "captures": {
1882
2357
  "1": {
1883
2358
  "name": "entity.name.roff"
1884
2359
  },
1885
2360
  "2": {
1886
- "name": "punctuation.definition.escape.roff"
2361
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
1887
2362
  },
1888
2363
  "3": {
2364
+ "name": "punctuation.definition.escape.roff"
2365
+ },
2366
+ "4": {
2367
+ "name": "punctuation.definition.escape.roff"
2368
+ },
2369
+ "5": {
1889
2370
  "name": "variable.parameter.roff"
1890
2371
  }
1891
2372
  }
1892
2373
  },
1893
2374
  {
1894
2375
  "name": "constant.character.escape.misc.roff",
1895
- "match": "(\\\\)\\S",
2376
+ "match": "(?:((\\\\)E)|(\\\\))\\S",
1896
2377
  "captures": {
1897
2378
  "1": {
2379
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
2380
+ },
2381
+ "2": {
2382
+ "name": "punctuation.definition.escape.roff"
2383
+ },
2384
+ "3": {
1898
2385
  "name": "punctuation.definition.escape.roff"
1899
2386
  }
1900
2387
  }
@@ -1905,8 +2392,8 @@
1905
2392
  "patterns": [
1906
2393
  {
1907
2394
  "name": "markup.bold.roff",
1908
- "begin": "(?\u003c=^|\\s|\")(?!\"|\\\\\")((?:[^\\s\"\\\\]|\\\\(?!\").)+)",
1909
- "end": "(?=[ \t])|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\n|$)|(?=\\\\\")",
2395
+ "begin": "(?\u003c=^|\\s|\")(?!\"|\\\\E?\")((?:[^\\s\"\\\\]|\\\\(?!E?\").)+)",
2396
+ "end": "(?=[ \\t])|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\R|$)|(?=\\\\E?\")",
1910
2397
  "patterns": [
1911
2398
  {
1912
2399
  "include": "#escapes"
@@ -1929,10 +2416,10 @@
1929
2416
  {
1930
2417
  "contentName": "markup.bold.roff",
1931
2418
  "begin": "(\")",
1932
- "end": "((\"))([^\"\\s]+[ \t]*)?|(?=\\\\\")|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\n|$)",
2419
+ "end": "((\"))([^\"\\s]+[ \\t]*)?|(?=\\\\E?\")|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\R|$)",
1933
2420
  "patterns": [
1934
2421
  {
1935
- "match": "((?:[^\"\\\\]|\"\"|\\\\(?!\").)+)(?!$)",
2422
+ "match": "((?:[^\"\\\\]|\"\"|\\\\(?!E?\").)+)(?!$)",
1936
2423
  "captures": {
1937
2424
  "1": {
1938
2425
  "patterns": [
@@ -1974,10 +2461,10 @@
1974
2461
  {
1975
2462
  "contentName": "markup.bold.roff",
1976
2463
  "begin": "(\")",
1977
- "end": "((\"))([^\"\\s]+[ \t]*)?|(?=\\\\\")|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\n|$)",
2464
+ "end": "((\"))([^\"\\s]+[ \\t]*)?|(?=\\\\E?\")|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\R|$)",
1978
2465
  "patterns": [
1979
2466
  {
1980
- "match": "((?:[^\"\\\\]|\"\"|\\\\(?!\").)+)(?!$)",
2467
+ "match": "((?:[^\"\\\\]|\"\"|\\\\(?!E?\").)+)(?!$)",
1981
2468
  "captures": {
1982
2469
  "1": {
1983
2470
  "patterns": [
@@ -2018,8 +2505,8 @@
2018
2505
  "patterns": [
2019
2506
  {
2020
2507
  "name": "markup.italic.roff",
2021
- "begin": "(?\u003c=^|\\s|\")(?!\"|\\\\\")((?:[^\\s\"\\\\]|\\\\(?!\").)+)",
2022
- "end": "(?=[ \t])|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\n|$)|(?=\\\\\")",
2508
+ "begin": "(?\u003c=^|\\s|\")(?!\"|\\\\E?\")((?:[^\\s\"\\\\]|\\\\(?!E?\").)+)",
2509
+ "end": "(?=[ \\t])|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\R|$)|(?=\\\\E?\")",
2023
2510
  "patterns": [
2024
2511
  {
2025
2512
  "include": "#escapes"
@@ -2042,10 +2529,10 @@
2042
2529
  {
2043
2530
  "contentName": "markup.italic.roff",
2044
2531
  "begin": "(\")",
2045
- "end": "((\"))([^\"\\s]+[ \t]*)?|(?=\\\\\")|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\n|$)",
2532
+ "end": "((\"))([^\"\\s]+[ \\t]*)?|(?=\\\\E?\")|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\R|$)",
2046
2533
  "patterns": [
2047
2534
  {
2048
- "match": "((?:[^\"\\\\]|\"\"|\\\\(?!\").)+)(?!$)",
2535
+ "match": "((?:[^\"\\\\]|\"\"|\\\\(?!E?\").)+)(?!$)",
2049
2536
  "captures": {
2050
2537
  "1": {
2051
2538
  "patterns": [
@@ -2087,10 +2574,10 @@
2087
2574
  {
2088
2575
  "contentName": "markup.italic.roff",
2089
2576
  "begin": "(\")",
2090
- "end": "((\"))([^\"\\s]+[ \t]*)?|(?=\\\\\")|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\n|$)",
2577
+ "end": "((\"))([^\"\\s]+[ \\t]*)?|(?=\\\\E?\")|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\R|$)",
2091
2578
  "patterns": [
2092
2579
  {
2093
- "match": "((?:[^\"\\\\]|\"\"|\\\\(?!\").)+)(?!$)",
2580
+ "match": "((?:[^\"\\\\]|\"\"|\\\\(?!E?\").)+)(?!$)",
2094
2581
  "captures": {
2095
2582
  "1": {
2096
2583
  "patterns": [
@@ -2131,8 +2618,8 @@
2131
2618
  "patterns": [
2132
2619
  {
2133
2620
  "name": "markup.plain.roff",
2134
- "begin": "(?\u003c=^|\\s|\")(?!\"|\\\\\")((?:[^\\s\"\\\\]|\\\\(?!\").)+)",
2135
- "end": "(?=[ \t])|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\n|$)|(?=\\\\\")",
2621
+ "begin": "(?\u003c=^|\\s|\")(?!\"|\\\\E?\")((?:[^\\s\"\\\\]|\\\\(?!E?\").)+)",
2622
+ "end": "(?=[ \\t])|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\R|$)|(?=\\\\E?\")",
2136
2623
  "patterns": [
2137
2624
  {
2138
2625
  "include": "#escapes"
@@ -2155,10 +2642,10 @@
2155
2642
  {
2156
2643
  "contentName": "markup.plain.roff",
2157
2644
  "begin": "(\")",
2158
- "end": "((\"))([^\"\\s]+[ \t]*)?|(?=\\\\\")|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\n|$)",
2645
+ "end": "((\"))([^\"\\s]+[ \\t]*)?|(?=\\\\E?\")|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\R|$)",
2159
2646
  "patterns": [
2160
2647
  {
2161
- "match": "((?:[^\"\\\\]|\"\"|\\\\(?!\").)+)(?!$)",
2648
+ "match": "((?:[^\"\\\\]|\"\"|\\\\(?!E?\").)+)(?!$)",
2162
2649
  "captures": {
2163
2650
  "1": {
2164
2651
  "patterns": [
@@ -2200,10 +2687,10 @@
2200
2687
  {
2201
2688
  "contentName": "markup.plain.roff",
2202
2689
  "begin": "(\")",
2203
- "end": "((\"))([^\"\\s]+[ \t]*)?|(?=\\\\\")|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\n|$)",
2690
+ "end": "((\"))([^\"\\s]+[ \\t]*)?|(?=\\\\E?\")|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\R|$)",
2204
2691
  "patterns": [
2205
2692
  {
2206
- "match": "((?:[^\"\\\\]|\"\"|\\\\(?!\").)+)(?!$)",
2693
+ "match": "((?:[^\"\\\\]|\"\"|\\\\(?!E?\").)+)(?!$)",
2207
2694
  "captures": {
2208
2695
  "1": {
2209
2696
  "patterns": [
@@ -2248,8 +2735,8 @@
2248
2735
  "patterns": [
2249
2736
  {
2250
2737
  "contentName": "comment.block.ignored-input.with-terminator.roff",
2251
- "begin": "^([.'])[ \t]*(ig)[ \t]+(?!\\\\[\"#]|\\\\+\\$\\d+)((\"[^\"]+\")|\\S+?(?=\\s|\\\\[\"#]))(.*)$",
2252
- "end": "^([.'])[ \t]*(\\3)(?=\\s|$|\\\\)",
2738
+ "begin": "^([.'])[ \\t]*(ig)[ \\t]+(?!\\\\E?[\"#]|\\\\+\\$\\d+)((\"[^\"]+\")|\\S+?(?=\\s|\\\\E?[\"#]))(.*)$",
2739
+ "end": "^([.'])[ \\t]*(\\3)(?=\\s|$|\\\\)",
2253
2740
  "patterns": [
2254
2741
  {
2255
2742
  "include": "#register-expansion"
@@ -2296,8 +2783,8 @@
2296
2783
  },
2297
2784
  {
2298
2785
  "contentName": "comment.block.ignored-input.roff",
2299
- "begin": "^([.'])[ \t]*(ig)(?=\\s|\\\\[\"#])(.*)$",
2300
- "end": "^([.'])[ \t]*\\.(?=\\s|\\\\[\"#])",
2786
+ "begin": "^([.'])[ \\t]*(ig)(?=\\s|\\\\E?[\"#])(.*)$",
2787
+ "end": "^([.'])[ \\t]*\\.(?=\\s|\\\\E?[\"#])",
2301
2788
  "patterns": [
2302
2789
  {
2303
2790
  "include": "#register-expansion"
@@ -2330,8 +2817,8 @@
2330
2817
  "patterns": [
2331
2818
  {
2332
2819
  "name": "markup.italic.roff",
2333
- "begin": "\\G[ \t]*(?!\")(?=(?:[^\\s\\\\]|\\\\(?!\").)+)",
2334
- "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\s|$)|(?=\\\\\")",
2820
+ "begin": "\\G[ \\t]*(?!\")(?=(?:[^\\s\\\\]|\\\\(?!E?\").)+)",
2821
+ "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\s|$)|(?=\\\\E?\")",
2335
2822
  "patterns": [
2336
2823
  {
2337
2824
  "include": "#escapes"
@@ -2356,8 +2843,8 @@
2356
2843
  {
2357
2844
  "name": "markup.italic.roff",
2358
2845
  "contentName": "string.quoted.double.roff",
2359
- "begin": "\\G[ \t]*(\")",
2360
- "end": "((?:\"\")*)\"(?!\")|(?\u003c!\\\\)(?:$|\\n)|(?=\\\\\")",
2846
+ "begin": "\\G[ \\t]*(\")",
2847
+ "end": "((?:\"\")*)\"(?!\")|(?\u003c!\\\\)(?:$|\\R)|(?=\\\\E?\")",
2361
2848
  "patterns": [
2362
2849
  {
2363
2850
  "include": "#string-escapes"
@@ -2420,6 +2907,26 @@
2420
2907
  }
2421
2908
  ]
2422
2909
  },
2910
+ "long-params": {
2911
+ "patterns": [
2912
+ {
2913
+ "include": "#escapes"
2914
+ },
2915
+ {
2916
+ "include": "#string"
2917
+ },
2918
+ {
2919
+ "include": "#number"
2920
+ },
2921
+ {
2922
+ "include": "#arithmetic"
2923
+ },
2924
+ {
2925
+ "name": "variable.parameter.roff",
2926
+ "match": "[^\\\\\\s\\]]+"
2927
+ }
2928
+ ]
2929
+ },
2423
2930
  "macros": {
2424
2931
  "patterns": [
2425
2932
  {
@@ -2442,8 +2949,8 @@
2442
2949
  },
2443
2950
  {
2444
2951
  "name": "meta.function.macro.roff",
2445
- "begin": "^([.'])[ \t]*((?:[^\\s\\\\]|\\\\(?![#\"]).)+)",
2446
- "end": "(?\u003c!\\\\)(?=$)|(?=\\\\\")",
2952
+ "begin": "^([.'])[ \\t]*((?:[^\\s\\\\]|\\\\(?!E?[#\"]).)+)",
2953
+ "end": "(?\u003c!\\\\)(?=$)|(?=\\\\E?\")",
2447
2954
  "patterns": [
2448
2955
  {
2449
2956
  "include": "#param-group"
@@ -2480,8 +2987,8 @@
2480
2987
  "patterns": [
2481
2988
  {
2482
2989
  "name": "meta.function.${2:/downcase}.man.macro.roff",
2483
- "begin": "^([.'])[ \t]*(RE|RS|SM|BT|PT)(?=\\s)",
2484
- "end": "(?\u003c!\\\\)(?=$)|(?=\\\\\")",
2990
+ "begin": "^([.'])[ \\t]*(RE|RS|SM|BT|PT)(?=\\s)",
2991
+ "end": "(?\u003c!\\\\)(?=$)|(?=\\\\E?\")",
2485
2992
  "patterns": [
2486
2993
  {
2487
2994
  "include": "#param-group"
@@ -2498,8 +3005,8 @@
2498
3005
  },
2499
3006
  {
2500
3007
  "name": "meta.deprecated.function.${2:/downcase}.man.macro.roff",
2501
- "begin": "^([.'])[ \t]*((AT|DT|PD|UC))(?=\\s)",
2502
- "end": "(?\u003c!\\\\)(?=$)|(?=\\\\\")",
3008
+ "begin": "^([.'])[ \\t]*((AT|DT|PD|UC))(?=\\s)",
3009
+ "end": "(?\u003c!\\\\)(?=$)|(?=\\\\E?\")",
2503
3010
  "patterns": [
2504
3011
  {
2505
3012
  "include": "#param-group"
@@ -2519,8 +3026,8 @@
2519
3026
  },
2520
3027
  {
2521
3028
  "name": "markup.heading.title.function.man.macro.roff",
2522
- "begin": "^([.'])[ \t]*(TH)(?=\\s)",
2523
- "end": "(?\u003c!\\\\)$|(?=\\\\\")",
3029
+ "begin": "^([.'])[ \\t]*(TH)(?=\\s)",
3030
+ "end": "(?\u003c!\\\\)$|(?=\\\\E?\")",
2524
3031
  "patterns": [
2525
3032
  {
2526
3033
  "include": "#escapes"
@@ -2540,8 +3047,8 @@
2540
3047
  },
2541
3048
  {
2542
3049
  "name": "markup.heading.section.function.man.macro.roff",
2543
- "begin": "^([.'])[ \t]*(SH)(?=\\s)",
2544
- "end": "(?\u003c!\\\\)$|(?=\\\\\")",
3050
+ "begin": "^([.'])[ \\t]*(SH)(?=\\s)",
3051
+ "end": "(?\u003c!\\\\)$|(?=\\\\E?\")",
2545
3052
  "patterns": [
2546
3053
  {
2547
3054
  "include": "#escapes"
@@ -2561,8 +3068,8 @@
2561
3068
  },
2562
3069
  {
2563
3070
  "name": "markup.heading.subsection.function.man.macro.roff",
2564
- "begin": "^([.'])[ \t]*(SS)(?=\\s)",
2565
- "end": "(?\u003c!\\\\)$|(?=\\\\\")",
3071
+ "begin": "^([.'])[ \\t]*(SS)(?=\\s)",
3072
+ "end": "(?\u003c!\\\\)$|(?=\\\\E?\")",
2566
3073
  "patterns": [
2567
3074
  {
2568
3075
  "include": "#escapes"
@@ -2582,8 +3089,8 @@
2582
3089
  },
2583
3090
  {
2584
3091
  "contentName": "markup.raw.roff",
2585
- "begin": "^([.'])[ \t]*(EX)\\s*(\\\\[#\"].*)?$",
2586
- "end": "^([.'])[ \t]*(EE)(?=\\s|\\\\[#\"])",
3092
+ "begin": "^([.'])[ \\t]*(EX)\\s*(\\\\E?[#\"].*)?$",
3093
+ "end": "^([.'])[ \\t]*(EE)(?=\\s|\\\\E?[#\"])",
2587
3094
  "patterns": [
2588
3095
  {
2589
3096
  "include": "$self"
@@ -2621,8 +3128,8 @@
2621
3128
  },
2622
3129
  {
2623
3130
  "name": "meta.function.paragraph.man.macro.roff",
2624
- "begin": "^([.'])[ \t]*(LP|PP?)(?=\\s|\\\\[\"#])",
2625
- "end": "(?\u003c!\\\\)(?=$)|(?=\\\\\")",
3131
+ "begin": "^([.'])[ \\t]*(LP|PP?)(?=\\s|\\\\E?[\"#])",
3132
+ "end": "(?\u003c!\\\\)(?=$)|(?=\\\\E?\")",
2626
3133
  "patterns": [
2627
3134
  {
2628
3135
  "include": "#params"
@@ -2639,8 +3146,8 @@
2639
3146
  },
2640
3147
  {
2641
3148
  "name": "meta.function.indented-paragraph.man.macro.roff",
2642
- "begin": "^([.'])[ \t]*(IP)(?=\\s|\\\\[\"#])",
2643
- "end": "(?\u003c!\\\\)(?=$)|(?=\\\\\")",
3149
+ "begin": "^([.'])[ \\t]*(IP)(?=\\s|\\\\E?[\"#])",
3150
+ "end": "(?\u003c!\\\\)(?=$)|(?=\\\\E?\")",
2644
3151
  "patterns": [
2645
3152
  {
2646
3153
  "include": "#param-group"
@@ -2656,7 +3163,7 @@
2656
3163
  }
2657
3164
  },
2658
3165
  {
2659
- "begin": "^([.'])[ \t]*(TP|TQ)(?=\\s|\\\\[\"#])(.*)?$\\n?",
3166
+ "begin": "^([.'])[ \\t]*(TP|TQ)(?=\\s|\\\\E?[\"#])(.*)?$\\R?",
2660
3167
  "end": "^(.*)(?\u003c!\\\\)$",
2661
3168
  "patterns": [
2662
3169
  {
@@ -2705,8 +3212,8 @@
2705
3212
  },
2706
3213
  {
2707
3214
  "name": "meta.deprecated.function.hanging-paragraph.man.macro.roff",
2708
- "begin": "^([.'])[ \t]*((HP))(?=\\s|\\\\[\"#])",
2709
- "end": "(?\u003c!\\\\)(?=$)|(?=\\\\\")",
3215
+ "begin": "^([.'])[ \\t]*((HP))(?=\\s|\\\\E?[\"#])",
3216
+ "end": "(?\u003c!\\\\)(?=$)|(?=\\\\E?\")",
2710
3217
  "patterns": [
2711
3218
  {
2712
3219
  "include": "#param-group"
@@ -2726,8 +3233,8 @@
2726
3233
  },
2727
3234
  {
2728
3235
  "name": "meta.function.mailto.hyperlink.man.macro.gnu.roff",
2729
- "begin": "^([.'])[ \t]*(MT)(?=\\s|\\\\[\"#])",
2730
- "end": "^([.'])[ \t]*(ME)(?=\\s|\\\\[\"#])(.*)\\s*(\\\\[\"#].*)?$",
3236
+ "begin": "^([.'])[ \\t]*(MT)(?=\\s|\\\\E?[\"#])",
3237
+ "end": "^([.'])[ \\t]*(ME)(?=\\s|\\\\E?[\"#])(.*)\\s*(\\\\E?[\"#].*)?$",
2731
3238
  "patterns": [
2732
3239
  {
2733
3240
  "include": "#underline-first"
@@ -2766,8 +3273,8 @@
2766
3273
  },
2767
3274
  {
2768
3275
  "name": "meta.function.hyperlink.man.macro.gnu.roff",
2769
- "begin": "^([.'])[ \t]*(UR)(?=\\s|\\\\[\"#])",
2770
- "end": "^([.'])[ \t]*(UE)(?=\\s|\\\\[\"#])(.*)\\s*(\\\\[\"#].*)?$",
3276
+ "begin": "^([.'])[ \\t]*(UR)(?=\\s|\\\\E?[\"#])",
3277
+ "end": "^([.'])[ \\t]*(UE)(?=\\s|\\\\E?[\"#])(.*)\\s*(\\\\E?[\"#].*)?$",
2771
3278
  "patterns": [
2772
3279
  {
2773
3280
  "include": "#underline-first"
@@ -2806,21 +3313,21 @@
2806
3313
  },
2807
3314
  {
2808
3315
  "name": "meta.command-synopsis.roff",
2809
- "begin": "^([.'])[ \t]*(SY)(?=\\s|\\\\[\"#])",
2810
- "end": "^([.'])[ \t]*(YS)(?=\\s|\\\\[\"#])",
3316
+ "begin": "^([.'])[ \\t]*(SY)(?=\\s|\\\\E?[\"#])",
3317
+ "end": "^([.'])[ \\t]*(YS)(?=\\s|\\\\E?[\"#])",
2811
3318
  "patterns": [
2812
3319
  {
2813
3320
  "include": "#bold-first"
2814
3321
  },
2815
3322
  {
2816
3323
  "name": "meta.function.option-description.man.macro.gnu.roff",
2817
- "begin": "^([.'])[ \t]*(OP)(?=\\s)",
2818
- "end": "(?\u003c!\\\\)(?=\\n)|(?=\\\\\")",
3324
+ "begin": "^([.'])[ \\t]*(OP)(?=\\s)",
3325
+ "end": "(?\u003c!\\\\)(?=\\R|$)|(?=\\\\E?\")",
2819
3326
  "patterns": [
2820
3327
  {
2821
3328
  "name": "function-call.arguments.roff",
2822
3329
  "begin": "\\G",
2823
- "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\n|$)|(?=\\\\\")",
3330
+ "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\R|$)|(?=\\\\E?\")",
2824
3331
  "patterns": [
2825
3332
  {
2826
3333
  "include": "#odd-bold"
@@ -2877,8 +3384,8 @@
2877
3384
  }
2878
3385
  },
2879
3386
  {
2880
- "begin": "^([.'])[ \t]*(S?B)(\\s*\\\\[#\"].*$)?(?=$|[ \t]+|\\\\)",
2881
- "end": "^(?=[.'])|(?=\\\\\")|(?!\\\\#)((\\S+[ \t]*)(?\u003c![^\\\\]\\\\)\n)",
3387
+ "begin": "^([.'])[ \\t]*(S?B)(\\s*\\\\E?[#\"].*$)?(?=$|[ \\t]+|\\\\)",
3388
+ "end": "^(?=[.'])|(?=\\\\E?\")|(?!\\\\E?#)((\\S+[ \\t]*)(?\u003c![^\\\\]\\\\)(?:\\R|$))",
2882
3389
  "patterns": [
2883
3390
  {
2884
3391
  "include": "$self"
@@ -2920,8 +3427,8 @@
2920
3427
  }
2921
3428
  },
2922
3429
  {
2923
- "begin": "^([.'])[ \t]*(I)(\\s*\\\\[#\"].*$)?(?=$|[ \t]+|\\\\)",
2924
- "end": "^(?=[.'])|(?=\\\\\")|(?!\\\\#)((\\S+[ \t]*)(?\u003c![^\\\\]\\\\)\n)",
3430
+ "begin": "^([.'])[ \\t]*(I)(\\s*\\\\E?[#\"].*$)?(?=$|[ \\t]+|\\\\)",
3431
+ "end": "^(?=[.'])|(?=\\\\E?\")|(?!\\\\E?#)((\\S+[ \\t]*)(?\u003c![^\\\\]\\\\)(?:\\R|$))",
2925
3432
  "patterns": [
2926
3433
  {
2927
3434
  "include": "$self"
@@ -2971,7 +3478,7 @@
2971
3478
  "patterns": [
2972
3479
  {
2973
3480
  "name": "meta.function.begin-emphasis.unparsed.macro.mdoc.roff",
2974
- "begin": "^([.'])\\s*(Bf)[ \t]+(-emphasis|Em)(?=\\s)(.*)",
3481
+ "begin": "^([.'])\\s*(Bf)[ \\t]+(-emphasis|Em)(?=\\s)(.*)",
2975
3482
  "end": "^(?=[.']\\s*[BE]f\\s)",
2976
3483
  "patterns": [
2977
3484
  {
@@ -3002,7 +3509,7 @@
3002
3509
  },
3003
3510
  {
3004
3511
  "name": "meta.function.begin-literal.unparsed.macro.mdoc.roff",
3005
- "begin": "^([.'])\\s*(Bf)[ \t]+(-literal|Li)(?=\\s)(.*)",
3512
+ "begin": "^([.'])\\s*(Bf)[ \\t]+(-literal|Li)(?=\\s)(.*)",
3006
3513
  "end": "^(?=[.']\\s*[BE]f\\s)",
3007
3514
  "patterns": [
3008
3515
  {
@@ -3033,7 +3540,7 @@
3033
3540
  },
3034
3541
  {
3035
3542
  "name": "meta.function.begin-symbolic.unparsed.macro.mdoc.roff",
3036
- "begin": "^([.'])\\s*(Bf)[ \t]+(-symbolic|Sy)(?=\\s)(.*)",
3543
+ "begin": "^([.'])\\s*(Bf)[ \\t]+(-symbolic|Sy)(?=\\s)(.*)",
3037
3544
  "end": "^(?=[.']\\s*[BE]f\\s)",
3038
3545
  "patterns": [
3039
3546
  {
@@ -3107,7 +3614,7 @@
3107
3614
  "patterns": [
3108
3615
  {
3109
3616
  "name": "meta.html-snippet.mdoc.roff",
3110
- "begin": "^(?:\\S*.*?\\s+)?HTML:\\s*$\\n?",
3617
+ "begin": "^(?:\\S*.*?\\s+)?HTML:\\s*$\\R?",
3111
3618
  "end": "^(?!\\t|\\s*$)",
3112
3619
  "patterns": [
3113
3620
  {
@@ -3136,7 +3643,7 @@
3136
3643
  },
3137
3644
  {
3138
3645
  "name": "meta.js-snippet.mdoc.roff",
3139
- "begin": "^(?:\\S*.*?\\s+)?JavaScript:\\s*$\\n?",
3646
+ "begin": "^(?:\\S*.*?\\s+)?JavaScript:\\s*$\\R?",
3140
3647
  "end": "^(?!\\t|\\s*$)",
3141
3648
  "patterns": [
3142
3649
  {
@@ -3164,7 +3671,7 @@
3164
3671
  },
3165
3672
  {
3166
3673
  "name": "meta.css-snippet.mdoc.roff",
3167
- "begin": "^(?:\\S*.*?\\s+)?CSS:\\s*$\\n?",
3674
+ "begin": "^(?:\\S*.*?\\s+)?CSS:\\s*$\\R?",
3168
3675
  "end": "^(?!\\t|\\s*$)",
3169
3676
  "patterns": [
3170
3677
  {
@@ -3183,7 +3690,7 @@
3183
3690
  },
3184
3691
  {
3185
3692
  "name": "meta.shell-snippet.mdoc.roff",
3186
- "begin": "^(?:\\S*.*?\\s+)?(?i:Bash|(?:Bourne[\\s-]?)?Shell(?:[\\s-]?Script)?):\\s*$\\n?",
3693
+ "begin": "^(?:\\S*.*?\\s+)?(?i:Bash|(?:Bourne[\\s-]?)?Shell(?:[\\s-]?Script)?):\\s*$\\R?",
3187
3694
  "end": "^(?!\\t|\\s*$)",
3188
3695
  "patterns": [
3189
3696
  {
@@ -3337,7 +3844,7 @@
3337
3844
  {
3338
3845
  "name": "meta.function.$1.callable.macro.mdoc.roff",
3339
3846
  "begin": "(?\u003c=Em|Ar)\\G|(?\u003c=\\s)(Em|Ar)(?=\\s)",
3340
- "end": "(?x)\n(?\u003c!\\\\)$ |\n(?=\n\t\\s+\n\t(?:Ac|Ad|An|Ao|Ap|Aq|Ar|At|Bc|Bo|Bq|Brc|Bro|Brq|Bsx|Bx|Cd|Cm|Dc|Do|Dq|Dv|Dx|Ec|Em\n\t|En|Eo|Er|Es|Ev|Fa|Fc|Fl|Fn|Fr|Ft|Fx|Ic|Li|Lk|Ms|Mt|Nm|No|Ns|Nx|Oc|Oo|Op|Ot|Ox|Pa\n\t|Pc|Pf|Po|Pq|Qc|Ql|Qo|Qq|Sc|So|Sq|Sx|Sy|Ta|Tn|Ux|Va|Vt|Xc|Xo|Xr)\n\t\\s |\n\t\\\\\" |\n\t\\\\f[\\[A-Za-z0-9]\n)",
3847
+ "end": "(?x)\n(?\u003c!\\\\)$ |\n(?=\n\t\\s+\n\t(?:Ac|Ad|An|Ao|Ap|Aq|Ar|At|Bc|Bo|Bq|Brc|Bro|Brq|Bsx|Bx|Cd|Cm|Dc|Do|Dq|Dv|Dx|Ec|Em\n\t|En|Eo|Er|Es|Ev|Fa|Fc|Fl|Fn|Fr|Ft|Fx|Ic|Li|Lk|Ms|Mt|Nm|No|Ns|Nx|Oc|Oo|Op|Ot|Ox|Pa\n\t|Pc|Pf|Po|Pq|Qc|Ql|Qo|Qq|Sc|So|Sq|Sx|Sy|Ta|Tn|Ux|Va|Vt|Xc|Xo|Xr)\n\t\\s | \\\\E? (?:\"|f[\\[A-Za-z0-9])\n)",
3341
3848
  "patterns": [
3342
3849
  {
3343
3850
  "include": "#mdoc-args"
@@ -3358,7 +3865,7 @@
3358
3865
  {
3359
3866
  "name": "meta.function.$1.callable.macro.mdoc.roff",
3360
3867
  "begin": "(?\u003c=Sy|Fl|Cm)\\G|(?\u003c=\\s)(Sy|Fl|Cm)(?=\\s)",
3361
- "end": "(?x)\n(?\u003c!\\\\)$ |\n(?=\n\t\\s+\n\t(?:Ac|Ad|An|Ao|Ap|Aq|Ar|At|Bc|Bo|Bq|Brc|Bro|Brq|Bsx|Bx|Cd|Cm|Dc|Do|Dq|Dv|Dx|Ec|Em\n\t|En|Eo|Er|Es|Ev|Fa|Fc|Fl|Fn|Fr|Ft|Fx|Ic|Li|Lk|Ms|Mt|Nm|No|Ns|Nx|Oc|Oo|Op|Ot|Ox|Pa\n\t|Pc|Pf|Po|Pq|Qc|Ql|Qo|Qq|Sc|So|Sq|Sx|Sy|Ta|Tn|Ux|Va|Vt|Xc|Xo|Xr)\n\t\\s |\n\t\\\\\" |\n\t\\\\f[\\[A-Za-z0-9]\n)",
3868
+ "end": "(?x)\n(?\u003c!\\\\)$ |\n(?=\n\t\\s+\n\t(?:Ac|Ad|An|Ao|Ap|Aq|Ar|At|Bc|Bo|Bq|Brc|Bro|Brq|Bsx|Bx|Cd|Cm|Dc|Do|Dq|Dv|Dx|Ec|Em\n\t|En|Eo|Er|Es|Ev|Fa|Fc|Fl|Fn|Fr|Ft|Fx|Ic|Li|Lk|Ms|Mt|Nm|No|Ns|Nx|Oc|Oo|Op|Ot|Ox|Pa\n\t|Pc|Pf|Po|Pq|Qc|Ql|Qo|Qq|Sc|So|Sq|Sx|Sy|Ta|Tn|Ux|Va|Vt|Xc|Xo|Xr)\n\t\\s | \\\\E? (?:\"|f[\\[A-Za-z0-9])\n)",
3362
3869
  "patterns": [
3363
3870
  {
3364
3871
  "include": "#mdoc-args"
@@ -3379,7 +3886,7 @@
3379
3886
  {
3380
3887
  "name": "meta.function.$1.callable.macro.mdoc.roff",
3381
3888
  "begin": "(?\u003c=Li)\\G|(?\u003c=\\s)(Li)(?=\\s)",
3382
- "end": "(?x)\n(?\u003c!\\\\)$ |\n(?=\n\t\\s+\n\t(?:Ac|Ad|An|Ao|Ap|Aq|Ar|At|Bc|Bo|Bq|Brc|Bro|Brq|Bsx|Bx|Cd|Cm|Dc|Do|Dq|Dv|Dx|Ec|Em\n\t|En|Eo|Er|Es|Ev|Fa|Fc|Fl|Fn|Fr|Ft|Fx|Ic|Li|Lk|Ms|Mt|Nm|No|Ns|Nx|Oc|Oo|Op|Ot|Ox|Pa\n\t|Pc|Pf|Po|Pq|Qc|Ql|Qo|Qq|Sc|So|Sq|Sx|Sy|Ta|Tn|Ux|Va|Vt|Xc|Xo|Xr)\n\t\\s |\n\t\\\\\" |\n\t\\\\f[A-Za-z0-9]\n)",
3889
+ "end": "(?x)\n(?\u003c!\\\\)$ |\n(?=\n\t\\s+\n\t(?:Ac|Ad|An|Ao|Ap|Aq|Ar|At|Bc|Bo|Bq|Brc|Bro|Brq|Bsx|Bx|Cd|Cm|Dc|Do|Dq|Dv|Dx|Ec|Em\n\t|En|Eo|Er|Es|Ev|Fa|Fc|Fl|Fn|Fr|Ft|Fx|Ic|Li|Lk|Ms|Mt|Nm|No|Ns|Nx|Oc|Oo|Op|Ot|Ox|Pa\n\t|Pc|Pf|Po|Pq|Qc|Ql|Qo|Qq|Sc|So|Sq|Sx|Sy|Ta|Tn|Ux|Va|Vt|Xc|Xo|Xr)\n\t\\s | \\\\E? (?:\"|f[\\[A-Za-z0-9])\n)",
3383
3890
  "patterns": [
3384
3891
  {
3385
3892
  "include": "#mdoc-args"
@@ -3399,8 +3906,8 @@
3399
3906
  },
3400
3907
  {
3401
3908
  "name": "meta.function.$1.callable.macro.mdoc.roff",
3402
- "begin": "(?\u003c=Lk|Mt)\\G|(?\u003c=\\s)(Lk|Mt)(?=\\s)",
3403
- "end": "$|(?=\\\\\")|(\\S+?)(?=$|\\s|\\\\\")",
3909
+ "begin": "(?\u003c=Lk|Mt)\\G|(?\u003c=\\s)(Lk|Mt)(?=\\s|$)\\s*",
3910
+ "end": "$|(?=\\\\E?\")|(\\S+?)(?=$|\\s|\\\\E?\")",
3404
3911
  "beginCaptures": {
3405
3912
  "1": {
3406
3913
  "name": "entity.function.name.roff"
@@ -3408,9 +3915,10 @@
3408
3915
  },
3409
3916
  "endCaptures": {
3410
3917
  "0": {
3411
- "name": "markup.underline.link.hyperlink.mdoc.roff"
3918
+ "name": "string.other.link.roff"
3412
3919
  },
3413
3920
  "1": {
3921
+ "name": "markup.underline.link.hyperlink.mdoc.roff",
3414
3922
  "patterns": [
3415
3923
  {
3416
3924
  "include": "#escapes"
@@ -3421,7 +3929,7 @@
3421
3929
  },
3422
3930
  {
3423
3931
  "name": "meta.function.$1.callable.macro.mdoc.roff",
3424
- "match": "(?x) (?\u003c=[ \t])\n(Ac|Ad|An|Ao|Ap|Aq|Ar|At|Bc|Bo|Bq|Brc|Bro|Brq|Bsx|Bx|Cd|Cm|Dc|Do|Dq|Dv|Dx|Ec|En\n|Eo|Er|Es|Ev|Fa|Fc|Fl|Fn|Fr|Ft|Fx|Ic|Li|Lk|Ms|Mt|Nm|No|Ns|Nx|Oc|Oo|Op|Ot|Ox|Pa|Pc\n|Pf|Po|Pq|Qc|Ql|Qo|Qq|Sc|So|Sq|Sx|Ta|Tn|Ux|Va|Vt|Xc|Xo|Xr)(?=\\s)",
3932
+ "match": "(?x) (?\u003c=[ \\t])\n(Ac|Ad|An|Ao|Ap|Aq|Ar|At|Bc|Bo|Bq|Brc|Bro|Brq|Bsx|Bx|Cd|Cm|Dc|Do|Dq|Dv|Dx|Ec|En\n|Eo|Er|Es|Ev|Fa|Fc|Fl|Fn|Fr|Ft|Fx|Ic|Li|Lk|Ms|Mt|Nm|No|Ns|Nx|Oc|Oo|Op|Ot|Ox|Pa|Pc\n|Pf|Po|Pq|Qc|Ql|Qo|Qq|Sc|So|Sq|Sx|Ta|Tn|Ux|Va|Vt|Xc|Xo|Xr)(?=\\s)",
3425
3933
  "captures": {
3426
3934
  "1": {
3427
3935
  "name": "entity.function.name.roff"
@@ -3447,8 +3955,8 @@
3447
3955
  "patterns": [
3448
3956
  {
3449
3957
  "name": "meta.function.${3:/downcase}.me.macro.roff",
3450
- "begin": "(?x) ^([.'])[ \t]* ((?:[()][cdfqxz]|\\+\\+|\\+c)| (1c|2c|EN|EQ|GE|GS|PE|PS|TE|TH|TS|ba|bc|bu|bx|hx |hl|ip|lp|np|pd|pp|r|re|sk|sm|sz|tp|uh|xp)(?=\\s))",
3451
- "end": "(?\u003c!\\\\)$|(?=\\\\\")",
3958
+ "begin": "(?x) ^([.'])[ \\t]*\n((?:[()][cdfqxz]|\\+\\+|\\+c)|\n(1c|2c|EN|EQ|GE|GS|PE|PS|TE|TH|TS|ba|bc|bu|bx|hx\n|hl|ip|lp|np|pd|pp|r|re|sk|sm|sz|tp|uh|xp)(?=\\s))",
3959
+ "end": "(?\u003c!\\\\)$|(?=\\\\E?\")",
3452
3960
  "patterns": [
3453
3961
  {
3454
3962
  "include": "#params"
@@ -3465,8 +3973,8 @@
3465
3973
  },
3466
3974
  {
3467
3975
  "contentName": "markup.list.unnumbered.roff",
3468
- "begin": "^([.'])[ \t]*(\\(l)(?=\\s)",
3469
- "end": "^([.'])[ \t]*(\\)l)(?=\\s)",
3976
+ "begin": "^([.'])[ \\t]*(\\(l)(?=\\s)",
3977
+ "end": "^([.'])[ \\t]*(\\)l)(?=\\s)",
3470
3978
  "patterns": [
3471
3979
  {
3472
3980
  "include": "$self"
@@ -3497,8 +4005,8 @@
3497
4005
  },
3498
4006
  {
3499
4007
  "contentName": "function-call.arguments.roff",
3500
- "begin": "^([.'])[ \t]*(b)(?=\\s)",
3501
- "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=$|\\n)|(?=\\\\\")",
4008
+ "begin": "^([.'])[ \\t]*(b)(?=\\s)",
4009
+ "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=$|\\R)|(?=\\\\E?\")",
3502
4010
  "patterns": [
3503
4011
  {
3504
4012
  "include": "#bold-first"
@@ -3518,8 +4026,8 @@
3518
4026
  },
3519
4027
  {
3520
4028
  "contentName": "function-call.arguments.roff",
3521
- "begin": "^([.'])[ \t]*(i)(?=\\s)",
3522
- "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=$|\\n)|(?=\\\\\")",
4029
+ "begin": "^([.'])[ \\t]*(i)(?=\\s)",
4030
+ "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=$|\\R)|(?=\\\\E?\")",
3523
4031
  "patterns": [
3524
4032
  {
3525
4033
  "include": "#italic-first"
@@ -3539,8 +4047,8 @@
3539
4047
  },
3540
4048
  {
3541
4049
  "contentName": "function-call.arguments.roff",
3542
- "begin": "^([.'])[ \t]*(bi)(?=\\s)",
3543
- "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=$|\\n)|(?=\\\\\")",
4050
+ "begin": "^([.'])[ \\t]*(bi)(?=\\s)",
4051
+ "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=$|\\R)|(?=\\\\E?\")",
3544
4052
  "patterns": [
3545
4053
  {
3546
4054
  "include": "#bold-italic-first"
@@ -3560,8 +4068,8 @@
3560
4068
  },
3561
4069
  {
3562
4070
  "contentName": "function-call.arguments.roff",
3563
- "begin": "^([.'])[ \t]*(u)(?=\\s)",
3564
- "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=$|\\n)|(?=\\\\\")",
4071
+ "begin": "^([.'])[ \\t]*(u)(?=\\s|$)\\s*",
4072
+ "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=$|\\R)|(?=\\\\E?\")",
3565
4073
  "patterns": [
3566
4074
  {
3567
4075
  "include": "#underline-first"
@@ -3581,8 +4089,8 @@
3581
4089
  },
3582
4090
  {
3583
4091
  "name": "markup.heading.section.function.me.macro.roff",
3584
- "begin": "^([.'])[ \t]*(sh)[ \t]+((?!\")\\S+)\\b[ \t]*(?!$|\\n|\\\\\")",
3585
- "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=$|\\n)|(?=\\\\\")",
4092
+ "begin": "^([.'])[ \\t]*(sh)[ \\t]+((?!\")\\S+)\\b[ \\t]*(?!$|\\R|\\\\E?\")",
4093
+ "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=$|\\R)|(?=\\\\E?\")",
3586
4094
  "patterns": [
3587
4095
  {
3588
4096
  "include": "#bold-first"
@@ -3608,8 +4116,8 @@
3608
4116
  {
3609
4117
  "name": "meta.function.${2:/downcase}.me.macro.roff",
3610
4118
  "contentName": "function-call.arguments.roff",
3611
- "begin": "^([.'])[ \t]*(of|oh|he|eh|fo|ef)(?=\\s)",
3612
- "end": "(?\u003c!\\\\)(?=\n)|(?=\\\\\")",
4119
+ "begin": "^([.'])[ \\t]*(of|oh|he|eh|fo|ef)(?=\\s)",
4120
+ "end": "(?\u003c!\\\\)(?=\\R|$)|(?=\\\\E?\")",
3613
4121
  "patterns": [
3614
4122
  {
3615
4123
  "include": "#3-part-title"
@@ -3636,8 +4144,8 @@
3636
4144
  "patterns": [
3637
4145
  {
3638
4146
  "name": "meta.function.${2:/downcase}.mm.macro.roff",
3639
- "begin": "(?x) ^([.'])[ \t]* (1C|2C|AE|AF|AL|APP|APPSK|AS|AST|AT|AU|AV|AVL|B1|B2|BE|BL|BS|BVL |COVER|COVEND|DE|DF|DL|DS|EC|EF|EH|EN|EOP|EPIC|EQ|EX|FC|FD|FE|FG |FS|GETHN|GETPN|GETR|GETST|H|HC|HM|HU|HX|HY|HZ|IA|IE|INITI|INITR |IND|INDP|ISODATE|LB|LC|LE|LI|LT|LO|MC|ML|MT|MOVE|MULB|MULN|MULE |nP|NCOL|NS|ND|OF|OH|OP|PGFORM|PGNH|PIC|PE|PF|PH|PS|PX?|RD|RF|RL |RP|RS|S|SA|SETR|SG|SK|SM|SP|TA?B|TC|TE|TL|TM|TP|TS|TX|TY|VERBON |VERBOFF|VL|VM|WA|WE|WC|\\)E)(?=\\s)",
3640
- "end": "(?\u003c!\\\\)$|(?=\\\\\")",
4147
+ "begin": "(?x) ^([.'])[ \\t]*\n(1C|2C|AE|AF|AL|APP|APPSK|AS|AST|AT|AU|AV|AVL|B1|B2|BE|BL|BS|BVL\n|COVER|COVEND|DE|DF|DL|DS|EC|EF|EH|EN|EOP|EPIC|EQ|EX|FC|FD|FE|FG\n|FS|GETHN|GETPN|GETR|GETST|H|HC|HM|HU|HX|HY|HZ|IA|IE|INITI|INITR\n|IND|INDP|ISODATE|LB|LC|LE|LI|LT|LO|MC|ML|MT|MOVE|MULB|MULN|MULE\n|nP|NCOL|NS|ND|OF|OH|OP|PGFORM|PGNH|PIC|PE|PF|PH|PS|PX?|RD|RF|RL\n|RP|RS|S|SA|SETR|SG|SK|SM|SP|TA?B|TC|TE|TL|TM|TP|TS|TX|TY|VERBON\n|VERBOFF|VL|VM|WA|WE|WC|\\)E)(?=\\s)",
4148
+ "end": "(?\u003c!\\\\)$|(?=\\\\E?\")",
3641
4149
  "patterns": [
3642
4150
  {
3643
4151
  "include": "#params"
@@ -3662,8 +4170,8 @@
3662
4170
  "patterns": [
3663
4171
  {
3664
4172
  "name": "meta.function.${2:/downcase}.ms.macro.roff",
3665
- "begin": "(?x) ^([.'])[ \t]* (1C|2C|AB|AE|AI|AU|B1|B2|BT|BX|DA|DE|DS|EN|EQ|FE|FS|IP|KE|KF|KS|LG |LP|MC|ND|NH|NL|P1|PE|PP|PS|PT|PX|QP|RP|SH|SM|TA|TC|TE|TL|TS|XA|XE |XP|XS)(?=\\s)",
3666
- "end": "(?\u003c!\\\\)(?=\n)|(?=\\\\\")",
4173
+ "begin": "(?x) ^([.'])[ \\t]*\n(1C|2C|AB|AE|AI|AU|B1|B2|BT|BX|DA|DE|DS|EN|EQ|FE|FS|IP|KE|KF|KS|LG\n|LP|MC|ND|NH|NL|P1|PE|PP|PS|PT|PX|QP|RP|SH|SM|TA|TC|TE|TL|TS|XA|XE\n|XP|XS)(?=\\s)",
4174
+ "end": "(?\u003c!\\\\)(?=\\R|$)|(?=\\\\E?\")",
3667
4175
  "patterns": [
3668
4176
  {
3669
4177
  "include": "#params"
@@ -3681,8 +4189,8 @@
3681
4189
  {
3682
4190
  "name": "meta.function.${2:/downcase}.ms.macro.roff",
3683
4191
  "contentName": "function-call.arguments.roff",
3684
- "begin": "^([.'])[ \t]*([EO][FH])(?=\\s)",
3685
- "end": "(?\u003c!\\\\)(?=\n)|(?=\\\\\")",
4192
+ "begin": "^([.'])[ \\t]*([EO][FH])(?=\\s)",
4193
+ "end": "(?\u003c!\\\\)(?=\\R|$)|(?=\\\\E?\")",
3686
4194
  "patterns": [
3687
4195
  {
3688
4196
  "include": "#3-part-title"
@@ -3706,8 +4214,8 @@
3706
4214
  {
3707
4215
  "name": "meta.deprecated.function.${2:/downcase}.ms.macro.roff",
3708
4216
  "contentName": "function-call.arguments.roff",
3709
- "begin": "^([.'])[ \t]*((De|Ds))(?=\\s)",
3710
- "end": "(?\u003c!\\\\)$|(?=\\s*\\\\\")",
4217
+ "begin": "^([.'])[ \\t]*((De|Ds))(?=\\s)",
4218
+ "end": "(?\u003c!\\\\)$|(?=\\s*\\\\E?\")",
3711
4219
  "patterns": [
3712
4220
  {
3713
4221
  "include": "#escapes"
@@ -3730,13 +4238,13 @@
3730
4238
  },
3731
4239
  {
3732
4240
  "name": "meta.function.cw.ms.macro.roff",
3733
- "begin": "^([.'])[ \t]*(CW)(?=\\s)",
3734
- "end": "(?\u003c!\\\\)$|(?=\\\\\")",
4241
+ "begin": "^([.'])[ \\t]*(CW)(?=\\s)",
4242
+ "end": "(?\u003c!\\\\)$|(?=\\\\E?\")",
3735
4243
  "patterns": [
3736
4244
  {
3737
4245
  "name": "markup.raw.roff",
3738
- "begin": "\\G[ \t]*(?!\")(?=(?:[^\\s\\\\]|\\\\(?!\").)+)",
3739
- "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\s|$)|(?=\\\\\")",
4246
+ "begin": "\\G[ \\t]*(?!\")(?=(?:[^\\s\\\\]|\\\\(?!E?\").)+)",
4247
+ "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\s|$)|(?=\\\\E?\")",
3740
4248
  "patterns": [
3741
4249
  {
3742
4250
  "include": "#escapes"
@@ -3761,8 +4269,8 @@
3761
4269
  {
3762
4270
  "name": "string.quoted.double.roff",
3763
4271
  "contentName": "markup.raw.roff",
3764
- "begin": "\\G[ \t]*(\")",
3765
- "end": "((?:\"\")*)\"(?!\")|(?\u003c!\\\\)$|(?=\\\\\")",
4272
+ "begin": "\\G[ \\t]*(\")",
4273
+ "end": "((?:\"\")*)\"(?!\")|(?\u003c!\\\\)$|(?=\\\\E?\")",
3766
4274
  "patterns": [
3767
4275
  {
3768
4276
  "include": "#string-escapes"
@@ -3805,8 +4313,8 @@
3805
4313
  },
3806
4314
  {
3807
4315
  "name": "meta.function.ul.ms.macro.roff",
3808
- "begin": "^([.'])[ \t]*(UL)(?=\\s)",
3809
- "end": "(?\u003c!\\\\)$|(?=\\\\\")",
4316
+ "begin": "^([.'])[ \\t]*(UL)(?=\\s|$)\\s*",
4317
+ "end": "(?\u003c!\\\\)$|(?=\\\\E?\")",
3810
4318
  "patterns": [
3811
4319
  {
3812
4320
  "include": "#underline-first"
@@ -3839,11 +4347,11 @@
3839
4347
  "patterns": [
3840
4348
  {
3841
4349
  "name": "markup.bold.roff",
3842
- "begin": "[ \t]+(\")",
3843
- "end": "(\")[ \t]*|(?=\\\\\")|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\n|$)",
4350
+ "begin": "[ \\t]+(\")",
4351
+ "end": "(\")[ \\t]*|(?=\\\\E?\")|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\R|$)",
3844
4352
  "patterns": [
3845
4353
  {
3846
- "match": "((?:[^\"\\\\]|\"\"|\\\\(?!\").)+)(?!$)",
4354
+ "match": "((?:[^\"\\\\]|\"\"|\\\\(?!E?\").)+)(?!$)",
3847
4355
  "captures": {
3848
4356
  "1": {
3849
4357
  "patterns": [
@@ -3871,15 +4379,15 @@
3871
4379
  },
3872
4380
  {
3873
4381
  "name": "markup.bold.roff",
3874
- "begin": "[ \t]+(\\\\$\\n?)",
3875
- "end": "(?\u003c!^)[ \t]+|(?=\\\\\")|(?\u003c!\\\\)(?=\\n|$)",
4382
+ "begin": "[ \\t]+(\\\\$\\R?)",
4383
+ "end": "(?\u003c!^)[ \\t]+|(?=\\\\E?\")|(?\u003c!\\\\)(?=\\R|$)",
3876
4384
  "patterns": [
3877
4385
  {
3878
4386
  "include": "#escapes"
3879
4387
  },
3880
4388
  {
3881
- "begin": "^[ \t]+",
3882
- "end": "(?=\\S)|(?\u003c!\\\\)(?:$|\\n)"
4389
+ "begin": "^[ \\t]+",
4390
+ "end": "(?=\\S)|(?\u003c!\\\\)(?:$|\\R)"
3883
4391
  }
3884
4392
  ],
3885
4393
  "beginCaptures": {
@@ -3894,8 +4402,8 @@
3894
4402
  },
3895
4403
  {
3896
4404
  "name": "markup.bold.roff",
3897
- "begin": "[ \t]+(?!\")((?:[^\\s\"\\\\]|\\\\(?!\").)+)",
3898
- "end": "[ \t]+|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\n|$)|(?=\\\\\")",
4405
+ "begin": "[ \\t]+(?!\")((?:[^\\s\"\\\\]|\\\\(?!E?\").)+)",
4406
+ "end": "[ \\t]+|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\R|$)|(?=\\\\E?\")",
3899
4407
  "patterns": [
3900
4408
  {
3901
4409
  "include": "#escapes"
@@ -3917,11 +4425,11 @@
3917
4425
  "patterns": [
3918
4426
  {
3919
4427
  "name": "markup.italic.roff",
3920
- "begin": "[ \t]+(\")",
3921
- "end": "(\")[ \t]*|(?=\\\\\")|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\n|$)",
4428
+ "begin": "[ \\t]+(\")",
4429
+ "end": "(\")[ \\t]*|(?=\\\\E?\")|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\R|$)",
3922
4430
  "patterns": [
3923
4431
  {
3924
- "match": "((?:[^\"\\\\]|\"\"|\\\\(?!\").)+)(?!$)",
4432
+ "match": "((?:[^\"\\\\]|\"\"|\\\\(?!E?\").)+)(?!$)",
3925
4433
  "captures": {
3926
4434
  "1": {
3927
4435
  "patterns": [
@@ -3949,15 +4457,15 @@
3949
4457
  },
3950
4458
  {
3951
4459
  "name": "markup.italic.roff",
3952
- "begin": "[ \t]+(\\\\$\\n?)",
3953
- "end": "(?\u003c!^)[ \t]+|(?=\\\\\")|(?\u003c!\\\\)(?=\\n|$)",
4460
+ "begin": "[ \\t]+(\\\\$\\R?)",
4461
+ "end": "(?\u003c!^)[ \\t]+|(?=\\\\E?\")|(?\u003c!\\\\)(?=\\R|$)",
3954
4462
  "patterns": [
3955
4463
  {
3956
4464
  "include": "#escapes"
3957
4465
  },
3958
4466
  {
3959
- "begin": "^[ \t]+",
3960
- "end": "(?=\\S)|(?\u003c!\\\\)(?:$|\\n)"
4467
+ "begin": "^[ \\t]+",
4468
+ "end": "(?=\\S)|(?\u003c!\\\\)(?:$|\\R)"
3961
4469
  }
3962
4470
  ],
3963
4471
  "beginCaptures": {
@@ -3972,8 +4480,8 @@
3972
4480
  },
3973
4481
  {
3974
4482
  "name": "markup.italic.roff",
3975
- "begin": "[ \t]+(?!\")((?:[^\\s\"\\\\]|\\\\(?!\").)+)",
3976
- "end": "[ \t]+|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\n|$)|(?=\\\\\")",
4483
+ "begin": "[ \\t]+(?!\")((?:[^\\s\"\\\\]|\\\\(?!E?\").)+)",
4484
+ "end": "[ \\t]+|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\R|$)|(?=\\\\E?\")",
3977
4485
  "patterns": [
3978
4486
  {
3979
4487
  "include": "#escapes"
@@ -3995,11 +4503,11 @@
3995
4503
  "patterns": [
3996
4504
  {
3997
4505
  "name": "markup.plain.roff",
3998
- "begin": "[ \t]+(\")",
3999
- "end": "(\")[ \t]*|(?=\\\\\")|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\n|$)",
4506
+ "begin": "[ \\t]+(\")",
4507
+ "end": "(\")[ \\t]*|(?=\\\\E?\")|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\R|$)",
4000
4508
  "patterns": [
4001
4509
  {
4002
- "match": "((?:[^\"\\\\]|\"\"|\\\\(?!\").)+)(?!$)",
4510
+ "match": "((?:[^\"\\\\]|\"\"|\\\\(?!E?\").)+)(?!$)",
4003
4511
  "captures": {
4004
4512
  "1": {
4005
4513
  "patterns": [
@@ -4027,15 +4535,15 @@
4027
4535
  },
4028
4536
  {
4029
4537
  "name": "markup.plain.roff",
4030
- "begin": "[ \t]+(\\\\$\\n?)",
4031
- "end": "(?\u003c!^)[ \t]+|(?=\\\\\")|(?\u003c!\\\\)(?=\\n|$)",
4538
+ "begin": "[ \\t]+(\\\\$\\R?)",
4539
+ "end": "(?\u003c!^)[ \\t]+|(?=\\\\E?\")|(?\u003c!\\\\)(?=\\R|$)",
4032
4540
  "patterns": [
4033
4541
  {
4034
4542
  "include": "#escapes"
4035
4543
  },
4036
4544
  {
4037
- "begin": "^[ \t]+",
4038
- "end": "(?=\\S)|(?\u003c!\\\\)(?:$|\\n)"
4545
+ "begin": "^[ \\t]+",
4546
+ "end": "(?=\\S)|(?\u003c!\\\\)(?:$|\\R)"
4039
4547
  }
4040
4548
  ],
4041
4549
  "beginCaptures": {
@@ -4050,8 +4558,8 @@
4050
4558
  },
4051
4559
  {
4052
4560
  "name": "markup.plain.roff",
4053
- "begin": "[ \t]+(?!\")((?:[^\\s\"\\\\]|\\\\(?!\").)+)",
4054
- "end": "[ \t]+|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\n|$)|(?=\\\\\")",
4561
+ "begin": "[ \\t]+(?!\")((?:[^\\s\"\\\\]|\\\\(?!E?\").)+)",
4562
+ "end": "[ \\t]+|(?\u003c![^\\\\]\\\\|^\\\\)(?=\\R|$)|(?=\\\\E?\")",
4055
4563
  "patterns": [
4056
4564
  {
4057
4565
  "include": "#escapes"
@@ -4099,8 +4607,8 @@
4099
4607
  "patterns": [
4100
4608
  {
4101
4609
  "contentName": "markup.other.table.preprocessor.tbl.roff",
4102
- "begin": "^([.'])[ \t]*(TS)(?=\\s|\\\\[\"#])(.*)",
4103
- "end": "^([.'])[ \t]*(TE)(?=\\s|\\\\[\"#])",
4610
+ "begin": "^([.'])[ \\t]*(TS)(?=$|\\s|\\\\E?[\"#])(.*)",
4611
+ "end": "^([.'])[ \\t]*(TE)(?=$|\\s|\\\\E?[\"#])",
4104
4612
  "patterns": [
4105
4613
  {
4106
4614
  "include": "#tbl"
@@ -4138,8 +4646,8 @@
4138
4646
  },
4139
4647
  {
4140
4648
  "contentName": "markup.other.math.preprocessor.eqn.roff",
4141
- "begin": "^([.'])[ \t]*(EQ)(?=\\s|\\\\[\"#])[ \t]*([LIC]\\b)?\\s*([^\\\\\"]+|\\\\[^\"])*(\\\\\".*)?$",
4142
- "end": "^([.'])[ \t]*(EN)(?=\\s|\\\\[\"#])",
4649
+ "begin": "^([.'])[ \\t]*(EQ)(?=$|\\s|\\\\E?[\"#])[ \\t]*([LIC]\\b)?\\s*([^\\\\\"]+|\\\\[^\"])*(\\\\E?\".*)?$",
4650
+ "end": "^([.'])[ \\t]*(EN)(?=$|\\s|\\\\E?[\"#])",
4143
4651
  "patterns": [
4144
4652
  {
4145
4653
  "include": "#eqn"
@@ -4183,12 +4691,12 @@
4183
4691
  },
4184
4692
  {
4185
4693
  "contentName": "meta.citation.roff",
4186
- "begin": "^([.'])[ \t]*(\\[)\\s*([-$'\\w.\\\\]*?)\\s*(\\\\[\"#].*)?$",
4187
- "end": "^([.'])[ \t]*(\\])\\s*([-$'\\w.\\\\]*?)(?=\\s|$|\\\\\")",
4694
+ "begin": "^([.'])[ \\t]*(\\[)\\s*([-$'\\w.\\\\]*?)\\s*(\\\\E?[\"#].*)?$",
4695
+ "end": "^([.'])[ \\t]*(\\])\\s*([-$'\\w.\\\\]*?)(?=\\s|$|\\\\E?\")",
4188
4696
  "patterns": [
4189
4697
  {
4190
4698
  "begin": "\\G",
4191
- "end": "$|(?=\\\\[#\"])",
4699
+ "end": "$|(?=\\\\E?[#\"])",
4192
4700
  "patterns": [
4193
4701
  {
4194
4702
  "name": "constant.character.flags.refer.gnu.roff",
@@ -4243,52 +4751,10 @@
4243
4751
  }
4244
4752
  }
4245
4753
  },
4246
- {
4247
- "begin": "^([.'])[ \t]*(GS)(?=\\s|\\\\[\"#])(.*)$",
4248
- "end": "^([.'])[ \t]*(GE)(?=\\s|\\\\[\"#])",
4249
- "patterns": [
4250
- {
4251
- "name": "keyword.operator.gremlin",
4252
- "match": "(?x)\n\\b((?:sun)?gremlinfile|ARC|BEZIER|BOTCENT|BOTLEFT|BOTRIGHT\n|BSPLINE|CENTCENT|CENTLEFT|CENTRIGHT|CURVE|POLYGON|TOPCENT\n|TOPLEFT|TOPRIGHT|VECTOR)\\b"
4253
- },
4254
- {
4255
- "include": "#params"
4256
- }
4257
- ],
4258
- "beginCaptures": {
4259
- "0": {
4260
- "name": "meta.function.begin.gremlin.macro.roff"
4261
- },
4262
- "1": {
4263
- "name": "punctuation.definition.macro.roff"
4264
- },
4265
- "2": {
4266
- "name": "entity.function.name.roff"
4267
- },
4268
- "3": {
4269
- "patterns": [
4270
- {
4271
- "include": "#escapes"
4272
- }
4273
- ]
4274
- }
4275
- },
4276
- "endCaptures": {
4277
- "0": {
4278
- "name": "meta.function.end.gremlin.macro.roff"
4279
- },
4280
- "1": {
4281
- "name": "punctuation.definition.macro.roff"
4282
- },
4283
- "2": {
4284
- "name": "entity.name.function.roff"
4285
- }
4286
- }
4287
- },
4288
4754
  {
4289
4755
  "contentName": "source.embedded.perl.gnu.roff",
4290
- "begin": "^([.'])[ \t]*(Perl)[ \t]+(begin|start)(?=\\s|\\\\[\"#])(.*)$",
4291
- "end": "^([.'])[ \t]*(Perl)[ \t]+(end|stop)(?=\\s|\\\\[\"#])",
4756
+ "begin": "^([.'])[ \\t]*(Perl)[ \\t]+(begin|start)(?=$|\\s|\\\\E?[\"#])(.*)$",
4757
+ "end": "^([.'])[ \\t]*(Perl)[ \\t]+(end|stop)(?=$|\\s|\\\\E?[\"#])",
4292
4758
  "patterns": [
4293
4759
  {
4294
4760
  "include": "source.perl"
@@ -4332,8 +4798,8 @@
4332
4798
  },
4333
4799
  {
4334
4800
  "contentName": "source.embedded.lilypond.gnu.roff",
4335
- "begin": "^([.'])[ \t]*(lilypond)[ \t]+(begin|start)(?=\\s|\\\\[\"#])(.*)$",
4336
- "end": "^([.'])[ \t]*(lilypond)[ \t]+(end|stop)(?=\\s|\\\\[\"#])",
4801
+ "begin": "^([.'])[ \\t]*(lilypond)[ \\t]+(begin|start)(?=$|\\s|\\\\E?[\"#])(.*)$",
4802
+ "end": "^([.'])[ \\t]*(lilypond)[ \\t]+(end|stop)(?=$|\\s|\\\\E?[\"#])",
4337
4803
  "patterns": [
4338
4804
  {
4339
4805
  "include": "source.lilypond"
@@ -4377,8 +4843,8 @@
4377
4843
  },
4378
4844
  {
4379
4845
  "contentName": "meta.pinyin.gnu.roff",
4380
- "begin": "^([.'])[ \t]*(pinyin)[ \t]+(begin|start)(?=\\s|\\\\[\"#])(.*)$",
4381
- "end": "^([.'])[ \t]*(pinyin)[ \t]+(end|stop)(?=\\s|\\\\[\"#])",
4846
+ "begin": "^([.'])[ \\t]*(pinyin)[ \\t]+(begin|start)(?=$|\\s|\\\\E?[\"#])(.*)$",
4847
+ "end": "^([.'])[ \\t]*(pinyin)[ \\t]+(end|stop)(?=$|\\s|\\\\E?[\"#])",
4382
4848
  "patterns": [
4383
4849
  {
4384
4850
  "include": "#main"
@@ -4425,6 +4891,9 @@
4425
4891
  },
4426
4892
  {
4427
4893
  "include": "source.ideal#tags"
4894
+ },
4895
+ {
4896
+ "include": "source.gremlin"
4428
4897
  }
4429
4898
  ]
4430
4899
  },
@@ -4577,8 +5046,8 @@
4577
5046
  "include": "#escapes"
4578
5047
  },
4579
5048
  {
4580
- "name": "string.unquoted.filename.refer.roff",
4581
- "match": "((?:[^\\\\\\s]|\\\\(?!\").)+)",
5049
+ "name": "string.other.link.filename.refer.roff",
5050
+ "match": "((?:[^\\\\\\s]|\\\\(?!E?\").)+)",
4582
5051
  "captures": {
4583
5052
  "0": {
4584
5053
  "name": "markup.link.underline.refer.roff"
@@ -4614,7 +5083,7 @@
4614
5083
  "patterns": [
4615
5084
  {
4616
5085
  "name": "constant.character.escape.function.expand-register.gnu.roff",
4617
- "begin": "(\\|)?(((?:(?\u003c=\\|)\\\\*?)?\\\\)n([-+])?(\\[))",
5086
+ "begin": "(\\|)?((?:((\\\\)E)|((?:(?\u003c=\\|)\\\\*?)?\\\\))n([-+])?(\\[))",
4618
5087
  "end": "(\\])|(?\u003c!\\\\)(?=$)",
4619
5088
  "patterns": [
4620
5089
  {
@@ -4629,12 +5098,18 @@
4629
5098
  "name": "entity.name.roff"
4630
5099
  },
4631
5100
  "3": {
4632
- "name": "punctuation.definition.escape.roff"
5101
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
4633
5102
  },
4634
5103
  "4": {
4635
- "name": "keyword.operator.arithmetic.roff"
5104
+ "name": "punctuation.definition.escape.roff"
4636
5105
  },
4637
5106
  "5": {
5107
+ "name": "punctuation.definition.escape.roff"
5108
+ },
5109
+ "6": {
5110
+ "name": "keyword.operator.arithmetic.roff"
5111
+ },
5112
+ "7": {
4638
5113
  "name": "punctuation.section.begin.bracket.square.roff"
4639
5114
  }
4640
5115
  },
@@ -4646,55 +5121,67 @@
4646
5121
  },
4647
5122
  {
4648
5123
  "name": "constant.character.escape.function.expand-register.roff",
4649
- "match": "(?x)\n\n# 1: keyword.operator.absolute.roff\n(\\|)?\n\n# 2: entity.name.roff\n(\n\t# 3: punctuation.definition.escape.roff\n\t(\n\t\t(?:(?\u003c=\\|)\\\\*?)?\n\t\t\\\\\n\t)\n\tn\n\t([-+])? # 4: keyword.operator.arithmetic.roff\n\t(\\() # 5: punctuation.definition.brace.roff\n)\n\n# Name of register\n(?:\n\t# 6: constant.language.predefined.register.roff\n\t(ct|dl|dn|dw|dy|ln|mo|nl|sb|st|yr)\n\t|\n\t# 7: constant.language.predefined.register.gnu.roff\n\t(c\\.)\n\t|\n\t# 8: constant.language.predefined.register.readonly.roff\n\t(\\${2} | \\.[$aAbcdfFhHijklLnopRTstuvVwxyz])\n\t|\n\t# 9: constant.language.predefined.register.readonly.gnu.roff\n\t(\\.[CgmMOPUxyY])\n\t|\n\t# 10: variable.parameter.roff\n\t(\\S{2})\n)\n\n|\n\n# 11: keyword.operator.absolute.roff\n(\\|)?\n\n# 12: entity.name.roff\n(\n\t# 13: punctuation.definition.escape.roff\n\t(\n\t\t(?:(?\u003c=\\|)\\\\*?)?\n\t\t\\\\\n\t)\n\tn\n)\n\n# 14: keyword.operator.arithmetic.roff\n([-+])?\n\n# Name of register\n(?:\n\t(%) | # 15: constant.language.predefined.register.roff\n\t(\\S) # 16: variable.parameter.roff\n)",
5124
+ "match": "(?x)\n\n# 1: keyword.operator.absolute.roff\n(\\|)?\n\n# 2: entity.name.roff\n(\n\t(?:\n\t\t# 3: constant.character.escape.current-escape-char.gnu.roff\n\t\t(\n\t\t\t# 4: punctuation.definition.escape.roff\n\t\t\t(\\\\)E\n\t\t)\n\t\t|\n\t\t# 5: punctuation.definition.escape.roff\n\t\t(\n\t\t\t(?:(?\u003c=\\|)\\\\*?)?\n\t\t\t\\\\\n\t\t)\n\t)\n\tn\n\t([-+])? # 6: keyword.operator.arithmetic.roff\n\t(\\() # 7: punctuation.definition.brace.roff\n)\n\n# Name of register\n(?:\n\t# 8: constant.language.predefined.register.roff\n\t(ct|dl|dn|dw|dy|ln|mo|nl|sb|st|yr)\n\t|\n\t# 9: constant.language.predefined.register.gnu.roff\n\t(c\\.)\n\t|\n\t# 10: constant.language.predefined.register.readonly.roff\n\t(\\${2} | \\.[$aAbcdfFhHijklLnopRTstuvVwxyz])\n\t|\n\t# 11: constant.language.predefined.register.readonly.gnu.roff\n\t(\\.[CgmMOPUxyY])\n\t|\n\t# 12: variable.parameter.roff\n\t(\\S{2})\n)\n\n|\n\n# 13: keyword.operator.absolute.roff\n(\\|)?\n\n# 14: entity.name.roff\n(\n\t(?:\n\t\t# 15: constant.character.escape.current-escape-char.gnu.roff\n\t\t(\n\t\t\t# 16: punctuation.definition.escape.roff\n\t\t\t(\\\\)E\n\t\t)\n\t\t|\n\t\t# 17: punctuation.definition.escape.roff\n\t\t(\n\t\t\t(?:(?\u003c=\\|)\\\\*?)?\n\t\t\t\\\\\n\t\t)\n\t)\n\tn\n)\n\n# 18: keyword.operator.arithmetic.roff\n([-+])?\n\n# Name of register\n(?:\n\t(%) | # 19: constant.language.predefined.register.roff\n\t(\\S) # 20: variable.parameter.roff\n)",
4650
5125
  "captures": {
4651
5126
  "1": {
4652
5127
  "name": "keyword.operator.absolute.roff"
4653
5128
  },
4654
5129
  "10": {
4655
- "name": "variable.parameter.roff"
5130
+ "name": "constant.language.predefined.register.readonly.roff"
4656
5131
  },
4657
5132
  "11": {
4658
- "name": "keyword.operator.absolute.roff"
5133
+ "name": "constant.language.predefined.register.readonly.gnu.roff"
4659
5134
  },
4660
5135
  "12": {
4661
- "name": "entity.name.roff"
5136
+ "name": "variable.parameter.roff"
4662
5137
  },
4663
5138
  "13": {
4664
- "name": "punctuation.definition.escape.roff"
5139
+ "name": "keyword.operator.absolute.roff"
4665
5140
  },
4666
5141
  "14": {
4667
- "name": "keyword.operator.arithmetic.roff"
5142
+ "name": "entity.name.roff"
4668
5143
  },
4669
5144
  "15": {
4670
- "name": "constant.language.predefined.register.roff"
5145
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
4671
5146
  },
4672
5147
  "16": {
4673
- "name": "variable.parameter.roff"
5148
+ "name": "punctuation.definition.escape.roff"
5149
+ },
5150
+ "17": {
5151
+ "name": "punctuation.definition.escape.roff"
5152
+ },
5153
+ "18": {
5154
+ "name": "keyword.operator.arithmetic.roff"
5155
+ },
5156
+ "19": {
5157
+ "name": "constant.language.predefined.register.roff"
4674
5158
  },
4675
5159
  "2": {
4676
5160
  "name": "entity.name.roff"
4677
5161
  },
5162
+ "20": {
5163
+ "name": "variable.parameter.roff"
5164
+ },
4678
5165
  "3": {
4679
- "name": "punctuation.definition.escape.roff"
5166
+ "name": "constant.character.escape.current-escape-char.gnu.roff"
4680
5167
  },
4681
5168
  "4": {
4682
- "name": "keyword.operator.arithmetic.roff"
5169
+ "name": "punctuation.definition.escape.roff"
4683
5170
  },
4684
5171
  "5": {
4685
- "name": "punctuation.definition.brace.roff"
5172
+ "name": "punctuation.definition.escape.roff"
4686
5173
  },
4687
5174
  "6": {
4688
- "name": "constant.language.predefined.register.roff"
5175
+ "name": "keyword.operator.arithmetic.roff"
4689
5176
  },
4690
5177
  "7": {
4691
- "name": "constant.language.predefined.register.gnu.roff"
5178
+ "name": "punctuation.definition.brace.roff"
4692
5179
  },
4693
5180
  "8": {
4694
- "name": "constant.language.predefined.register.readonly.roff"
5181
+ "name": "constant.language.predefined.register.roff"
4695
5182
  },
4696
5183
  "9": {
4697
- "name": "constant.language.predefined.register.readonly.gnu.roff"
5184
+ "name": "constant.language.predefined.register.gnu.roff"
4698
5185
  }
4699
5186
  }
4700
5187
  }
@@ -4704,8 +5191,8 @@
4704
5191
  "patterns": [
4705
5192
  {
4706
5193
  "name": "meta.function.request.$2.gnu.roff",
4707
- "begin": "(?x) ^([.'])[ \t]* (aln|als|asciify|backtrace|blm|boxa|box|brp|cflags|chop|close|composite|color |cp|devicem|device|do|ecs|ecr|evc|fam|fchar|fcolor|fschar|fspecial|ftr|fzoom |gcolor|hcode|hla|hlm|hpfa|hpfcode|hpf|hym|hys|itc|kern|length|linetabs|lsm |mso|nop|nroff|opena|open|output|pev|pnr|psbb|pso|ptr|pvs|rchar|rfschar|rj |rnn|schar|shc|shift|sizes|special|spreadwarn|sty|substring|tkf|tm1|tmc|trf |trin|trnt|troff|unformat|vpt|warnscale|warn|writec|writem|write) (?=\\s|\\\\[\"#])",
4708
- "end": "(?\u003c!\\\\)(?=\n)|(?=\\\\\")",
5194
+ "begin": "(?x) ^([.'])[ \\t]*\n(aln|als|asciify|backtrace|blm|boxa|box|brp|cflags|chop|close|composite|color\n|cp|devicem|device|do|ecs|ecr|evc|fam|fchar|fcolor|fschar|fspecial|ftr|fzoom\n|gcolor|hcode|hla|hlm|hpfa|hpfcode|hpf|hym|hys|itc|kern|length|linetabs|lsm\n|mso|nop|nroff|opena|open|output|pev|pnr|psbb|pso|ptr|pvs|rchar|rfschar|rj\n|rnn|schar|shc|shift|sizes|special|spreadwarn|sty|substring|tkf|tm1|tmc|trf\n|trin|trnt|troff|unformat|vpt|warnscale|warn|writec|writem|write)\n(?=\\s|\\\\E?[\"#])",
5195
+ "end": "(?\u003c!\\\\)(?=\\R|$)|(?=\\\\E?\")",
4709
5196
  "patterns": [
4710
5197
  {
4711
5198
  "include": "#param-group"
@@ -4722,8 +5209,8 @@
4722
5209
  },
4723
5210
  {
4724
5211
  "name": "meta.function.request.assign-class.gnu.roff",
4725
- "begin": "^([.'])[ \t]*(class)[ \t]+(\\S+)",
4726
- "end": "(?\u003c!\\\\)(?=$)|(?=\\\\\")",
5212
+ "begin": "^([.'])[ \\t]*(class)[ \\t]+(\\S+)",
5213
+ "end": "(?\u003c!\\\\)(?=$)|(?=\\\\E?\")",
4727
5214
  "patterns": [
4728
5215
  {
4729
5216
  "match": "[^\\s\\\\]+(-)[^\\s\\\\]+",
@@ -4754,8 +5241,8 @@
4754
5241
  },
4755
5242
  {
4756
5243
  "name": "meta.function.request.$2.gnu.roff",
4757
- "begin": "^([.'])[ \t]*(char)[ \t]*(\\S+)?[ \t]*(.*)(?=$|\\\\[\"#])",
4758
- "end": "(?\u003c!\\\\)(?=$)|(?=\\\\[\"#])",
5244
+ "begin": "^([.'])[ \\t]*(char)[ \\t]*(\\S+)?[ \\t]*(.*)(?=$|\\\\E?[\"#])",
5245
+ "end": "(?\u003c!\\\\)(?=$)|(?=\\\\E?[\"#])",
4759
5246
  "patterns": [
4760
5247
  {
4761
5248
  "include": "$self"
@@ -4782,8 +5269,8 @@
4782
5269
  },
4783
5270
  {
4784
5271
  "name": "meta.function.request.define-colour.gnu.roff",
4785
- "begin": "^([.'])[ \t]*(defcolor)(?=\\s)[ \t]*((?:[^\\s\\\\]|\\\\(?![\"#]).)*)[ \t]*(rgb|cmyk?|gr[ae]y)?",
4786
- "end": "(?\u003c!\\\\)(?=$)|(?=\\\\[\"#])",
5272
+ "begin": "^([.'])[ \\t]*(defcolor)(?=\\s)[ \\t]*((?:[^\\s\\\\]|\\\\(?!E?[\"#]).)*)[ \\t]*(rgb|cmyk?|gr[ae]y)?",
5273
+ "end": "(?\u003c!\\\\)(?=$)|(?=\\\\E?[\"#])",
4787
5274
  "patterns": [
4788
5275
  {
4789
5276
  "name": "constant.other.colour.hex.roff",
@@ -4819,8 +5306,8 @@
4819
5306
  }
4820
5307
  },
4821
5308
  {
4822
- "begin": "^([.'])[ \t]*(break|continue|return|while)(?=\\s)",
4823
- "end": "(?\u003c!\\\\)(?=$)|(?=\\\\\")",
5309
+ "begin": "^([.'])[ \\t]*(break|continue|return|while)(?=\\s)",
5310
+ "end": "(?\u003c!\\\\)(?=$)|(?=\\\\E?\")",
4824
5311
  "patterns": [
4825
5312
  {
4826
5313
  "include": "#param-group"
@@ -4841,8 +5328,8 @@
4841
5328
  {
4842
5329
  "name": "meta.function.request.$2.roff",
4843
5330
  "contentName": "string.unquoted.roff",
4844
- "begin": "^([.'])[ \t]*(ab|tm)(?=\\s|\\\\[\"#])",
4845
- "end": "(?\u003c!\\\\)(?=\n)|(?=\\\\\")",
5331
+ "begin": "^([.'])[ \\t]*(ab|tm)(?=\\s|\\\\E?[\"#])",
5332
+ "end": "(?\u003c!\\\\)(?=\\R|$)|(?=\\\\E?\")",
4846
5333
  "patterns": [
4847
5334
  {
4848
5335
  "include": "#escapes-copymode"
@@ -4859,8 +5346,8 @@
4859
5346
  },
4860
5347
  {
4861
5348
  "name": "meta.function.request.$2.roff",
4862
- "begin": "(?x) ^([.'])[ \t]* (ab|ad|af|bd|bp|br|c2|cc|ce|cf|ch|cs|da|di|dt|ec|em|eo|ev |ex|fc|fi|fl|fp|ft|hc|hw|hy|in|it|lc|lg|lf|ll|ls|lt|mc|mk |na|ne|nf|nh|nm|nn|ns|nx|os|pc|pi|pl|pm|pn|po|ps|rd|rm|rn |rr|rs|rt|so|sp|ss|sv|sy|ta|tc|ti|tm|tr|uf|vs|wh) (?=\\s|\\d+\\s*$|\\\\[\"#])",
4863
- "end": "(?\u003c!\\\\)(?=\n)|(?=\\\\\")",
5349
+ "begin": "(?x) ^([.'])[ \\t]*\n(ab|ad|af|bd|bp|br|c2|cc|ce|cf|ch|cs|da|di|dt|ec|em|eo|ev\n|ex|fc|fi|fl|fp|ft|hc|hw|hy|in|it|lc|lg|lf|ll|ls|lt|mc|mk\n|na|ne|nf|nh|nm|nn|ns|nx|os|pc|pi|pl|pm|pn|po|ps|rd|rm|rn\n|rr|rs|rt|so|sp|ss|sv|sy|ta|tc|ti|tm|tr|uf|vs|wh)\n(?=\\s|\\d+\\s*$|\\\\E?[\"#])",
5350
+ "end": "(?\u003c!\\\\)(?=\\R|$)|(?=\\\\E?\")",
4864
5351
  "patterns": [
4865
5352
  {
4866
5353
  "include": "#param-group"
@@ -4889,7 +5376,7 @@
4889
5376
  },
4890
5377
  {
4891
5378
  "name": "meta.function.request.$2.roff",
4892
- "begin": "^([.'])[ \t]*(nr)[ \t]*(?:(%|ct|dl|dn|dw|dy|ln|mo|nl|sb|st|yr)|(c\\.)|(\\${2}|\\.[$aAbcdfFhHijklLnopRTstuvVwxyz])|(\\.[CgmMOPUxyY])|(\\S+))?[ \t]*(.*)$",
5379
+ "begin": "^([.'])[ \\t]*(nr)[ \\t]*(?:(%|ct|dl|dn|dw|dy|ln|mo|nl|sb|st|yr)|(c\\.)|(\\${2}|\\.[$aAbcdfFhHijklLnopRTstuvVwxyz])|(\\.[CgmMOPUxyY])|(\\S+))?[ \\t]*(.*)$",
4893
5380
  "end": "(?\u003c!\\\\)$",
4894
5381
  "beginCaptures": {
4895
5382
  "1": {
@@ -4933,7 +5420,7 @@
4933
5420
  {
4934
5421
  "name": "meta.function.request.$2.roff",
4935
5422
  "contentName": "string.unquoted.roff",
4936
- "begin": "^([.'])[ \t]*([ad]s1?)[ \t]+(((?:[^\\s\\\\]|\\\\(?!\").)+))?",
5423
+ "begin": "^([.'])[ \\t]*([ad]s1?)[ \\t]+(((?:[^\\s\\\\]|\\\\(?!E?\").)+))?",
4937
5424
  "end": "(?\u003c!\\\\)$",
4938
5425
  "patterns": [
4939
5426
  {
@@ -4966,8 +5453,8 @@
4966
5453
  {
4967
5454
  "name": "meta.function.request.$2.roff",
4968
5455
  "contentName": "function-call.arguments.roff",
4969
- "begin": "^([.'])[ \t]*(tl)(?=\\s)",
4970
- "end": "(?\u003c!\\\\)$|(?=\\\\\")",
5456
+ "begin": "^([.'])[ \\t]*(tl)(?=\\s)",
5457
+ "end": "(?\u003c!\\\\)$|(?=\\\\E?\")",
4971
5458
  "patterns": [
4972
5459
  {
4973
5460
  "include": "#3-part-title"
@@ -5004,7 +5491,7 @@
5004
5491
  {
5005
5492
  "name": "string.quoted.double.roff",
5006
5493
  "begin": "(?\u003c=(?\u003c=[^\\\\]|^)\\s|^)\"(?!\")",
5007
- "end": "(?\u003c!\")\"(?!\")|(?\u003c!\\\\)$|(?=\\\\\")",
5494
+ "end": "(?\u003c!\")\"(?!\")|(?\u003c!\\\\)$|(?=\\\\E?\")",
5008
5495
  "patterns": [
5009
5496
  {
5010
5497
  "include": "#string-escapes"
@@ -5038,12 +5525,12 @@
5038
5525
  "patterns": [
5039
5526
  {
5040
5527
  "name": "meta.function-call.arguments.tbl.roff",
5041
- "begin": "\\G|^((\\.)T\u0026)[ \t]*$",
5042
- "end": "(\\.)$\\n?|^(?=[.'][ \t]*TE(?=\\s))",
5528
+ "begin": "\\G|^((\\.)T\u0026)[ \\t]*$",
5529
+ "end": "(\\.)$\\R?|^(?=[.'][ \\t]*TE(?=\\s))",
5043
5530
  "patterns": [
5044
5531
  {
5045
5532
  "begin": "^(?=\\.)",
5046
- "end": "^(?=[.'][ \t]*TE(?=\\s|\\\\[\"#]))",
5533
+ "end": "^(?=[.'][ \\t]*TE(?=\\s|\\\\E?[\"#]))",
5047
5534
  "patterns": [
5048
5535
  {
5049
5536
  "include": "$self"
@@ -5171,7 +5658,7 @@
5171
5658
  "name": "meta.multiline-cell.tbl.roff",
5172
5659
  "contentName": "string.unquoted.tbl.roff",
5173
5660
  "begin": "T(\\{)",
5174
- "end": "^T(\\})|^(?=[.'][ \t]*TE\\b)",
5661
+ "end": "^T(\\})|^(?=[.'][ \\t]*TE\\b)",
5175
5662
  "patterns": [
5176
5663
  {
5177
5664
  "include": "$self"
@@ -5202,9 +5689,10 @@
5202
5689
  "underline-first": {
5203
5690
  "patterns": [
5204
5691
  {
5692
+ "name": "string.other.link.roff",
5205
5693
  "contentName": "markup.underline.roff",
5206
- "begin": "\\G[ \t]*(?!\")(?=(?:[^\\s\\\\]|\\\\(?!\").)+)",
5207
- "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\s|$)|(?=\\\\\")",
5694
+ "begin": "\\G[ \\t]*(?!\")(?=(?:[^\\s\\\\]|\\\\(?!E?\").)+)",
5695
+ "end": "(?\u003c![^\\\\]\\\\|^\\\\)(?=\\s|$)|(?=\\\\E?\")",
5208
5696
  "patterns": [
5209
5697
  {
5210
5698
  "include": "#escapes"
@@ -5226,10 +5714,10 @@
5226
5714
  }
5227
5715
  },
5228
5716
  {
5229
- "name": "string.quoted.double.roff",
5717
+ "name": "string.other.link.roff",
5230
5718
  "contentName": "markup.underline.roff",
5231
- "begin": "\\G[ \t]*(\")",
5232
- "end": "((?:\"\")*)\"(?!\")|(?\u003c!\\\\)$|(?=\\\\\")",
5719
+ "begin": "\\G[ \\t]*(\")",
5720
+ "end": "((?:\"\")*)\"(?!\")|(?\u003c!\\\\)$|(?=\\\\E?\")",
5233
5721
  "patterns": [
5234
5722
  {
5235
5723
  "include": "#string-escapes"
@@ -5266,7 +5754,7 @@
5266
5754
  "patterns": [
5267
5755
  {
5268
5756
  "name": "meta.request.$2.roff",
5269
- "match": "^([.'])[ \t]*(ul|cu)\\s*(0+)(?:(?!\\\\\")[\\D])*(?=\\s|$)(.*)$",
5757
+ "match": "^([.'])[ \\t]*(ul|cu)\\s*(0+)(?:(?!\\\\E?\")\\D)*(?=\\s|$)(.*)$",
5270
5758
  "captures": {
5271
5759
  "1": {
5272
5760
  "name": "punctuation.definition.function.request.roff"
@@ -5288,12 +5776,12 @@
5288
5776
  },
5289
5777
  {
5290
5778
  "name": "meta.request.$2.roff",
5291
- "begin": "^([.'])[ \t]*(ul|cu)(?=\\s|$|\\\\)(.*?)$\\n",
5292
- "end": "(?\u003c!\\\\)$",
5779
+ "begin": "^([.'])[ \\t]*(ul|cu)(?=\\s|$|\\\\)(.*?)$\\R?",
5780
+ "end": "(?!\\G)(?\u003c!\\\\)$",
5293
5781
  "patterns": [
5294
5782
  {
5295
- "begin": "^(?=[.']|\\\\!)(.*)$\\n",
5296
- "end": "^",
5783
+ "begin": "(?:^|\\G)(?=[.']|\\\\E?!)(.*)$\\R?",
5784
+ "end": "(?!\\G)^",
5297
5785
  "beginCaptures": {
5298
5786
  "1": {
5299
5787
  "patterns": [
@@ -5305,9 +5793,10 @@
5305
5793
  }
5306
5794
  },
5307
5795
  {
5308
- "name": "markup.underline.roff",
5309
- "begin": "^(?![.'])",
5310
- "end": "(?\u003c!\\\\)$"
5796
+ "name": "string.other.link.roff",
5797
+ "contentName": "markup.underline.roff",
5798
+ "begin": "(?:^|\\G)(?![.'])",
5799
+ "end": "(?!\\G)(?\u003c!\\\\)$"
5311
5800
  }
5312
5801
  ],
5313
5802
  "beginCaptures": {
@@ -5332,8 +5821,8 @@
5332
5821
  "patterns": [
5333
5822
  {
5334
5823
  "name": "meta.function.${2:/downcase}.www.macro.roff",
5335
- "begin": "(?x) ^([.'])[ \t]* (ALN|BCL|BGIMG|DC|DLE|DLS|HEAD|HR|HTM?L|HX|JOBNAME |LI|LINKSTYLE|LK|LNE|LNS|MPIMG|NHR|P?IMG|TAG)(?=\\s)",
5336
- "end": "(?\u003c!\\\\)$|(?=\\\\\")",
5824
+ "begin": "(?x) ^([.'])[ \\t]*\n(ALN|BCL|BGIMG|DC|DLE|DLS|HEAD|HR|HTM?L|HX|JOBNAME\n|LI|LINKSTYLE|LK|LNE|LNS|MPIMG|NHR|P?IMG|TAG)(?=\\s)",
5825
+ "end": "(?\u003c!\\\\)$|(?=\\\\E?\")",
5337
5826
  "patterns": [
5338
5827
  {
5339
5828
  "include": "#params"
@@ -5350,8 +5839,8 @@
5350
5839
  },
5351
5840
  {
5352
5841
  "name": "meta.function.${2:/downcase}.www.macro.roff",
5353
- "begin": "^([.'])[ \t]*(URL|FTP|MTO)(?=\\s)",
5354
- "end": "(?\u003c!\\\\)(?=$)|(?=\\\\\")",
5842
+ "begin": "^([.'])[ \\t]*(URL|FTP|MTO)(?=\\s)",
5843
+ "end": "(?\u003c!\\\\)(?=$)|(?=\\\\E?\")",
5355
5844
  "patterns": [
5356
5845
  {
5357
5846
  "include": "#underline-first"
@@ -5369,8 +5858,8 @@
5369
5858
  {
5370
5859
  "name": "meta.function.${2:/downcase}.www.macro.roff",
5371
5860
  "contentName": "markup.raw.roff",
5372
- "begin": "^([.'])[ \t]*(CDS)(?=\\s|\\\\[\"#])\\s*(\\\\[#\"].*)?$",
5373
- "end": "^([.'])[ \t]*(CDE)(?=\\s|\\\\[\"#])",
5861
+ "begin": "^([.'])[ \\t]*(CDS)(?=\\s|\\\\E?[\"#])\\s*(\\\\E?[#\"].*)?$",
5862
+ "end": "^([.'])[ \\t]*(CDE)(?=\\s|\\\\E?[\"#])",
5374
5863
  "patterns": [
5375
5864
  {
5376
5865
  "include": "$self"
@@ -5403,8 +5892,8 @@
5403
5892
  {
5404
5893
  "name": "markup.heading.$3.www.macro.roff",
5405
5894
  "contentName": "string.unquoted.heading.roff",
5406
- "begin": "^([.'])[ \t]*(HnS)(?=\\s)(?:\\s*(\\d+))?(?:\\s*(\\\\[#\"].*)$)?",
5407
- "end": "^([.'])[ \t]*(HnE)(?=\\s)(.*)$",
5895
+ "begin": "^([.'])[ \\t]*(HnS)(?=\\s)(?:\\s*(\\d+))?(?:\\s*(\\\\E?[#\"].*)$)?",
5896
+ "end": "^([.'])[ \\t]*(HnE)(?=\\s)(.*)$",
5408
5897
  "patterns": [
5409
5898
  {
5410
5899
  "include": "$self"
@@ -5450,8 +5939,8 @@
5450
5939
  {
5451
5940
  "name": "meta.function.${2:/downcase}.www.macro.roff",
5452
5941
  "contentName": "markup.list.ordered.roff",
5453
- "begin": "^([.'])[ \t]*(OLS)(?=\\s)\\s*(\\\\[#\"].*)?$",
5454
- "end": "^([.'])[ \t]*(OLE)(?=\\s)",
5942
+ "begin": "^([.'])[ \\t]*(OLS)(?=\\s)\\s*(\\\\E?[#\"].*)?$",
5943
+ "end": "^([.'])[ \\t]*(OLE)(?=\\s)",
5455
5944
  "patterns": [
5456
5945
  {
5457
5946
  "include": "$self"
@@ -5484,8 +5973,8 @@
5484
5973
  {
5485
5974
  "name": "meta.function.${2:/downcase}.www.macro.roff",
5486
5975
  "contentName": "markup.list.ordered.roff",
5487
- "begin": "^([.'])[ \t]*(ULS)(?=\\s)\\s*(\\\\[#\"].*)?$",
5488
- "end": "^([.'])[ \t]*(ULE)(?=\\s)",
5976
+ "begin": "^([.'])[ \\t]*(ULS)(?=\\s)\\s*(\\\\E?[#\"].*)?$",
5977
+ "end": "^([.'])[ \\t]*(ULE)(?=\\s)",
5489
5978
  "patterns": [
5490
5979
  {
5491
5980
  "include": "$self"