@codingame/monaco-editor-wrapper 29.0.0 → 30.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/dist/_virtual/_.vsix.js +14 -14
  2. package/dist/_virtual/_commonjsHelpers.js +1 -1
  3. package/dist/assets/{Angular.ng-template-21.2.3.vsix → Angular.ng-template-22.0.1.vsix}/changelog.md +21 -4
  4. package/dist/assets/Angular.ng-template-22.0.1.vsix/package.json +438 -0
  5. package/dist/assets/Angular.ng-template-22.0.1.vsix/readme.md +153 -0
  6. package/dist/assets/Angular.ng-template-22.0.1.vsix/template-tag-language-configuration.json +5 -0
  7. package/dist/assets/{Angular.ng-template-21.2.3.vsix → Angular.ng-template-22.0.1.vsix}/template-tag.json +35 -1
  8. package/dist/assets/{Angular.ng-template-21.2.3.vsix → Angular.ng-template-22.0.1.vsix}/tsconfig-ng.schema.json +0 -5
  9. package/dist/assets/{Dart-Code.dart-code-3.133.20260421.vsix → Dart-Code.dart-code-3.137.20260611.vsix}/package.json +12 -6
  10. package/dist/assets/{JakeBecker.elixir-ls-0.30.0.vsix → JakeBecker.elixir-ls-0.31.1.vsix}/changelog.md +38 -1
  11. package/dist/assets/{JakeBecker.elixir-ls-0.30.0.vsix → JakeBecker.elixir-ls-0.31.1.vsix}/package.json +154 -20
  12. package/dist/assets/{JakeBecker.elixir-ls-0.30.0.vsix → JakeBecker.elixir-ls-0.31.1.vsix}/readme.md +3 -2
  13. package/dist/assets/{Vue.volar-3.2.7.vsix → Vue.volar-3.3.5.vsix}/package.json +3 -3
  14. package/dist/assets/{Vue.volar-3.2.7.vsix → Vue.volar-3.3.5.vsix}/vue-tsconfig.schema.json +5 -0
  15. package/dist/assets/{Vue.volar-3.2.7.vsix → Vue.volar-3.3.5.vsix}/vue.tmLanguage.json +35 -0
  16. package/dist/assets/broadcomMFD.cobol-language-support-2.5.0.vsix/CICS.tmLanguage.json +66 -0
  17. package/dist/assets/{broadcomMFD.cobol-language-support-2.4.3.vsix → broadcomMFD.cobol-language-support-2.5.0.vsix}/COBOL.tmLanguage.json +32 -0
  18. package/dist/assets/broadcomMFD.cobol-language-support-2.5.0.vsix/NDVR.COBOL.tmLanguage.json +232 -0
  19. package/dist/assets/{broadcomMFD.cobol-language-support-2.4.3.vsix → broadcomMFD.cobol-language-support-2.5.0.vsix}/changelog.md +28 -0
  20. package/dist/assets/{broadcomMFD.cobol-language-support-2.4.3.vsix → broadcomMFD.cobol-language-support-2.5.0.vsix}/package.json +120 -149
  21. package/dist/assets/{broadcomMFD.cobol-language-support-2.4.3.vsix → broadcomMFD.cobol-language-support-2.5.0.vsix}/readme.md +192 -73
  22. package/dist/assets/broadcomMFD.cobol-language-support-2.5.0.vsix/snippets.json +3400 -0
  23. package/dist/assets/{golang.Go-0.53.1.vsix → golang.Go-0.55.0.vsix}/README.md +4 -4
  24. package/dist/assets/{golang.Go-0.53.1.vsix → golang.Go-0.55.0.vsix}/go.json +5 -0
  25. package/dist/assets/{golang.Go-0.53.1.vsix → golang.Go-0.55.0.vsix}/package.json +110 -13
  26. package/dist/assets/haskell.haskell-2.8.1.vsix/changelog.md +657 -0
  27. package/dist/assets/haskell.haskell-2.8.1.vsix/hls-logo.png +0 -0
  28. package/dist/assets/haskell.haskell-2.8.1.vsix/package.json +1395 -0
  29. package/dist/assets/haskell.haskell-2.8.1.vsix/readme.md +305 -0
  30. package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/changelog.md +89 -0
  31. package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/package.json +32 -38
  32. package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/package.nls.cs.json +1 -2
  33. package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/package.nls.de.json +1 -2
  34. package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/package.nls.es.json +1 -2
  35. package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/package.nls.fr.json +1 -2
  36. package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/package.nls.it.json +1 -2
  37. package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/package.nls.ja.json +1 -2
  38. package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/package.nls.json +0 -1
  39. package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/package.nls.ko.json +1 -2
  40. package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/package.nls.pl.json +1 -2
  41. package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/package.nls.pt-br.json +1 -2
  42. package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/package.nls.ru.json +1 -2
  43. package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/package.nls.tr.json +1 -2
  44. package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/package.nls.zh-cn.json +1 -2
  45. package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/package.nls.zh-tw.json +9 -10
  46. package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/readme.md +1 -1
  47. package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/package.json +1 -1
  48. package/dist/assets/{ms-vscode.cpptools-1.32.1.vsix → ms-vscode.cpptools-1.32.2.vsix}/changelog.md +9 -10
  49. package/dist/assets/{ms-vscode.cpptools-1.32.1.vsix → ms-vscode.cpptools-1.32.2.vsix}/package.json +1 -1
  50. package/dist/assets/{ms-vscode.cpptools-1.32.1.vsix → ms-vscode.cpptools-1.32.2.vsix}/package.nls.cs.json +1 -1
  51. package/dist/assets/{ms-vscode.cpptools-1.32.1.vsix → ms-vscode.cpptools-1.32.2.vsix}/package.nls.de.json +1 -1
  52. package/dist/assets/{ms-vscode.cpptools-1.32.1.vsix → ms-vscode.cpptools-1.32.2.vsix}/package.nls.es.json +1 -1
  53. package/dist/assets/{ms-vscode.cpptools-1.32.1.vsix → ms-vscode.cpptools-1.32.2.vsix}/package.nls.fr.json +1 -1
  54. package/dist/assets/{ms-vscode.cpptools-1.32.1.vsix → ms-vscode.cpptools-1.32.2.vsix}/package.nls.it.json +1 -1
  55. package/dist/assets/{ms-vscode.cpptools-1.32.1.vsix → ms-vscode.cpptools-1.32.2.vsix}/package.nls.ja.json +1 -1
  56. package/dist/assets/{ms-vscode.cpptools-1.32.1.vsix → ms-vscode.cpptools-1.32.2.vsix}/package.nls.json +1 -1
  57. package/dist/assets/{ms-vscode.cpptools-1.32.1.vsix → ms-vscode.cpptools-1.32.2.vsix}/package.nls.ko.json +1 -1
  58. package/dist/assets/{ms-vscode.cpptools-1.32.1.vsix → ms-vscode.cpptools-1.32.2.vsix}/package.nls.pl.json +1 -1
  59. package/dist/assets/{ms-vscode.cpptools-1.32.1.vsix → ms-vscode.cpptools-1.32.2.vsix}/package.nls.pt-br.json +1 -1
  60. package/dist/assets/{ms-vscode.cpptools-1.32.1.vsix → ms-vscode.cpptools-1.32.2.vsix}/package.nls.ru.json +1 -1
  61. package/dist/assets/{ms-vscode.cpptools-1.32.1.vsix → ms-vscode.cpptools-1.32.2.vsix}/package.nls.tr.json +1 -1
  62. package/dist/assets/{ms-vscode.cpptools-1.32.1.vsix → ms-vscode.cpptools-1.32.2.vsix}/package.nls.zh-cn.json +1 -1
  63. package/dist/assets/{ms-vscode.cpptools-1.32.1.vsix → ms-vscode.cpptools-1.32.2.vsix}/package.nls.zh-tw.json +1 -1
  64. package/dist/assets/{redhat.java-1.55.2026042408.vsix → redhat.java-1.55.2026061309.vsix}/package.json +4 -1
  65. package/dist/assets/{scala-lang.scala-0.5.9.vsix → scala-lang.scala-0.5.10.vsix}/CHANGELOG.md +19 -1
  66. package/dist/assets/{scala-lang.scala-0.5.9.vsix → scala-lang.scala-0.5.10.vsix}/Scala.tmLanguage.json +1 -1
  67. package/dist/assets/{scala-lang.scala-0.5.9.vsix → scala-lang.scala-0.5.10.vsix}/package.json +1 -1
  68. package/dist/assets/{scalameta.metals-1.65.3.vsix → scalameta.metals-1.67.1.vsix}/package.json +46 -22
  69. package/dist/assets/{svelte.svelte-vscode-109.15.0.vsix → svelte.svelte-vscode-110.2.0.vsix}/package.json +3 -3
  70. package/dist/extensions/Angular.ng-template-22.0.1.vsix.js +36 -0
  71. package/dist/extensions/Dart-Code.dart-code-3.137.20260611.vsix.js +20 -0
  72. package/dist/extensions/JakeBecker.elixir-ls-0.31.1.vsix.js +26 -0
  73. package/dist/extensions/{Vue.volar-3.2.7.vsix.js → Vue.volar-3.3.5.vsix.js} +21 -21
  74. package/dist/extensions/broadcomMFD.cobol-language-support-2.5.0.vsix.js +36 -0
  75. package/dist/extensions/golang.Go-0.55.0.vsix.js +24 -0
  76. package/dist/extensions/haskell.haskell-2.8.1.vsix.js +16 -0
  77. package/dist/extensions/ms-dotnettools.csharp-2.143.56.vsix.js +58 -0
  78. package/dist/extensions/{ms-python.python-2026.5.2026042602.vsix.js → ms-python.python-2026.5.2026061001.vsix.js} +25 -25
  79. package/dist/extensions/{ms-vscode.cpptools-1.32.1.vsix.js → ms-vscode.cpptools-1.32.2.vsix.js} +19 -19
  80. package/dist/extensions/redhat.java-1.55.2026061309.vsix.js +48 -0
  81. package/dist/extensions/scala-lang.scala-0.5.10.vsix.js +20 -0
  82. package/dist/extensions/scalameta.metals-1.67.1.vsix.js +48 -0
  83. package/dist/extensions/svelte.svelte-vscode-110.2.0.vsix.js +46 -0
  84. package/dist/extensions.js +7 -1
  85. package/package.json +104 -101
  86. package/stats.html +1 -1
  87. package/dist/assets/Angular.ng-template-21.2.3.vsix/package.json +0 -302
  88. package/dist/assets/Angular.ng-template-21.2.3.vsix/readme.md +0 -69
  89. package/dist/assets/broadcomMFD.cobol-language-support-2.4.3.vsix/CICS.tmLanguage.json +0 -66
  90. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/C2Hs-configuration.json +0 -29
  91. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/C2Hs.json +0 -23
  92. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/CHANGELOG.md +0 -357
  93. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/Hsc2Hs-configuration.json +0 -30
  94. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/Hsc2Hs.json +0 -23
  95. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/README.md +0 -68
  96. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/alex.json +0 -236
  97. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/cabal-configuration.json +0 -6
  98. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/cabal.json +0 -53
  99. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/codeblock-cabal.json +0 -28
  100. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/codeblock-haskell.json +0 -28
  101. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/codeblock-literate-haskell.json +0 -28
  102. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/happy.json +0 -196
  103. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/haskell-configuration.json +0 -29
  104. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/haskell.json +0 -2525
  105. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/literate-haskell-configuration.json +0 -29
  106. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/literateHaskell.json +0 -56
  107. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/logo.png +0 -0
  108. package/dist/assets/justusadam.language-haskell-3.6.0.vsix/package.json +0 -234
  109. package/dist/extensions/Angular.ng-template-21.2.3.vsix.js +0 -34
  110. package/dist/extensions/Dart-Code.dart-code-3.133.20260421.vsix.js +0 -20
  111. package/dist/extensions/JakeBecker.elixir-ls-0.30.0.vsix.js +0 -26
  112. package/dist/extensions/broadcomMFD.cobol-language-support-2.4.3.vsix.js +0 -32
  113. package/dist/extensions/golang.Go-0.53.1.vsix.js +0 -24
  114. package/dist/extensions/justusadam.language-haskell-3.6.0.vsix.js +0 -46
  115. package/dist/extensions/ms-dotnettools.csharp-2.136.19.vsix.js +0 -58
  116. package/dist/extensions/redhat.java-1.55.2026042408.vsix.js +0 -48
  117. package/dist/extensions/scala-lang.scala-0.5.9.vsix.js +0 -20
  118. package/dist/extensions/scalameta.metals-1.65.3.vsix.js +0 -48
  119. package/dist/extensions/svelte.svelte-vscode-109.15.0.vsix.js +0 -46
  120. /package/dist/assets/{Angular.ng-template-21.2.3.vsix → Angular.ng-template-22.0.1.vsix}/angular.png +0 -0
  121. /package/dist/assets/{Angular.ng-template-21.2.3.vsix → Angular.ng-template-22.0.1.vsix}/expression.json +0 -0
  122. /package/dist/assets/{Angular.ng-template-21.2.3.vsix → Angular.ng-template-22.0.1.vsix}/host-object-literal.json +0 -0
  123. /package/dist/assets/{Angular.ng-template-21.2.3.vsix → Angular.ng-template-22.0.1.vsix}/inline-styles.json +0 -0
  124. /package/dist/assets/{Angular.ng-template-21.2.3.vsix → Angular.ng-template-22.0.1.vsix}/inline-template.json +0 -0
  125. /package/dist/assets/{Angular.ng-template-21.2.3.vsix → Angular.ng-template-22.0.1.vsix}/let-declaration.json +0 -0
  126. /package/dist/assets/{Angular.ng-template-21.2.3.vsix → Angular.ng-template-22.0.1.vsix}/template-blocks.json +0 -0
  127. /package/dist/assets/{Angular.ng-template-21.2.3.vsix → Angular.ng-template-22.0.1.vsix}/template.json +0 -0
  128. /package/dist/assets/{Dart-Code.dart-code-3.133.20260421.vsix → Dart-Code.dart-code-3.137.20260611.vsix}/changelog.md +0 -0
  129. /package/dist/assets/{Dart-Code.dart-code-3.133.20260421.vsix → Dart-Code.dart-code-3.137.20260611.vsix}/dart-language-configuration.json +0 -0
  130. /package/dist/assets/{Dart-Code.dart-code-3.133.20260421.vsix → Dart-Code.dart-code-3.137.20260611.vsix}/dart.json +0 -0
  131. /package/dist/assets/{Dart-Code.dart-code-3.133.20260421.vsix → Dart-Code.dart-code-3.137.20260611.vsix}/dart.png +0 -0
  132. /package/dist/assets/{Dart-Code.dart-code-3.133.20260421.vsix → Dart-Code.dart-code-3.137.20260611.vsix}/readme.md +0 -0
  133. /package/dist/assets/{JakeBecker.elixir-ls-0.30.0.vsix → JakeBecker.elixir-ls-0.31.1.vsix}/eex-language-configuration.json +0 -0
  134. /package/dist/assets/{JakeBecker.elixir-ls-0.30.0.vsix → JakeBecker.elixir-ls-0.31.1.vsix}/eex.json +0 -0
  135. /package/dist/assets/{JakeBecker.elixir-ls-0.30.0.vsix → JakeBecker.elixir-ls-0.31.1.vsix}/elixir-language-configuration.json +0 -0
  136. /package/dist/assets/{JakeBecker.elixir-ls-0.30.0.vsix → JakeBecker.elixir-ls-0.31.1.vsix}/elixir.json +0 -0
  137. /package/dist/assets/{JakeBecker.elixir-ls-0.30.0.vsix → JakeBecker.elixir-ls-0.31.1.vsix}/html-eex.json +0 -0
  138. /package/dist/assets/{JakeBecker.elixir-ls-0.30.0.vsix → JakeBecker.elixir-ls-0.31.1.vsix}/logo.png +0 -0
  139. /package/dist/assets/{Vue.volar-3.2.7.vsix → Vue.volar-3.3.5.vsix}/changelog.md +0 -0
  140. /package/dist/assets/{Vue.volar-3.2.7.vsix → Vue.volar-3.3.5.vsix}/icon.png +0 -0
  141. /package/dist/assets/{Vue.volar-3.2.7.vsix → Vue.volar-3.3.5.vsix}/markdown-language-configuration.json +0 -0
  142. /package/dist/assets/{Vue.volar-3.2.7.vsix → Vue.volar-3.3.5.vsix}/markdown-vue.json +0 -0
  143. /package/dist/assets/{Vue.volar-3.2.7.vsix → Vue.volar-3.3.5.vsix}/mdx-vue.json +0 -0
  144. /package/dist/assets/{Vue.volar-3.2.7.vsix → Vue.volar-3.3.5.vsix}/package.nls.ja.json +0 -0
  145. /package/dist/assets/{Vue.volar-3.2.7.vsix → Vue.volar-3.3.5.vsix}/package.nls.json +0 -0
  146. /package/dist/assets/{Vue.volar-3.2.7.vsix → Vue.volar-3.3.5.vsix}/package.nls.ru.json +0 -0
  147. /package/dist/assets/{Vue.volar-3.2.7.vsix → Vue.volar-3.3.5.vsix}/package.nls.zh-CN.json +0 -0
  148. /package/dist/assets/{Vue.volar-3.2.7.vsix → Vue.volar-3.3.5.vsix}/package.nls.zh-TW.json +0 -0
  149. /package/dist/assets/{Vue.volar-3.2.7.vsix → Vue.volar-3.3.5.vsix}/readme.md +0 -0
  150. /package/dist/assets/{Vue.volar-3.2.7.vsix → Vue.volar-3.3.5.vsix}/sfc-template-language-configuration.json +0 -0
  151. /package/dist/assets/{Vue.volar-3.2.7.vsix → Vue.volar-3.3.5.vsix}/vue-directives.json +0 -0
  152. /package/dist/assets/{Vue.volar-3.2.7.vsix → Vue.volar-3.3.5.vsix}/vue-interpolations.json +0 -0
  153. /package/dist/assets/{Vue.volar-3.2.7.vsix → Vue.volar-3.3.5.vsix}/vue-language-configuration.json +0 -0
  154. /package/dist/assets/{Vue.volar-3.2.7.vsix → Vue.volar-3.3.5.vsix}/vue-sfc-script-leading-operator-fix.json +0 -0
  155. /package/dist/assets/{Vue.volar-3.2.7.vsix → Vue.volar-3.3.5.vsix}/vue-sfc-style-variable-injection.json +0 -0
  156. /package/dist/assets/{broadcomMFD.cobol-language-support-2.4.3.vsix → broadcomMFD.cobol-language-support-2.5.0.vsix}/HP.COBOL.tmLanguage.json +0 -0
  157. /package/dist/assets/{broadcomMFD.cobol-language-support-2.4.3.vsix → broadcomMFD.cobol-language-support-2.5.0.vsix}/SQL.tmLanguage.json +0 -0
  158. /package/dist/assets/{broadcomMFD.cobol-language-support-2.4.3.vsix → broadcomMFD.cobol-language-support-2.5.0.vsix}/lang-config.json +0 -0
  159. /package/dist/assets/{broadcomMFD.cobol-language-support-2.4.3.vsix → broadcomMFD.cobol-language-support-2.5.0.vsix}/logo.png +0 -0
  160. /package/dist/assets/{broadcomMFD.cobol-language-support-2.4.3.vsix → broadcomMFD.cobol-language-support-2.5.0.vsix}/pgm_conf.schema.json +0 -0
  161. /package/dist/assets/{broadcomMFD.cobol-language-support-2.4.3.vsix → broadcomMFD.cobol-language-support-2.5.0.vsix}/proc_grps.schema.json +0 -0
  162. /package/dist/assets/{golang.Go-0.53.1.vsix → golang.Go-0.55.0.vsix}/CHANGELOG.md +0 -0
  163. /package/dist/assets/{golang.Go-0.53.1.vsix → golang.Go-0.55.0.vsix}/go-logo-blue.png +0 -0
  164. /package/dist/assets/{golang.Go-0.53.1.vsix → golang.Go-0.55.0.vsix}/go.mod.language-configuration.json +0 -0
  165. /package/dist/assets/{golang.Go-0.53.1.vsix → golang.Go-0.55.0.vsix}/go.mod.tmGrammar.json +0 -0
  166. /package/dist/assets/{golang.Go-0.53.1.vsix → golang.Go-0.55.0.vsix}/go.sum.tmGrammar.json +0 -0
  167. /package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/aspnetcorerazor.tmLanguage.json +0 -0
  168. /package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/csharp.json +0 -0
  169. /package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/csharpIcon.png +0 -0
  170. /package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/language-configuration.json +0 -0
  171. /package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/language-configuration2.json +0 -0
  172. /package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/vs2019_dark.json +0 -0
  173. /package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/vs2019_light.json +0 -0
  174. /package/dist/assets/{ms-dotnettools.csharp-2.136.19.vsix → ms-dotnettools.csharp-2.143.56.vsix}/xaml.tmLanguage.json +0 -0
  175. /package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/changelog.md +0 -0
  176. /package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/conda-environment.json +0 -0
  177. /package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/conda-meta.json +0 -0
  178. /package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/condarc.json +0 -0
  179. /package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/icon.png +0 -0
  180. /package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/package.nls.cs.json +0 -0
  181. /package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/package.nls.de.json +0 -0
  182. /package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/package.nls.es.json +0 -0
  183. /package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/package.nls.fr.json +0 -0
  184. /package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/package.nls.it.json +0 -0
  185. /package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/package.nls.ja.json +0 -0
  186. /package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/package.nls.json +0 -0
  187. /package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/package.nls.ko.json +0 -0
  188. /package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/package.nls.pl.json +0 -0
  189. /package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/package.nls.pt-br.json +0 -0
  190. /package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/package.nls.qps-ploc.json +0 -0
  191. /package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/package.nls.ru.json +0 -0
  192. /package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/package.nls.tr.json +0 -0
  193. /package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/package.nls.zh-cn.json +0 -0
  194. /package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/package.nls.zh-tw.json +0 -0
  195. /package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/pip-requirements.json +0 -0
  196. /package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/pip-requirements.tmLanguage.json +0 -0
  197. /package/dist/assets/{ms-python.python-2026.5.2026042602.vsix → ms-python.python-2026.5.2026061001.vsix}/readme.md +0 -0
  198. /package/dist/assets/{ms-vscode.cpptools-1.32.1.vsix → ms-vscode.cpptools-1.32.2.vsix}/LanguageCCPP_color_128x.png +0 -0
  199. /package/dist/assets/{ms-vscode.cpptools-1.32.1.vsix → ms-vscode.cpptools-1.32.2.vsix}/readme.md +0 -0
  200. /package/dist/assets/{redhat.java-1.55.2026042408.vsix → redhat.java-1.55.2026061309.vsix}/JavaProperties.tmLanguage.json +0 -0
  201. /package/dist/assets/{redhat.java-1.55.2026042408.vsix → redhat.java-1.55.2026061309.vsix}/changelog.md +0 -0
  202. /package/dist/assets/{redhat.java-1.55.2026042408.vsix → redhat.java-1.55.2026061309.vsix}/icon128.png +0 -0
  203. /package/dist/assets/{redhat.java-1.55.2026042408.vsix → redhat.java-1.55.2026061309.vsix}/inline-html.json +0 -0
  204. /package/dist/assets/{redhat.java-1.55.2026042408.vsix → redhat.java-1.55.2026061309.vsix}/inline-json.json +0 -0
  205. /package/dist/assets/{redhat.java-1.55.2026042408.vsix → redhat.java-1.55.2026061309.vsix}/inline-sql.json +0 -0
  206. /package/dist/assets/{redhat.java-1.55.2026042408.vsix → redhat.java-1.55.2026061309.vsix}/inline-xml.json +0 -0
  207. /package/dist/assets/{redhat.java-1.55.2026042408.vsix → redhat.java-1.55.2026061309.vsix}/inline-yaml.json +0 -0
  208. /package/dist/assets/{redhat.java-1.55.2026042408.vsix → redhat.java-1.55.2026061309.vsix}/java-properties-configuration.json +0 -0
  209. /package/dist/assets/{redhat.java-1.55.2026042408.vsix → redhat.java-1.55.2026061309.vsix}/java.tmLanguage.json +0 -0
  210. /package/dist/assets/{redhat.java-1.55.2026042408.vsix → redhat.java-1.55.2026061309.vsix}/kotlin.tmLanguage.json +0 -0
  211. /package/dist/assets/{redhat.java-1.55.2026042408.vsix → redhat.java-1.55.2026061309.vsix}/language-configuration.json +0 -0
  212. /package/dist/assets/{redhat.java-1.55.2026042408.vsix → redhat.java-1.55.2026061309.vsix}/language-configuration2.json +0 -0
  213. /package/dist/assets/{redhat.java-1.55.2026042408.vsix → redhat.java-1.55.2026061309.vsix}/package.nls.json +0 -0
  214. /package/dist/assets/{redhat.java-1.55.2026042408.vsix → redhat.java-1.55.2026061309.vsix}/package.nls.ko.json +0 -0
  215. /package/dist/assets/{redhat.java-1.55.2026042408.vsix → redhat.java-1.55.2026061309.vsix}/package.nls.zh-cn.json +0 -0
  216. /package/dist/assets/{redhat.java-1.55.2026042408.vsix → redhat.java-1.55.2026061309.vsix}/package.nls.zh-tw.json +0 -0
  217. /package/dist/assets/{redhat.java-1.55.2026042408.vsix → redhat.java-1.55.2026061309.vsix}/package.schema.json +0 -0
  218. /package/dist/assets/{redhat.java-1.55.2026042408.vsix → redhat.java-1.55.2026061309.vsix}/readme.md +0 -0
  219. /package/dist/assets/{scala-lang.scala-0.5.9.vsix → scala-lang.scala-0.5.10.vsix}/README.md +0 -0
  220. /package/dist/assets/{scala-lang.scala-0.5.9.vsix → scala-lang.scala-0.5.10.vsix}/language-configuration.json +0 -0
  221. /package/dist/assets/{scala-lang.scala-0.5.9.vsix → scala-lang.scala-0.5.10.vsix}/smooth-spiral.png +0 -0
  222. /package/dist/assets/{scalameta.metals-1.65.3.vsix → scalameta.metals-1.67.1.vsix}/CHANGELOG.md +0 -0
  223. /package/dist/assets/{scalameta.metals-1.65.3.vsix → scalameta.metals-1.67.1.vsix}/README.md +0 -0
  224. /package/dist/assets/{scalameta.metals-1.65.3.vsix → scalameta.metals-1.67.1.vsix}/book-dark.svg +0 -0
  225. /package/dist/assets/{scalameta.metals-1.65.3.vsix → scalameta.metals-1.67.1.vsix}/book-light.svg +0 -0
  226. /package/dist/assets/{scalameta.metals-1.65.3.vsix → scalameta.metals-1.67.1.vsix}/buildtarget.json +0 -0
  227. /package/dist/assets/{scalameta.metals-1.65.3.vsix → scalameta.metals-1.67.1.vsix}/file_type_java.svg +0 -0
  228. /package/dist/assets/{scalameta.metals-1.65.3.vsix → scalameta.metals-1.67.1.vsix}/file_type_play.svg +0 -0
  229. /package/dist/assets/{scalameta.metals-1.65.3.vsix → scalameta.metals-1.67.1.vsix}/file_type_scala.svg +0 -0
  230. /package/dist/assets/{scalameta.metals-1.65.3.vsix → scalameta.metals-1.67.1.vsix}/jvm-bytecode-verbose.json +0 -0
  231. /package/dist/assets/{scalameta.metals-1.65.3.vsix → scalameta.metals-1.67.1.vsix}/jvm-bytecode.json +0 -0
  232. /package/dist/assets/{scalameta.metals-1.65.3.vsix → scalameta.metals-1.67.1.vsix}/logo.png +0 -0
  233. /package/dist/assets/{scalameta.metals-1.65.3.vsix → scalameta.metals-1.67.1.vsix}/routes.json +0 -0
  234. /package/dist/assets/{scalameta.metals-1.65.3.vsix → scalameta.metals-1.67.1.vsix}/scalameta-logo.png +0 -0
  235. /package/dist/assets/{scalameta.metals-1.65.3.vsix → scalameta.metals-1.67.1.vsix}/semanticdb.json +0 -0
  236. /package/dist/assets/{scalameta.metals-1.65.3.vsix → scalameta.metals-1.67.1.vsix}/tasty.json +0 -0
  237. /package/dist/assets/{scalameta.metals-1.65.3.vsix → scalameta.metals-1.67.1.vsix}/twirl-html.json +0 -0
  238. /package/dist/assets/{scalameta.metals-1.65.3.vsix → scalameta.metals-1.67.1.vsix}/twirl-html.language-configuration.json +0 -0
  239. /package/dist/assets/{scalameta.metals-1.65.3.vsix → scalameta.metals-1.67.1.vsix}/twirl-js.json +0 -0
  240. /package/dist/assets/{scalameta.metals-1.65.3.vsix → scalameta.metals-1.67.1.vsix}/twirl-xml.json +0 -0
  241. /package/dist/assets/{svelte.svelte-vscode-109.15.0.vsix → svelte.svelte-vscode-110.2.0.vsix}/CHANGELOG.md +0 -0
  242. /package/dist/assets/{svelte.svelte-vscode-109.15.0.vsix → svelte.svelte-vscode-110.2.0.vsix}/README.md +0 -0
  243. /package/dist/assets/{svelte.svelte-vscode-109.15.0.vsix → svelte.svelte-vscode-110.2.0.vsix}/javascript.json +0 -0
  244. /package/dist/assets/{svelte.svelte-vscode-109.15.0.vsix → svelte.svelte-vscode-110.2.0.vsix}/language-configuration-start-tag.json +0 -0
  245. /package/dist/assets/{svelte.svelte-vscode-109.15.0.vsix → svelte.svelte-vscode-110.2.0.vsix}/language-configuration.json +0 -0
  246. /package/dist/assets/{svelte.svelte-vscode-109.15.0.vsix → svelte.svelte-vscode-110.2.0.vsix}/logo.png +0 -0
  247. /package/dist/assets/{svelte.svelte-vscode-109.15.0.vsix → svelte.svelte-vscode-110.2.0.vsix}/markdown-svelte-css.json +0 -0
  248. /package/dist/assets/{svelte.svelte-vscode-109.15.0.vsix → svelte.svelte-vscode-110.2.0.vsix}/markdown-svelte-js.json +0 -0
  249. /package/dist/assets/{svelte.svelte-vscode-109.15.0.vsix → svelte.svelte-vscode-110.2.0.vsix}/markdown-svelte.json +0 -0
  250. /package/dist/assets/{svelte.svelte-vscode-109.15.0.vsix → svelte.svelte-vscode-110.2.0.vsix}/package-json-schema.json +0 -0
  251. /package/dist/assets/{svelte.svelte-vscode-109.15.0.vsix → svelte.svelte-vscode-110.2.0.vsix}/postcss.json +0 -0
  252. /package/dist/assets/{svelte.svelte-vscode-109.15.0.vsix → svelte.svelte-vscode-110.2.0.vsix}/prettier-options-schema.json +0 -0
  253. /package/dist/assets/{svelte.svelte-vscode-109.15.0.vsix → svelte.svelte-vscode-110.2.0.vsix}/pug-svelte-dotblock.json +0 -0
  254. /package/dist/assets/{svelte.svelte-vscode-109.15.0.vsix → svelte.svelte-vscode-110.2.0.vsix}/pug-svelte-tags.json +0 -0
  255. /package/dist/assets/{svelte.svelte-vscode-109.15.0.vsix → svelte.svelte-vscode-110.2.0.vsix}/pug-svelte.json +0 -0
  256. /package/dist/assets/{svelte.svelte-vscode-109.15.0.vsix → svelte.svelte-vscode-110.2.0.vsix}/svelte.json +0 -0
  257. /package/dist/assets/{svelte.svelte-vscode-109.15.0.vsix → svelte.svelte-vscode-110.2.0.vsix}/svelte.tmLanguage.json +0 -0
  258. /package/dist/assets/{svelte.svelte-vscode-109.15.0.vsix → svelte.svelte-vscode-110.2.0.vsix}/typescript.json +0 -0
  259. /package/dist/{additionalExtensions.d.ts → src/additionalExtensions.d.ts} +0 -0
  260. /package/dist/{configuration → src/configuration}/index.d.ts +0 -0
  261. /package/dist/{customExtensions → src/customExtensions}/cobol.d.ts +0 -0
  262. /package/dist/{customExtensions → src/customExtensions}/index.d.ts +0 -0
  263. /package/dist/{extensions.d.ts → src/extensions.d.ts} +0 -0
  264. /package/dist/{features → src/features}/debug.d.ts +0 -0
  265. /package/dist/{features → src/features}/extensionGallery.d.ts +0 -0
  266. /package/dist/{features → src/features}/extensionHostWorker.d.ts +0 -0
  267. /package/dist/{features → src/features}/notifications.d.ts +0 -0
  268. /package/dist/{features → src/features}/profile.d.ts +0 -0
  269. /package/dist/{features → src/features}/search.d.ts +0 -0
  270. /package/dist/{features → src/features}/terminal.d.ts +0 -0
  271. /package/dist/{features → src/features}/testing.d.ts +0 -0
  272. /package/dist/{features → src/features}/typescriptStandalone.d.ts +0 -0
  273. /package/dist/{features → src/features}/viewPanels.d.ts +0 -0
  274. /package/dist/{features → src/features}/views.d.ts +0 -0
  275. /package/dist/{features → src/features}/workbench.d.ts +0 -0
  276. /package/dist/{features → src/features}/workingCopyBackup.d.ts +0 -0
  277. /package/dist/{index.d.ts → src/index.d.ts} +0 -0
  278. /package/dist/{keybindings → src/keybindings}/index.d.ts +0 -0
  279. /package/dist/{keybindings → src/keybindings}/vim.d.ts +0 -0
  280. /package/dist/{languages → src/languages}/index.d.ts +0 -0
  281. /package/dist/{monaco.d.ts → src/monaco.d.ts} +0 -0
  282. /package/dist/{services.d.ts → src/services.d.ts} +0 -0
  283. /package/dist/{style.d.ts → src/style.d.ts} +0 -0
  284. /package/dist/{tests → src/tests}/constants.d.ts +0 -0
  285. /package/dist/{tests → src/tests}/utils.d.ts +0 -0
  286. /package/dist/{tools → src/tools}/EditorOpenHandlerRegistry.d.ts +0 -0
  287. /package/dist/{tools → src/tools}/FakeWorker.d.ts +0 -0
  288. /package/dist/{tools → src/tools}/utils/editorOperationUtils.d.ts +0 -0
  289. /package/dist/{tools → src/tools}/utils/rangeUtils.d.ts +0 -0
  290. /package/dist/{tools → src/tools}/utils/stringUtils.d.ts +0 -0
  291. /package/dist/{tools.d.ts → src/tools.d.ts} +0 -0
  292. /package/dist/{worker.d.ts → src/worker.d.ts} +0 -0
@@ -1,2525 +0,0 @@
1
- {
2
- "fileTypes": [
3
- "hs",
4
- "hs-boot",
5
- "hsig"
6
- ],
7
- "keyEquivalent": "^~H",
8
- "name": "Haskell",
9
- "patterns": [
10
- {
11
- "include": "#liquid_haskell"
12
- },
13
- {
14
- "include": "#comment_like"
15
- },
16
- {
17
- "include": "#numeric_literals"
18
- },
19
- {
20
- "include": "#string_literal"
21
- },
22
- {
23
- "include": "#char_literal"
24
- },
25
- {
26
- "match": "(?<!@|#)-\\}",
27
- "name": "invalid"
28
- },
29
- {
30
- "match": "(\\()\\s*(\\))",
31
- "name": "constant.language.unit.haskell",
32
- "captures": {
33
- "1": {
34
- "name": "punctuation.paren.haskell"
35
- },
36
- "2": {
37
- "name": "punctuation.paren.haskell"
38
- }
39
- }
40
- },
41
- {
42
- "match": "(\\()(#)\\s*(#)(\\))",
43
- "name": "constant.language.unit.unboxed.haskell",
44
- "captures": {
45
- "1": {
46
- "name": "punctuation.paren.haskell"
47
- },
48
- "2": {
49
- "name": "keyword.operator.hash.haskell"
50
- },
51
- "3": {
52
- "name": "keyword.operator.hash.haskell"
53
- },
54
- "4": {
55
- "name": "punctuation.paren.haskell"
56
- }
57
- }
58
- },
59
- {
60
- "match": "(\\()\\s*,[\\s,]*(\\))",
61
- "name": "support.constant.tuple.haskell",
62
- "captures": {
63
- "1": {
64
- "name": "punctuation.paren.haskell"
65
- },
66
- "2": {
67
- "name": "punctuation.paren.haskell"
68
- }
69
- }
70
- },
71
- {
72
- "match": "(\\()(#)\\s*,[\\s,]*(#)(\\))",
73
- "name": "support.constant.tuple.unboxed.haskell",
74
- "captures": {
75
- "1": {
76
- "name": "punctuation.paren.haskell"
77
- },
78
- "2": {
79
- "name": "keyword.operator.hash.haskell"
80
- },
81
- "3": {
82
- "name": "keyword.operator.hash.haskell"
83
- },
84
- "4": {
85
- "name": "punctuation.paren.haskell"
86
- }
87
- }
88
- },
89
- {
90
- "match": "(\\[)\\s*(\\])",
91
- "name": "constant.language.empty-list.haskell",
92
- "captures": {
93
- "1": {
94
- "name": "punctuation.bracket.haskell"
95
- },
96
- "2": {
97
- "name": "punctuation.bracket.haskell"
98
- }
99
- }
100
- },
101
- {
102
- "begin": "(\\b(?<!')(module)|^(signature))(\\b(?!'))",
103
- "beginCaptures": {
104
- "2": {
105
- "name": "keyword.other.module.haskell"
106
- },
107
- "3": {
108
- "name": "keyword.other.signature.haskell"
109
- }
110
- },
111
- "end": "(?=\\b(?<!')where\\b(?!'))",
112
- "name": "meta.declaration.module.haskell",
113
- "patterns": [
114
- {
115
- "include": "#comment_like"
116
- },
117
- {
118
- "include": "#module_name"
119
- },
120
- {
121
- "include": "#module_exports"
122
- },
123
- {
124
- "match": "[a-z]+",
125
- "name": "invalid"
126
- }
127
- ]
128
- },
129
- {
130
- "include": "#ffi"
131
- },
132
- {
133
- "begin": "^(\\s*)(class)(\\b(?!'))",
134
- "beginCaptures": {
135
- "2": {
136
- "name": "keyword.other.class.haskell"
137
- }
138
- },
139
- "end": "(?x) # Detect end of class declaration:\n # 'where' keyword\n (?=(?<!')\\bwhere\\b(?!')) \n # Decreasing indentation\n |(?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )",
140
- "name": "meta.declaration.class.haskell",
141
- "patterns": [
142
- {
143
- "include": "#comment_like"
144
- },
145
- {
146
- "include": "#where"
147
- },
148
- {
149
- "include": "#type_signature"
150
- }
151
- ]
152
- },
153
- {
154
- "begin": "(?x)\n ^(\\s*)(data|newtype)(?:\\s+(instance))?\\s+\n # Keep consuming characters until:\n ((?:(?!\n # the equals symbol or the start of a single-line comment, or\n (?: \n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n (?:=|--+)\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n )\n # the \"where\" or \"deriving\" keywords, or\n | (?:\\b(?<!')(?:where|deriving)\\b(?!'))\n # the start of a block comment.\n | {-\n #\n ).)*)\n (?=\\b(?<!'')where\\b(?!''))",
155
- "beginCaptures": {
156
- "2": {
157
- "name": "keyword.other.$2.haskell"
158
- },
159
- "3": {
160
- "name": "keyword.other.instance.haskell"
161
- },
162
- "4": {
163
- "patterns": [
164
- {
165
- "include": "#type_signature"
166
- }
167
- ]
168
- }
169
- },
170
- "name": "meta.declaration.$2.generalized.haskell",
171
- "end": "(?x) # Detect end of data declaration:\n # Deriving clause\n (?=(?<!')\\bderiving\\b(?!')) \n # Decreasing indentation\n |(?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
172
- "patterns": [
173
- {
174
- "include": "#comment_like"
175
- },
176
- {
177
- "begin": "(?x)\n (?<!')\\b(where)\n \\s*(\\{)(?!-)",
178
- "end": "\\}",
179
- "beginCaptures": {
180
- "1": {
181
- "name": "keyword.other.where.haskell"
182
- },
183
- "2": {
184
- "name": "punctuation.brace.haskell"
185
- }
186
- },
187
- "endCaptures": {
188
- "1": {
189
- "name": "punctuation.brace.haskell"
190
- }
191
- },
192
- "patterns": [
193
- {
194
- "include": "#comment_like"
195
- },
196
- {
197
- "include": "#gadt_constructor"
198
- },
199
- {
200
- "match": ";",
201
- "name": "punctuation.semicolon.haskell"
202
- }
203
- ]
204
- },
205
- {
206
- "match": "\\b(?<!')(where)\\b(?!')",
207
- "name": "keyword.other.where.haskell"
208
- },
209
- {
210
- "include": "#deriving"
211
- },
212
- {
213
- "include": "#gadt_constructor"
214
- }
215
- ]
216
- },
217
- {
218
- "include": "#role_annotation"
219
- },
220
- {
221
- "name": "meta.declaration.pattern.type.haskell",
222
- "begin": "^(\\s*)(pattern)\\s+(.*?)\\s+(::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])",
223
- "beginCaptures": {
224
- "2": {
225
- "name": "keyword.other.pattern.haskell"
226
- },
227
- "3": {
228
- "patterns": [
229
- {
230
- "include": "#comma"
231
- },
232
- {
233
- "include": "#data_constructor"
234
- }
235
- ]
236
- },
237
- "4": {
238
- "name": "keyword.operator.double-colon.haskell"
239
- }
240
- },
241
- "end": "(?x) # Detect end of pattern type definition by decreasing indentation:\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
242
- "patterns": [
243
- {
244
- "include": "#type_signature"
245
- }
246
- ]
247
- },
248
- {
249
- "name": "meta.declaration.pattern.haskell",
250
- "begin": "^\\s*(pattern)\\b(?!')",
251
- "captures": {
252
- "1": {
253
- "name": "keyword.other.pattern.haskell"
254
- }
255
- },
256
- "end": "(?x) # Detect end of pattern type definition by decreasing indentation:\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
257
- "patterns": [
258
- {
259
- "include": "$self"
260
- }
261
- ]
262
- },
263
- {
264
- "begin": "(?x)\n # Data declaration\n ^(\\s*)(data|newtype)(?:\\s+(family|instance))?\\s+\n # Keep consuming characters until:\n (((?!\n # the equals symbol or the start of a single-line comment, or\n (?: \n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n (?:=|--+)\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n )\n # the \"where\" or \"deriving\" keywords, or\n | (?:\\b(?<!')(?:where|deriving)\\b(?!'))\n # the start of a block comment.\n | {-\n #\n ).)*)",
265
- "beginCaptures": {
266
- "2": {
267
- "name": "keyword.other.$2.haskell"
268
- },
269
- "3": {
270
- "name": "keyword.other.$3.haskell"
271
- },
272
- "4": {
273
- "patterns": [
274
- {
275
- "include": "#type_signature"
276
- }
277
- ]
278
- }
279
- },
280
- "name": "meta.declaration.$2.algebraic.haskell",
281
- "end": "(?x) # Detect end of data declaration: \n # Decreasing indentation\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )",
282
- "patterns": [
283
- {
284
- "include": "#comment_like"
285
- },
286
- {
287
- "include": "#deriving"
288
- },
289
- {
290
- "include": "#forall"
291
- },
292
- {
293
- "include": "#adt_constructor"
294
- },
295
- {
296
- "include": "#data_context"
297
- },
298
- {
299
- "include": "#record_decl"
300
- },
301
- {
302
- "include": "#type_signature"
303
- }
304
- ]
305
- },
306
- {
307
- "name": "meta.declaration.type.family.haskell",
308
- "begin": "(?x)\n # Type family\n ^(\\s*)(type)\\s+(family)\\b(?!')\n # Keep consuming characters until:\n (((?!\n # the equals symbol or the start of a single-line comment, or\n (?: \n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n (?:=|--+)\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n )\n # the \"where\" keyword, or\n | \\b(?<!')where\\b(?!')\n # the start of a block comment.\n | {-\n #\n ).)*)",
309
- "beginCaptures": {
310
- "2": {
311
- "name": "keyword.other.type.haskell"
312
- },
313
- "3": {
314
- "name": "keyword.other.family.haskell"
315
- },
316
- "4": {
317
- "patterns": [
318
- {
319
- "include": "#comment_like"
320
- },
321
- {
322
- "include": "#where"
323
- },
324
- {
325
- "include": "#type_signature"
326
- }
327
- ]
328
- }
329
- },
330
- "end": "(?x) # Detect end of type family by decreasing indentation:\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
331
- "patterns": [
332
- {
333
- "include": "#comment_like"
334
- },
335
- {
336
- "include": "#where"
337
- },
338
- {
339
- "include": "#type_signature"
340
- }
341
- ]
342
- },
343
- {
344
- "name": "meta.declaration.type.haskell",
345
- "begin": "(?x)\n # Type declaration\n ^(\\s*)(type)(?:\\s+(instance))?\\s+\n # Keep consuming characters until:\n (((?!\n # the equals symbol, the start of a single-line comment, or a type signature\n (?: \n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n (?:=|--+|::|∷)\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n )\n # the start of a block comment.\n | {-\n #\n ).)*)",
346
- "beginCaptures": {
347
- "2": {
348
- "name": "keyword.other.type.haskell"
349
- },
350
- "3": {
351
- "name": "keyword.other.instance.haskell"
352
- },
353
- "4": {
354
- "patterns": [
355
- {
356
- "include": "#type_signature"
357
- }
358
- ]
359
- }
360
- },
361
- "end": "(?x) # Detect end of type definition by decreasing indentation:\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
362
- "patterns": [
363
- {
364
- "include": "#type_signature"
365
- }
366
- ]
367
- },
368
- {
369
- "begin": "^(\\s*)(instance)(\\b(?!'))",
370
- "beginCaptures": {
371
- "2": {
372
- "name": "keyword.other.instance.haskell"
373
- }
374
- },
375
- "end": "(?x) # Detect end of instance declaration:\n # 'where' keyword\n (?=\\b(?<!')(where)\\b(?!'))\n # Decreasing indentation\n |(?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
376
- "name": "meta.declaration.instance.haskell",
377
- "patterns": [
378
- {
379
- "include": "#comment_like"
380
- },
381
- {
382
- "include": "#where"
383
- },
384
- {
385
- "include": "#type_signature"
386
- }
387
- ]
388
- },
389
- {
390
- "begin": "^(\\s*)(import)(\\b(?!'))",
391
- "beginCaptures": {
392
- "2": {
393
- "name": "keyword.other.import.haskell"
394
- }
395
- },
396
- "end": "(?x) # Detect end of import\n # 'where' keyword\n (?=\\b(?<!')(where)\\b(?!'))\n # Decreasing indentation\n |(?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
397
- "name": "meta.import.haskell",
398
- "patterns": [
399
- {
400
- "include": "#comment_like"
401
- },
402
- {
403
- "include": "#where"
404
- },
405
- {
406
- "match": "(qualified|as|hiding)",
407
- "captures": {
408
- "1": {
409
- "name": "keyword.other.$1.haskell"
410
- }
411
- }
412
- },
413
- {
414
- "include": "#module_name"
415
- },
416
- {
417
- "include": "#module_exports"
418
- }
419
- ]
420
- },
421
- {
422
- "include": "#deriving"
423
- },
424
- {
425
- "include": "#layout_herald"
426
- },
427
- {
428
- "include": "#keyword"
429
- },
430
- {
431
- "match": "^\\s*(infix[lr]?)\\s+(.*)",
432
- "captures": {
433
- "1": {
434
- "name": "keyword.other.fixity.$1.haskell"
435
- },
436
- "2": {
437
- "patterns": [
438
- {
439
- "include": "#comment_like"
440
- },
441
- {
442
- "include": "#integer_literals"
443
- },
444
- {
445
- "match": ":[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]*",
446
- "name": "constant.other.operator.infix.haskell"
447
- },
448
- {
449
- "include": "#infix_op"
450
- }
451
- ]
452
- }
453
- },
454
- "name": "meta.fixity-declaration.haskell"
455
- },
456
- {
457
- "include": "#start_type_signature"
458
- },
459
- {
460
- "include": "#overloaded_label"
461
- },
462
- {
463
- "include": "#type_application"
464
- },
465
- {
466
- "include": "#reserved_symbol"
467
- },
468
- {
469
- "include": "#fun_decl"
470
- },
471
- {
472
- "include": "#qualifier"
473
- },
474
- {
475
- "match": ":[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]*",
476
- "name": "constant.other.operator.infix.haskell"
477
- },
478
- {
479
- "include": "#data_constructor"
480
- },
481
- {
482
- "include": "#prefix_op"
483
- },
484
- {
485
- "include": "#infix_op"
486
- },
487
- {
488
- "begin": "(\\()(#)\\s",
489
- "end": "(#)(\\))",
490
- "beginCaptures": {
491
- "1": {
492
- "name": "punctuation.paren.haskell"
493
- },
494
- "2": {
495
- "name": "keyword.operator.hash.haskell"
496
- }
497
- },
498
- "endCaptures": {
499
- "1": {
500
- "name": "keyword.operator.hash.haskell"
501
- },
502
- "2": {
503
- "name": "punctuation.paren.haskell"
504
- }
505
- },
506
- "patterns": [
507
- {
508
- "include": "#comma"
509
- },
510
- {
511
- "include": "$self"
512
- }
513
- ]
514
- },
515
- {
516
- "begin": "(\\()",
517
- "end": "(\\))",
518
- "beginCaptures": {
519
- "1": {
520
- "name": "punctuation.paren.haskell"
521
- }
522
- },
523
- "endCaptures": {
524
- "1": {
525
- "name": "punctuation.paren.haskell"
526
- }
527
- },
528
- "patterns": [
529
- {
530
- "include": "#comma"
531
- },
532
- {
533
- "include": "$self"
534
- }
535
- ]
536
- },
537
- {
538
- "include": "#quasi_quote"
539
- },
540
- {
541
- "begin": "(\\[)",
542
- "end": "(\\])",
543
- "beginCaptures": {
544
- "1": {
545
- "name": "punctuation.bracket.haskell"
546
- }
547
- },
548
- "endCaptures": {
549
- "1": {
550
- "name": "punctuation.bracket.haskell"
551
- }
552
- },
553
- "patterns": [
554
- {
555
- "include": "#comma"
556
- },
557
- {
558
- "include": "$self"
559
- }
560
- ]
561
- },
562
- {
563
- "include": "#record"
564
- }
565
- ],
566
- "repository": {
567
- "block_comment": {
568
- "applyEndPatternLast": 1,
569
- "begin": "\\{-",
570
- "captures": {
571
- "0": {
572
- "name": "punctuation.definition.comment.haskell"
573
- }
574
- },
575
- "end": "-\\}",
576
- "name": "comment.block.haskell",
577
- "patterns": [
578
- {
579
- "include": "#block_comment"
580
- }
581
- ]
582
- },
583
- "comments": {
584
- "patterns": [
585
- {
586
- "begin": "^(\\s*)(--\\s[\\|\\$])",
587
- "beginCaptures": {
588
- "2": {
589
- "name": "punctuation.whitespace.comment.leading.haskell"
590
- }
591
- },
592
- "end": "(?=^(?!\\1--+(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])))",
593
- "name": "comment.block.documentation.haskell"
594
- },
595
- {
596
- "begin": "(^[ \\t]+)?(--\\s[\\^\\*])",
597
- "beginCaptures": {
598
- "1": {
599
- "name": "punctuation.whitespace.comment.leading.haskell"
600
- }
601
- },
602
- "end": "\\n",
603
- "name": "comment.line.documentation.haskell"
604
- },
605
- {
606
- "applyEndPatternLast": 1,
607
- "begin": "\\{-\\s?[\\|\\$\\*\\^]",
608
- "captures": {
609
- "0": {
610
- "name": "punctuation.definition.comment.haskell"
611
- }
612
- },
613
- "end": "-\\}",
614
- "name": "comment.block.documentation.haskell",
615
- "patterns": [
616
- {
617
- "include": "#block_comment"
618
- }
619
- ]
620
- },
621
- {
622
- "begin": "(^[ \\t]+)?(?=--+(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))",
623
- "beginCaptures": {
624
- "1": {
625
- "name": "punctuation.whitespace.comment.leading.haskell"
626
- }
627
- },
628
- "comment": "Operators may begin with '--' as long as they are not entirely composed of '-' characters. This means comments can't be immediately followed by an allowable operator character.",
629
- "end": "(?!\\G)",
630
- "patterns": [
631
- {
632
- "begin": "--",
633
- "beginCaptures": {
634
- "0": {
635
- "name": "punctuation.definition.comment.haskell"
636
- }
637
- },
638
- "end": "\\n",
639
- "name": "comment.line.double-dash.haskell"
640
- }
641
- ]
642
- },
643
- {
644
- "include": "#block_comment"
645
- }
646
- ]
647
- },
648
- "comment_like": {
649
- "patterns": [
650
- {
651
- "include": "#cpp"
652
- },
653
- {
654
- "include": "#pragma"
655
- },
656
- {
657
- "include": "#comments"
658
- }
659
- ]
660
- },
661
- "cpp": {
662
- "captures": {
663
- "1": {
664
- "name": "punctuation.definition.preprocessor.c"
665
- }
666
- },
667
- "comment": "In addition to Haskell's \"native\" syntax, GHC permits the C preprocessor to be run on a source file.",
668
- "match": "^(#).*$",
669
- "name": "meta.preprocessor.c"
670
- },
671
- "where": {
672
- "patterns": [
673
- {
674
- "begin": "(?x)\n (?<!')\\b(where)\n \\s*(\\{)(?!-)",
675
- "end": "(\\})",
676
- "beginCaptures": {
677
- "1": {
678
- "name": "keyword.other.where.haskell"
679
- },
680
- "2": {
681
- "name": "punctuation.brace.haskell"
682
- }
683
- },
684
- "endCaptures": {
685
- "1": {
686
- "name": "punctuation.brace.haskell"
687
- }
688
- },
689
- "patterns": [
690
- {
691
- "include": "$self"
692
- },
693
- {
694
- "match": ";",
695
- "name": "punctuation.semicolon.haskell"
696
- }
697
- ]
698
- },
699
- {
700
- "match": "\\b(?<!')(where)\\b(?!')",
701
- "name": "keyword.other.where.haskell"
702
- }
703
- ]
704
- },
705
- "layout_herald": {
706
- "begin": "(?x)\n (?:(?<!')\\b(?:(where|let|m?do)|(of))|(\\\\\\s*case))\n \\s*(\\{)(?!-)",
707
- "end": "(\\})",
708
- "beginCaptures": {
709
- "1": {
710
- "name": "keyword.other.$1.haskell"
711
- },
712
- "2": {
713
- "name": "keyword.control.of.haskell"
714
- },
715
- "3": {
716
- "name": "keyword.control.lambda-case.haskell"
717
- },
718
- "4": {
719
- "name": "punctuation.brace.haskell"
720
- }
721
- },
722
- "endCaptures": {
723
- "1": {
724
- "name": "punctuation.brace.haskell"
725
- }
726
- },
727
- "patterns": [
728
- {
729
- "include": "$self"
730
- },
731
- {
732
- "match": ";",
733
- "name": "punctuation.semicolon.haskell"
734
- }
735
- ]
736
- },
737
- "keyword": {
738
- "match": "\\b(?<!')(?:(where|let|in|default)|(m?do|if|then|else|case|of|proc|rec))\\b(?!')",
739
- "captures": {
740
- "1": {
741
- "name": "keyword.other.$1.haskell"
742
- },
743
- "2": {
744
- "name": "keyword.control.$2.haskell"
745
- }
746
- }
747
- },
748
- "deriving": {
749
- "patterns": [
750
- {
751
- "begin": "^(\\s*)(deriving)\\s+(?:(via|stock|newtype|anyclass)\\s+)?",
752
- "beginCaptures": {
753
- "2": {
754
- "name": "keyword.other.deriving.haskell"
755
- },
756
- "3": {
757
- "name": "keyword.other.deriving.strategy.$3.haskell"
758
- }
759
- },
760
- "end": "(?x) # Detect end of deriving statement\n # Decreasing indentation\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )",
761
- "patterns": [
762
- {
763
- "include": "#comment_like"
764
- },
765
- {
766
- "match": "(?<!')\\b(instance)\\b(?!')",
767
- "name": "keyword.other.instance.haskell"
768
- },
769
- {
770
- "match": "(?<!')\\b(via|stock|newtype|anyclass)\\b(?!')",
771
- "captures": {
772
- "1": {
773
- "name": "keyword.other.deriving.strategy.$1.haskell"
774
- }
775
- }
776
- },
777
- {
778
- "include": "#type_signature"
779
- }
780
- ],
781
- "name": "meta.deriving.haskell"
782
- },
783
- {
784
- "begin": "(deriving)(?:\\s+(stock|newtype|anyclass))?\\s*(\\()",
785
- "beginCaptures": {
786
- "1": {
787
- "name": "keyword.other.deriving.haskell"
788
- },
789
- "2": {
790
- "name": "keyword.other.deriving.strategy.$2.haskell"
791
- },
792
- "3": {
793
- "name": "punctuation.paren.haskell"
794
- }
795
- },
796
- "end": "(\\))",
797
- "endCaptures": {
798
- "1": {
799
- "name": "punctuation.paren.haskell"
800
- }
801
- },
802
- "name": "meta.deriving.haskell",
803
- "patterns": [
804
- {
805
- "include": "#type_signature"
806
- }
807
- ]
808
- },
809
- {
810
- "match": "(?x)\n (deriving)(?:\\s+(stock|newtype|anyclass))?\\s+\n ([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n (\\s+(via)\\s+(.*)$)?\n",
811
- "captures": {
812
- "1": {
813
- "name": "keyword.other.deriving.haskell"
814
- },
815
- "2": {
816
- "name": "keyword.other.deriving.strategy.$2.haskell"
817
- },
818
- "3": {
819
- "patterns": [
820
- {
821
- "include": "#type_signature"
822
- }
823
- ]
824
- },
825
- "5": {
826
- "name": "keyword.other.deriving.strategy.via.haskell"
827
- },
828
- "6": {
829
- "patterns": [
830
- {
831
- "include": "#type_signature"
832
- }
833
- ]
834
- }
835
- },
836
- "name": "meta.deriving.haskell"
837
- },
838
- {
839
- "match": "(?<!')\\b(via)\\b(?!')",
840
- "name": "keyword.other.deriving.strategy.via.haskell"
841
- }
842
- ]
843
- },
844
- "prefix_op": {
845
- "patterns": [
846
- {
847
- "comment": "An operator cannot be composed entirely of '-' characters; instead, it should be matched as a comment.\n",
848
- "match": "(?x)\n (\\()\\s*(?!(?:--+|\\.\\.)\\))(\\#+|[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+(?<!\\#))\\s*(\\))",
849
- "captures": {
850
- "1": {
851
- "name": "punctuation.paren.haskell"
852
- },
853
- "2": {
854
- "name": "entity.name.function.infix.haskell"
855
- },
856
- "3": {
857
- "name": "punctuation.paren.haskell"
858
- }
859
- }
860
- }
861
- ]
862
- },
863
- "infix_op": {
864
- "patterns": [
865
- {
866
- "match": "(?x)\n ((?:(?<!'')('')?[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'']*\\.)*)\n (\\#+|[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+(?<!\\#))",
867
- "comment": "In case this regex seems overly general, note that Haskell permits the definition of new operators which can be nearly any string of punctuation characters, such as $%^&*.\n",
868
- "captures": {
869
- "1": {
870
- "name": "keyword.operator.promotion.haskell"
871
- },
872
- "2": {
873
- "name": "entity.name.namespace.haskell"
874
- },
875
- "3": {
876
- "name": "keyword.operator.infix.haskell"
877
- }
878
- }
879
- },
880
- {
881
- "match": "(`)((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'']*\\.)*)([\\p{Ll}\\p{Lu}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'']*)(`)",
882
- "captures": {
883
- "1": {
884
- "name": "punctuation.backtick.haskell"
885
- },
886
- "2": {
887
- "name": "entity.name.namespace.haskell"
888
- },
889
- "3": {
890
- "patterns": [
891
- {
892
- "include": "#data_constructor"
893
- }
894
- ]
895
- },
896
- "4": {
897
- "name": "punctuation.backtick.haskell"
898
- }
899
- },
900
- "comment": "In case this regex seems unusual for an infix operator, note that Haskell\nallows any ordinary function application (elem 4 [1..10]) to be rewritten\nas an infix expression (4 `elem` [1..10]).\n",
901
- "name": "keyword.operator.function.infix.haskell"
902
- }
903
- ]
904
- },
905
- "module_exports": {
906
- "begin": "\\(",
907
- "beginCaptures": {
908
- "0": {
909
- "name": "punctuation.paren.haskell"
910
- }
911
- },
912
- "end": "\\)",
913
- "endCaptures": {
914
- "0": {
915
- "name": "punctuation.paren.haskell"
916
- }
917
- },
918
- "applyEndPatternLast": 1,
919
- "name": "meta.declaration.exports.haskell",
920
- "patterns": [
921
- {
922
- "include": "#comment_like"
923
- },
924
- {
925
- "match": "\\b(?<!')(module)\\b(?!')",
926
- "captures": {
927
- "1": {
928
- "name": "keyword.other.module.haskell"
929
- }
930
- }
931
- },
932
- {
933
- "include": "#comma"
934
- },
935
- {
936
- "include": "#export_constructs"
937
- },
938
- {
939
- "begin": "\\(",
940
- "beginCaptures": {
941
- "0": {
942
- "name": "punctuation.paren.haskell"
943
- }
944
- },
945
- "end": "\\)",
946
- "endCaptures": {
947
- "0": {
948
- "name": "punctuation.paren.haskell"
949
- }
950
- },
951
- "patterns": [
952
- {
953
- "include": "#comment_like"
954
- },
955
- {
956
- "include": "#record_wildcard"
957
- },
958
- {
959
- "match": "(\\()\\s*(:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]*)\\s*(\\))",
960
- "name": "constant.other.operator.prefix.haskell"
961
- },
962
- {
963
- "include": "#export_constructs"
964
- },
965
- {
966
- "include": "#comma"
967
- }
968
- ]
969
- }
970
- ]
971
- },
972
- "export_constructs": {
973
- "patterns": [
974
- {
975
- "include": "#comment_like"
976
- },
977
- {
978
- "begin": "\\b(?<!')(pattern)\\b(?!')",
979
- "beginCaptures": {
980
- "1": {
981
- "name": "keyword.other.pattern.haskell"
982
- }
983
- },
984
- "end": "(?x)\n # Data constructor\n ([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n # Prefix form of symbolic constructor\n | (\\()\\s*(:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*(\\))",
985
- "endCaptures": {
986
- "1": {
987
- "name": "constant.other.haskell"
988
- },
989
- "2": {
990
- "name": "punctuation.paren.haskell"
991
- },
992
- "3": {
993
- "name": "constant.other.operator.prefix.haskell"
994
- },
995
- "4": {
996
- "name": "punctuation.paren.haskell"
997
- }
998
- },
999
- "patterns": [
1000
- {
1001
- "include": "#comment_like"
1002
- }
1003
- ]
1004
- },
1005
- {
1006
- "begin": "\\b(?<!')(type)\\b(?!')",
1007
- "beginCaptures": {
1008
- "1": {
1009
- "name": "keyword.other.type.haskell"
1010
- }
1011
- },
1012
- "end": "(?x)\n # Type name\n ([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n # Prefix form of type operator\n | (\\()\\s*([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*(\\))",
1013
- "endCaptures": {
1014
- "1": {
1015
- "name": "storage.type.haskell"
1016
- },
1017
- "2": {
1018
- "name": "punctuation.paren.haskell"
1019
- },
1020
- "3": {
1021
- "name": "storage.type.operator.haskell"
1022
- },
1023
- "4": {
1024
- "name": "punctuation.paren.haskell"
1025
- }
1026
- },
1027
- "patterns": [
1028
- {
1029
- "include": "#comment_like"
1030
- }
1031
- ]
1032
- },
1033
- {
1034
- "include": "#record_wildcard"
1035
- },
1036
- {
1037
- "include": "#reserved_symbol"
1038
- },
1039
- {
1040
- "match": "(\\()\\s*(:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]*)\\s*(\\))",
1041
- "name": "storage.type.operator.haskell"
1042
- },
1043
- {
1044
- "match": "(?<!')\\b[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
1045
- "name": "entity.name.function.haskell"
1046
- },
1047
- {
1048
- "match": "(?<!')\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
1049
- "name": "storage.type.haskell"
1050
- },
1051
- {
1052
- "include": "#prefix_op"
1053
- }
1054
- ]
1055
- },
1056
- "comma": {
1057
- "match": ",",
1058
- "name": "punctuation.separator.comma.haskell"
1059
- },
1060
- "module_name": {
1061
- "match": "(?<conid>[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(\\.\\g<conid>)?)",
1062
- "name": "entity.name.namespace.haskell"
1063
- },
1064
- "pragma": {
1065
- "begin": "\\{-#",
1066
- "end": "#-\\}",
1067
- "name": "meta.preprocessor.haskell",
1068
- "patterns": [
1069
- {
1070
- "include": "#comments"
1071
- },
1072
- {
1073
- "begin": "(?xi) \\b(?<!')(LANGUAGE)\\b(?!')",
1074
- "end": "(?=#-\\})",
1075
- "beginCaptures": {
1076
- "1": {
1077
- "name": "keyword.other.preprocessor.pragma.haskell"
1078
- }
1079
- },
1080
- "patterns": [
1081
- {
1082
- "include": "#comments"
1083
- },
1084
- {
1085
- "match": "(?x)\n \\b(?<!')\n (?:No)?\n (?:AutoDeriveTypeable|DatatypeContexts|DoRec|IncoherentInstances|MonadFailDesugaring|MonoPatBinds|NullaryTypeClasses|OverlappingInstances|PatternSignatures|RecordPuns|RelaxedPolyRec)\n \\b(?!')",
1086
- "name": "invalid.deprecated"
1087
- },
1088
- {
1089
- "match": "(?x)\n \\b(?<!')\n (\n (?:No)?\n (?:AllowAmbiguousTypes|AlternativeLayoutRuleTransitional|AlternativeLayoutRule|Arrows|BangPatterns|BinaryLiterals|CApiFFI|CPP|CUSKs|ConstrainedClassMethods|ConstraintKinds|DataKinds|DefaultSignatures|DeriveAnyClass|DeriveDataTypeable|DeriveFoldable|DeriveFunctor|DeriveGeneric|DeriveLift|DeriveTraversable|DerivingStrategies|DerivingVia|DisambiguateRecordFields|DoAndIfThenElse|BlockArguments|DuplicateRecordFields|EmptyCase|EmptyDataDecls|EmptyDataDeriving|ExistentialQuantification|ExplicitForAll|ExplicitNamespaces|ExtendedDefaultRules|FlexibleContexts|FlexibleInstances|ForeignFunctionInterface|FunctionalDependencies|GADTSyntax|GADTs|GHCForeignImportPrim|Generali(?:s|z)edNewtypeDeriving|ImplicitParams|ImplicitPrelude|ImportQualifiedPost|ImpredicativeTypes|TypeFamilyDependencies|InstanceSigs|ApplicativeDo|InterruptibleFFI|JavaScriptFFI|KindSignatures|LambdaCase|LexicalNegation|LiberalTypeSynonyms|LinearTypes|MagicHash|MonadComprehensions|MonoLocalBinds|MonomorphismRestriction|MultiParamTypeClasses|MultiWayIf|NumericUnderscores|NPlusKPatterns|NamedFieldPuns|NamedWildCards|NegativeLiterals|HexFloatLiterals|NondecreasingIndentation|NumDecimals|OverloadedLabels|OverloadedLists|OverloadedStrings|PackageImports|ParallelArrays|ParallelListComp|PartialTypeSignatures|PatternGuards|PatternSynonyms|PolyKinds|PolymorphicComponents|QualifiedDo|QuantifiedConstraints|PostfixOperators|QuasiQuotes|Rank2Types|RankNTypes|RebindableSyntax|RecordWildCards|RecursiveDo|RelaxedLayout|RoleAnnotations|ScopedTypeVariables|StandaloneDeriving|StarIsType|StaticPointers|StrictData|Strict|TemplateHaskellQuotes|TemplateHaskell|StandaloneKindSignatures|TraditionalRecordSyntax|TransformListComp|TupleSections|TypeApplications|TypeInType|TypeFamilies|TypeOperators|TypeSynonymInstances|UnboxedTuples|UnboxedSums|UndecidableInstances|UndecidableSuperClasses|UnicodeSyntax|UnliftedFFITypes|UnliftedNewtypes|ViewPatterns|UnliftedDatatypes|OverloadedRecordDot|OverloadedRecordUpdate|FieldSelectors)\n )\n \\b(?!')",
1090
- "captures": {
1091
- "1": {
1092
- "name": "keyword.other.preprocessor.extension.haskell"
1093
- }
1094
- }
1095
- },
1096
- {
1097
- "include": "#comma"
1098
- }
1099
- ]
1100
- },
1101
- {
1102
- "begin": "(?xi)\n \\b(?<!')(SPECIALI(?:S|Z)E)\n (?:\n \\s*( \\[ [^\\[\\]]* \\])?\\s*\n |\\s+\n )\n (instance)\\b(?!')",
1103
- "end": "(?=#-\\})",
1104
- "beginCaptures": {
1105
- "1": {
1106
- "name": "keyword.other.preprocessor.pragma.haskell"
1107
- },
1108
- "2": {
1109
- "patterns": [
1110
- {
1111
- "include": "#inline_phase"
1112
- }
1113
- ]
1114
- },
1115
- "3": {
1116
- "name": "keyword.other.instance.haskell"
1117
- }
1118
- },
1119
- "patterns": [
1120
- {
1121
- "include": "#type_signature"
1122
- }
1123
- ]
1124
- },
1125
- {
1126
- "begin": "(?xi)\n \\b(?<!')(SPECIALI(?:S|Z)E)\\b(?!')\n (?:\\s+(INLINE)\\b(?!'))?\n (?:\\s*(\\[ [^\\[\\]]* \\])?)\n \\s*",
1127
- "end": "(?=#-\\})",
1128
- "beginCaptures": {
1129
- "1": {
1130
- "name": "keyword.other.preprocessor.pragma.haskell"
1131
- },
1132
- "2": {
1133
- "name": "keyword.other.preprocessor.pragma.haskell"
1134
- },
1135
- "3": {
1136
- "patterns": [
1137
- {
1138
- "include": "#inline_phase"
1139
- }
1140
- ]
1141
- }
1142
- },
1143
- "patterns": [
1144
- {
1145
- "include": "$self"
1146
- }
1147
- ]
1148
- },
1149
- {
1150
- "match": "(?xi) \\b(?<!')\n (LANGUAGE|OPTIONS_GHC|OPTIONS_HADDOCK|OPTIONS|INCLUDE\n |MINIMAL|UNPACK|OVERLAPS|INCOHERENT\n |NOUNPACK|SOURCE|OVERLAPPING|OVERLAPPABLE|INLINE\n |NOINLINE|INLINE?ABLE|CONLIKE|LINE|COLUMN|RULES\n |COMPLETE)\\b(?!')",
1151
- "name": "keyword.other.preprocessor.haskell"
1152
- },
1153
- {
1154
- "begin": "(?i)\\b(DEPRECATED|WARNING)\\b",
1155
- "beginCaptures": {
1156
- "1": {
1157
- "name": "keyword.other.preprocessor.pragma.haskell"
1158
- }
1159
- },
1160
- "end": "(?=#-\\})",
1161
- "patterns": [
1162
- {
1163
- "include": "#comments"
1164
- },
1165
- {
1166
- "include": "#string_literal"
1167
- }
1168
- ]
1169
- }
1170
- ]
1171
- },
1172
- "liquid_haskell": {
1173
- "name": "block.liquidhaskell.haskell",
1174
- "begin": "\\{-@",
1175
- "end": "@-\\}",
1176
- "patterns": [
1177
- {
1178
- "include": "$self"
1179
- }
1180
- ]
1181
- },
1182
- "data_context": {
1183
- "match": "(?x)\n (.*)\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n (=>|⇒)\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n",
1184
- "captures": {
1185
- "1": {
1186
- "patterns": [
1187
- {
1188
- "include": "#comment_like"
1189
- },
1190
- {
1191
- "include": "#forall"
1192
- },
1193
- {
1194
- "begin": "(?='?\\()",
1195
- "end": "(?=\\))",
1196
- "patterns": [
1197
- {
1198
- "include": "#type_signature"
1199
- }
1200
- ]
1201
- },
1202
- {
1203
- "begin": "(?='?\\[)",
1204
- "end": "(?=\\])",
1205
- "patterns": [
1206
- {
1207
- "include": "#type_signature"
1208
- }
1209
- ]
1210
- },
1211
- {
1212
- "match": "(?x)\n (\\S*)\\s*\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n (::|∷|=)\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])",
1213
- "captures": {
1214
- "1": {
1215
- "patterns": [
1216
- {
1217
- "include": "#comment_like"
1218
- },
1219
- {
1220
- "include": "#forall"
1221
- },
1222
- {
1223
- "include": "#record_decl_field"
1224
- }
1225
- ]
1226
- },
1227
- "2": {
1228
- "patterns": [
1229
- {
1230
- "include": "#reserved_symbol"
1231
- }
1232
- ]
1233
- },
1234
- "3": {
1235
- "patterns": [
1236
- {
1237
- "include": "#type_signature"
1238
- }
1239
- ]
1240
- }
1241
- }
1242
- },
1243
- {
1244
- "include": "#type_signature"
1245
- }
1246
- ]
1247
- },
1248
- "2": {
1249
- "name": "keyword.operator.big-arrow.haskell"
1250
- }
1251
- }
1252
- },
1253
- "data_constructor": {
1254
- "patterns": [
1255
- {
1256
- "match": "\\b(?<!')[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?![\\.'\\w])",
1257
- "name": "constant.other.haskell"
1258
- },
1259
- {
1260
- "match": "(\\()\\s*(:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]*)\\s*(\\))",
1261
- "name": "constant.other.operator.haskell"
1262
- }
1263
- ]
1264
- },
1265
- "qualifier": {
1266
- "match": "\\b(?<!')[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.",
1267
- "name": "entity.name.namespace.haskell"
1268
- },
1269
- "record_decl": {
1270
- "begin": "({)(?!-)",
1271
- "beginCaptures": {
1272
- "1": {
1273
- "name": "punctuation.brace.haskell"
1274
- }
1275
- },
1276
- "end": "(?<!-)(})",
1277
- "endCaptures": {
1278
- "1": {
1279
- "name": "punctuation.brace.haskell"
1280
- }
1281
- },
1282
- "name": "meta.record.definition.haskell",
1283
- "patterns": [
1284
- {
1285
- "include": "#comment_like"
1286
- },
1287
- {
1288
- "include": "#record_decl_field"
1289
- }
1290
- ]
1291
- },
1292
- "record": {
1293
- "begin": "({)(?!-)",
1294
- "beginCaptures": {
1295
- "1": {
1296
- "name": "punctuation.brace.haskell"
1297
- }
1298
- },
1299
- "end": "(?<!-)(})",
1300
- "endCaptures": {
1301
- "1": {
1302
- "name": "punctuation.brace.haskell"
1303
- }
1304
- },
1305
- "name": "meta.record.haskell",
1306
- "patterns": [
1307
- {
1308
- "include": "#comment_like"
1309
- },
1310
- {
1311
- "include": "#record_field"
1312
- }
1313
- ]
1314
- },
1315
- "record_decl_field": {
1316
- "begin": "(?x)\n (?:([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n |(\\()\\s*([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*(\\))\n )\n",
1317
- "end": "(,)|(?=})",
1318
- "beginCaptures": {
1319
- "1": {
1320
- "name": "variable.other.member.definition.haskell"
1321
- },
1322
- "2": {
1323
- "name": "punctuation.paren.haskell"
1324
- },
1325
- "3": {
1326
- "name": "variable.other.member.definition.haskell"
1327
- },
1328
- "4": {
1329
- "name": "punctuation.paren.haskell"
1330
- }
1331
- },
1332
- "endCaptures": {
1333
- "1": {
1334
- "name": "punctuation.comma.haskell"
1335
- }
1336
- },
1337
- "patterns": [
1338
- {
1339
- "include": "#comment_like"
1340
- },
1341
- {
1342
- "include": "#comma"
1343
- },
1344
- {
1345
- "include": "#double_colon"
1346
- },
1347
- {
1348
- "include": "#type_signature"
1349
- },
1350
- {
1351
- "include": "#record_decl_field"
1352
- }
1353
- ]
1354
- },
1355
- "record_wildcard": {
1356
- "match": "(?x)\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n (\\.\\.)\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])",
1357
- "captures": {
1358
- "1": {
1359
- "name": "variable.other.member.wildcard.haskell"
1360
- }
1361
- }
1362
- },
1363
- "record_field": {
1364
- "patterns": [
1365
- {
1366
- "begin": "(?x)\n (?:([\\p{Ll}\\p{Lu}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\.']*)\n |(\\()\\s*([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*(\\))\n )\n",
1367
- "end": "(,)|(?=})",
1368
- "beginCaptures": {
1369
- "1": {
1370
- "name": "variable.other.member.haskell",
1371
- "patterns": [
1372
- {
1373
- "include": "#qualifier"
1374
- }
1375
- ]
1376
- },
1377
- "2": {
1378
- "name": "punctuation.paren.haskell"
1379
- },
1380
- "3": {
1381
- "name": "variable.other.member.haskell"
1382
- },
1383
- "4": {
1384
- "name": "punctuation.paren.haskell"
1385
- }
1386
- },
1387
- "endCaptures": {
1388
- "1": {
1389
- "name": "punctuation.comma.haskell"
1390
- }
1391
- },
1392
- "patterns": [
1393
- {
1394
- "include": "#comment_like"
1395
- },
1396
- {
1397
- "include": "#comma"
1398
- },
1399
- {
1400
- "include": "$self"
1401
- }
1402
- ]
1403
- },
1404
- {
1405
- "include": "#record_wildcard"
1406
- }
1407
- ]
1408
- },
1409
- "role_annotation": {
1410
- "patterns": [
1411
- {
1412
- "begin": "^(\\s*)(type)\\s+(role)\\b(?!')",
1413
- "beginCaptures": {
1414
- "2": {
1415
- "name": "keyword.other.type.haskell"
1416
- },
1417
- "3": {
1418
- "name": "keyword.other.role.haskell"
1419
- }
1420
- },
1421
- "end": "(?x) # Detect end of block by decreasing indentation:\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )",
1422
- "name": "meta.role-annotation.haskell",
1423
- "patterns": [
1424
- {
1425
- "include": "#comment_like"
1426
- },
1427
- {
1428
- "include": "#type_constructor"
1429
- },
1430
- {
1431
- "match": "\\b(?<!')(nominal|representational|phantom)\\b(?!')",
1432
- "captures": {
1433
- "1": {
1434
- "name": "keyword.other.role.$1.haskell"
1435
- }
1436
- }
1437
- }
1438
- ]
1439
- }
1440
- ]
1441
- },
1442
- "fun_decl": {
1443
- "begin": "(?x)^(\\s*)\n (?<fn>\n (?:\n [\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\#*\n | \\(\\s*\n (?!--+\\))\n [\\p{S}\\p{P}&&[^(),:;\\[\\]`{}_\"']]\n [\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]*\n \\s*\\)\n )\n (?:\\s*,\\s*\\g<fn>)?\n )\n \\s*(?<![\\p{S}\\p{P}&&[^\\),;\\]`}_\"']])(::|∷)(?![\\p{S}\\p{P}&&[^\\(,;\\[`{_\"']])\n",
1444
- "beginCaptures": {
1445
- "2": {
1446
- "name": "entity.name.function.haskell",
1447
- "patterns": [
1448
- {
1449
- "include": "#reserved_symbol"
1450
- },
1451
- {
1452
- "include": "#prefix_op"
1453
- }
1454
- ]
1455
- },
1456
- "3": {
1457
- "name": "keyword.operator.double-colon.haskell"
1458
- }
1459
- },
1460
- "name": "meta.function.type-declaration.haskell",
1461
- "patterns": [
1462
- {
1463
- "include": "#type_signature"
1464
- }
1465
- ],
1466
- "end": "(?x)\n # End of type annotation:\n # To the left of a reserved symbolic keyword such as = or <-\n (?= \n # non-symbolic character\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n # symbolic keyword except (->)\n ((<-|←)|(=)|(-<|↢)|(-<<|⤛))\n # non-symbolic character\n ([(),;\\[\\]`{}_\"']|[^\\p{S}\\p{P}])\n )\n # Decreasing indentation:\n |(?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n"
1467
- },
1468
- "adt_constructor": {
1469
- "patterns": [
1470
- {
1471
- "include": "#comment_like"
1472
- },
1473
- {
1474
- "begin": "(?x)\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n (?:(=)|(\\|))\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol",
1475
- "beginCaptures": {
1476
- "1": {
1477
- "name": "keyword.operator.eq.haskell"
1478
- },
1479
- "2": {
1480
- "name": "keyword.operator.pipe.haskell"
1481
- }
1482
- },
1483
- "end": "(?x)\n (?: # Infix data constructor\n # First argument\n (?:\n # Simple type\n (?<!')\\b((?:[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'\\.])+)\n # Type inside balanced parentheses\n | ('? # Optional promotion tick\n (?<paren>\n \\( # Opening parenthesis\n (?:\n [^\\(\\)]* # Match non-parentheses\n | \\g<paren> # or recurse into further depth\n )*\n \\) # Closing parenthesis\n )\n )\n # Type inside balanced brackets\n | ('? # Optional promotion tick\n (?<brac>\n \\[ # Opening bracket\n (?:\n [^\\[\\]]* # Match non-brackets\n | \\g<brac> # or recurse into further depth\n )*\n \\] # Closing bracket\n )\n )\n )\n # Then either\n \\s*\n # - a symbolic infix constructor, or\n (?:(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]*)\n # - an alphabetic infix constructor\n | (`)([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(`)\n )\n ) # Otherwise, prefix data constructor, either:\n | # - an alphabetic data constructor e.g. \"Cons_123\"\n (?:(?<!')\\b([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))\n | # - a symbolic (prefix) data constructor\n (\\()\\s*(:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]*)\\s*(\\))\n | # Otherwise, try to fail early to avoid excessive backtracking (https://github.com/JustusAdam/language-haskell/issues/161)\n # Fail when detecting a lowercase identifier and then something not starting with a tick or colon\n (?=\\b(?<!')(?!(?:forall|deriving)\\s)[\\p{Ll}_]\\S+\\s+[^`:])\n # Fail when seeing another equal signs or pipe symbol\n |(?=\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n (?:=|\\|)\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n )",
1484
- "endCaptures": {
1485
- "1": {
1486
- "patterns": [
1487
- {
1488
- "include": "#type_signature"
1489
- }
1490
- ]
1491
- },
1492
- "2": {
1493
- "patterns": [
1494
- {
1495
- "include": "#type_signature"
1496
- }
1497
- ]
1498
- },
1499
- "4": {
1500
- "patterns": [
1501
- {
1502
- "include": "#type_signature"
1503
- }
1504
- ]
1505
- },
1506
- "6": {
1507
- "name": "constant.other.operator.infix.haskell"
1508
- },
1509
- "7": {
1510
- "name": "punctuation.backtick.haskell"
1511
- },
1512
- "8": {
1513
- "name": "constant.other.infix.haskell"
1514
- },
1515
- "9": {
1516
- "name": "punctuation.backtick.haskell"
1517
- },
1518
- "10": {
1519
- "name": "constant.other.haskell"
1520
- },
1521
- "11": {
1522
- "name": "punctuation.paren.haskell"
1523
- },
1524
- "12": {
1525
- "name": "constant.other.operator.prefix.haskell"
1526
- },
1527
- "13": {
1528
- "name": "punctuation.paren.haskell"
1529
- }
1530
- },
1531
- "patterns": [
1532
- {
1533
- "include": "#comment_like"
1534
- },
1535
- {
1536
- "include": "#deriving"
1537
- },
1538
- {
1539
- "include": "#record_decl"
1540
- },
1541
- {
1542
- "include": "#forall"
1543
- },
1544
- {
1545
- "include": "#data_context"
1546
- },
1547
- {
1548
- "include": "#type_signature"
1549
- }
1550
- ]
1551
- }
1552
- ]
1553
- },
1554
- "gadt_constructor": {
1555
- "patterns": [
1556
- {
1557
- "begin": "(?x)\n ^(\\s*)\n (?:\n (\\b(?<!')[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n |(\\()\\s*(:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]*)\\s*(\\))\n )",
1558
- "beginCaptures": {
1559
- "2": {
1560
- "name": "constant.other.haskell"
1561
- },
1562
- "3": {
1563
- "name": "punctuation.paren.haskell"
1564
- },
1565
- "4": {
1566
- "name": "constant.other.operator.prefix.haskell"
1567
- },
1568
- "5": {
1569
- "name": "punctuation.paren.haskell"
1570
- }
1571
- },
1572
- "end": "(?x)\n # GADT constructor ends\n (?=\\b(?<!'')deriving\\b(?!')) \n # Decreasing indentation\n |(?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
1573
- "patterns": [
1574
- {
1575
- "include": "#comment_like"
1576
- },
1577
- {
1578
- "include": "#deriving"
1579
- },
1580
- {
1581
- "include": "#double_colon"
1582
- },
1583
- {
1584
- "include": "#record_decl"
1585
- },
1586
- {
1587
- "include": "#type_signature"
1588
- }
1589
- ]
1590
- },
1591
- {
1592
- "begin": "(?x)\n (\\b(?<!')[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}]*) # named constructor\n |(\\()\\s*(:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]*)\\s*(\\)) # prefix operator",
1593
- "beginCaptures": {
1594
- "1": {
1595
- "name": "constant.other.haskell"
1596
- },
1597
- "2": {
1598
- "name": "punctuation.paren.haskell"
1599
- },
1600
- "3": {
1601
- "name": "constant.other.operator.prefix.haskell"
1602
- },
1603
- "4": {
1604
- "name": "punctuation.paren.haskell"
1605
- }
1606
- },
1607
- "end": "(?=;|\\}|$)",
1608
- "patterns": [
1609
- {
1610
- "include": "#comment_like"
1611
- },
1612
- {
1613
- "include": "#deriving"
1614
- },
1615
- {
1616
- "include": "#double_colon"
1617
- },
1618
- {
1619
- "include": "#record_decl"
1620
- },
1621
- {
1622
- "include": "#type_signature"
1623
- }
1624
- ]
1625
- }
1626
- ]
1627
- },
1628
- "type_application": {
1629
- "patterns": [
1630
- {
1631
- "begin": "(?<=[\\s,;\\[\\]{}\"])(@)(')?(\\()",
1632
- "beginCaptures": {
1633
- "1": {
1634
- "name": "keyword.operator.prefix.at.haskell"
1635
- },
1636
- "2": {
1637
- "name": "keyword.operator.promotion.haskell"
1638
- },
1639
- "3": {
1640
- "name": "punctuation.paren.haskell"
1641
- }
1642
- },
1643
- "end": "\\)",
1644
- "endCaptures": {
1645
- "0": {
1646
- "name": "punctuation.paren.haskell"
1647
- }
1648
- },
1649
- "name": "meta.type-application.haskell",
1650
- "patterns": [
1651
- {
1652
- "include": "#type_signature"
1653
- }
1654
- ]
1655
- },
1656
- {
1657
- "begin": "(?<=[\\s,;\\[\\]{}\"])(@)(')?(\\[)",
1658
- "beginCaptures": {
1659
- "1": {
1660
- "name": "keyword.operator.prefix.at.haskell"
1661
- },
1662
- "2": {
1663
- "name": "keyword.operator.promotion.haskell"
1664
- },
1665
- "3": {
1666
- "name": "punctuation.bracket.haskell"
1667
- }
1668
- },
1669
- "end": "\\]",
1670
- "name": "meta.type-application.haskell",
1671
- "endCaptures": {
1672
- "0": {
1673
- "name": "punctuation.bracket.haskell"
1674
- }
1675
- },
1676
- "patterns": [
1677
- {
1678
- "include": "#type_signature"
1679
- }
1680
- ]
1681
- },
1682
- {
1683
- "begin": "(?<=[\\s,;\\[\\]{}\"])(@)(?=\\\")",
1684
- "beginCaptures": {
1685
- "1": {
1686
- "name": "keyword.operator.prefix.at.haskell"
1687
- }
1688
- },
1689
- "end": "(?<=\\\")",
1690
- "name": "meta.type-application.haskell",
1691
- "patterns": [
1692
- {
1693
- "include": "#string_literal"
1694
- }
1695
- ]
1696
- },
1697
- {
1698
- "begin": "(?<=[\\s,;\\[\\]{}\"])(@)(?=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])",
1699
- "beginCaptures": {
1700
- "1": {
1701
- "name": "keyword.operator.prefix.at.haskell"
1702
- }
1703
- },
1704
- "end": "(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])",
1705
- "name": "meta.type-application.haskell",
1706
- "patterns": [
1707
- {
1708
- "include": "#type_signature"
1709
- }
1710
- ]
1711
- }
1712
- ]
1713
- },
1714
- "type_signature": {
1715
- "patterns": [
1716
- {
1717
- "include": "#comment_like"
1718
- },
1719
- {
1720
- "match": "(')?(\\()\\s*(\\))",
1721
- "captures": {
1722
- "1": {
1723
- "name": "keyword.operator.promotion.haskell"
1724
- },
1725
- "2": {
1726
- "name": "punctuation.paren.haskell"
1727
- },
1728
- "3": {
1729
- "name": "punctuation.paren.haskell"
1730
- }
1731
- },
1732
- "name": "support.constant.unit.haskell"
1733
- },
1734
- {
1735
- "match": "(\\()(#)\\s*(#)(\\))",
1736
- "name": "support.constant.unit.unboxed.haskell",
1737
- "captures": {
1738
- "1": {
1739
- "name": "punctuation.paren.haskell"
1740
- },
1741
- "2": {
1742
- "name": "keyword.operator.hash.haskell"
1743
- },
1744
- "3": {
1745
- "name": "keyword.operator.hash.haskell"
1746
- },
1747
- "4": {
1748
- "name": "punctuation.paren.haskell"
1749
- }
1750
- }
1751
- },
1752
- {
1753
- "match": "(')?(\\()\\s*,[\\s,]*(\\))",
1754
- "captures": {
1755
- "1": {
1756
- "name": "keyword.operator.promotion.haskell"
1757
- },
1758
- "2": {
1759
- "name": "punctuation.paren.haskell"
1760
- },
1761
- "3": {
1762
- "name": "punctuation.paren.haskell"
1763
- }
1764
- },
1765
- "name": "support.constant.tuple.haskell"
1766
- },
1767
- {
1768
- "match": "(\\()(#)\\s*(#)(\\))",
1769
- "name": "support.constant.unit.unboxed.haskell",
1770
- "captures": {
1771
- "1": {
1772
- "name": "punctuation.paren.haskell"
1773
- },
1774
- "2": {
1775
- "name": "keyword.operator.hash.haskell"
1776
- },
1777
- "3": {
1778
- "name": "keyword.operator.hash.haskell"
1779
- },
1780
- "4": {
1781
- "name": "punctuation.paren.haskell"
1782
- }
1783
- }
1784
- },
1785
- {
1786
- "match": "(\\()(#)\\s*,[\\s,]*(#)(\\))",
1787
- "captures": {
1788
- "1": {
1789
- "name": "punctuation.paren.haskell"
1790
- },
1791
- "2": {
1792
- "name": "keyword.operator.hash.haskell"
1793
- },
1794
- "3": {
1795
- "name": "keyword.operator.hash.haskell"
1796
- },
1797
- "4": {
1798
- "name": "punctuation.paren.haskell"
1799
- }
1800
- },
1801
- "name": "support.constant.tuple.unboxed.haskell"
1802
- },
1803
- {
1804
- "match": "(')?(\\[)\\s*(\\])",
1805
- "captures": {
1806
- "1": {
1807
- "name": "keyword.operator.promotion.haskell"
1808
- },
1809
- "2": {
1810
- "name": "punctuation.bracket.haskell"
1811
- },
1812
- "3": {
1813
- "name": "punctuation.bracket.haskell"
1814
- }
1815
- },
1816
- "name": "support.constant.empty-list.haskell"
1817
- },
1818
- {
1819
- "include": "#integer_literals"
1820
- },
1821
- {
1822
- "match": "(::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])",
1823
- "name": "keyword.operator.double-colon.haskell"
1824
- },
1825
- {
1826
- "include": "#forall"
1827
- },
1828
- {
1829
- "match": "=>|⇒",
1830
- "name": "keyword.operator.big-arrow.haskell"
1831
- },
1832
- {
1833
- "include": "#string_literal"
1834
- },
1835
- {
1836
- "match": "'[^']'",
1837
- "name": "invalid"
1838
- },
1839
- {
1840
- "include": "#type_application"
1841
- },
1842
- {
1843
- "include": "#reserved_symbol"
1844
- },
1845
- {
1846
- "include": "#type_operator"
1847
- },
1848
- {
1849
- "include": "#type_constructor"
1850
- },
1851
- {
1852
- "begin": "(\\()(#)",
1853
- "end": "(#)(\\))",
1854
- "beginCaptures": {
1855
- "1": {
1856
- "name": "punctuation.paren.haskell"
1857
- },
1858
- "2": {
1859
- "name": "keyword.operator.hash.haskell"
1860
- }
1861
- },
1862
- "endCaptures": {
1863
- "1": {
1864
- "name": "keyword.operator.hash.haskell"
1865
- },
1866
- "2": {
1867
- "name": "punctuation.paren.haskell"
1868
- }
1869
- },
1870
- "patterns": [
1871
- {
1872
- "include": "#comma"
1873
- },
1874
- {
1875
- "include": "#type_signature"
1876
- }
1877
- ]
1878
- },
1879
- {
1880
- "begin": "(')?(\\()",
1881
- "end": "(\\))",
1882
- "beginCaptures": {
1883
- "1": {
1884
- "name": "keyword.operator.promotion.haskell"
1885
- },
1886
- "2": {
1887
- "name": "punctuation.paren.haskell"
1888
- }
1889
- },
1890
- "endCaptures": {
1891
- "1": {
1892
- "name": "punctuation.paren.haskell"
1893
- }
1894
- },
1895
- "patterns": [
1896
- {
1897
- "include": "#comma"
1898
- },
1899
- {
1900
- "include": "#type_signature"
1901
- }
1902
- ]
1903
- },
1904
- {
1905
- "begin": "(')?(\\[)",
1906
- "end": "(\\])",
1907
- "beginCaptures": {
1908
- "1": {
1909
- "name": "keyword.operator.promotion.haskell"
1910
- },
1911
- "2": {
1912
- "name": "punctuation.bracket.haskell"
1913
- }
1914
- },
1915
- "endCaptures": {
1916
- "1": {
1917
- "name": "punctuation.bracket.haskell"
1918
- }
1919
- },
1920
- "patterns": [
1921
- {
1922
- "include": "#comma"
1923
- },
1924
- {
1925
- "include": "#type_signature"
1926
- }
1927
- ]
1928
- },
1929
- {
1930
- "include": "#type_variable"
1931
- }
1932
- ]
1933
- },
1934
- "double_colon": {
1935
- "match": "\\s*(::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\\s*",
1936
- "captures": {
1937
- "1": {
1938
- "name": "keyword.operator.double-colon.haskell"
1939
- }
1940
- }
1941
- },
1942
- "start_type_signature": {
1943
- "patterns": [
1944
- {
1945
- "begin": "^(\\s*)(::|∷)(?![\\p{S}\\p{P}&&[^\\(,;\\[`{_\"']])\\s*",
1946
- "beginCaptures": {
1947
- "2": {
1948
- "name": "keyword.operator.double-colon.haskell"
1949
- }
1950
- },
1951
- "end": "(?x)\n # End type annotation when seeing one of:\n (?=\n \\#?\\) # closing parenthesis\n |\\] # closing bracket\n |, # comma\n |(?<!')\\b(in|then|else|of)\\b(?!') # keyword\n | # symbolic keyword except (->)\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n (?:\n (\\\\|λ)\n |(<-|←)\n |(=)\n |(-<|↢)\n |(-<<|⤛)\n )\n ([(),;\\[\\]`{}_\"']|[^\\p{S}\\p{P}])\n |(\\#|@)-\\} # End of annotation block (LiquidHaskell or pragma)\n # Decreasing indentation:\n | (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s*\\S # - equally indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n )",
1952
- "patterns": [
1953
- {
1954
- "include": "#type_signature"
1955
- }
1956
- ],
1957
- "name": "meta.type-declaration.haskell"
1958
- },
1959
- {
1960
- "begin": "(?<![\\p{S}\\p{P}&&[^\\(,;\\[`{_\"']])(::|∷)(?![\\p{S}\\p{P}&&[^\\(,;\\[`{_\"']])",
1961
- "beginCaptures": {
1962
- "1": {
1963
- "name": "keyword.operator.double-colon.haskell"
1964
- }
1965
- },
1966
- "end": "(?x)\n # End type annotation when seeing one of:\n (?=\n \\#?\\) # closing parenthesis\n |\\] # closing bracket\n |, # comma\n |\\b(?<!')(in|then|else|of)\\b(?!') # keyword\n |(\\#|@)-\\} # End of annotation block (LiquidHaskell or pragma)\n | # symbolic keyword except (->)\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n (?:\n (\\\\|λ)\n |(<-|←)\n |(=)\n |(-<|↢)\n |(-<<|⤛)\n )\n ([(),;\\[\\]`{}_\"']|[^\\p{S}\\p{P}])\n # Indentation \n |(?=\\}|;) # Explicit indentation\n |$ # End of line\n )",
1967
- "patterns": [
1968
- {
1969
- "include": "#type_signature"
1970
- }
1971
- ]
1972
- }
1973
- ]
1974
- },
1975
- "type_variable": {
1976
- "match": "\\b(?<!')(?!(?:forall|deriving)\\b(?!'))[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
1977
- "name": "variable.other.generic-type.haskell"
1978
- },
1979
- "type_constructor": {
1980
- "patterns": [
1981
- {
1982
- "match": "(?x)\n # Optional promotion tick\n (')?\n # Optional qualified name\n ((?:\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.)*)\n # Type constructor proper\n (\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)",
1983
- "captures": {
1984
- "1": {
1985
- "name": "keyword.operator.promotion.haskell"
1986
- },
1987
- "2": {
1988
- "name": "entity.name.namespace.haskell"
1989
- },
1990
- "3": {
1991
- "name": "storage.type.haskell"
1992
- }
1993
- }
1994
- },
1995
- {
1996
- "match": "(?x)\n # Optional promotion tick\n (')?\n # Opening parenthesis\n (\\()\\s*\n # Optional qualified name\n ((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.)*)\n # Type operator proper\n ([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\n # Closing parenthesis\n \\s*(\\))",
1997
- "captures": {
1998
- "1": {
1999
- "name": "keyword.operator.promotion.haskell"
2000
- },
2001
- "2": {
2002
- "name": "punctuation.paren.haskell"
2003
- },
2004
- "3": {
2005
- "name": "entity.name.namespace.haskell"
2006
- },
2007
- "4": {
2008
- "name": "storage.type.operator.haskell"
2009
- },
2010
- "5": {
2011
- "name": "punctuation.paren.haskell"
2012
- }
2013
- }
2014
- }
2015
- ]
2016
- },
2017
- "overloaded_label": {
2018
- "patterns": [
2019
- {
2020
- "match": "(?x) \n (?<![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\p{S}\\p{P}&&[^(,;\\[`{]]) # Disallow closing characters\n (\\#)\n (?:\n # String\n (\"(?:\\\\\"|[^\"])*\")\n # Sequence of allowed label identifiers\n |[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'\\.]+\n )",
2021
- "captures": {
2022
- "1": {
2023
- "name": "keyword.operator.prefix.hash.haskell"
2024
- },
2025
- "2": {
2026
- "patterns": [
2027
- {
2028
- "include": "#string_literal"
2029
- }
2030
- ]
2031
- }
2032
- },
2033
- "name": "entity.name.label.haskell"
2034
- }
2035
- ]
2036
- },
2037
- "reserved_symbol": {
2038
- "patterns": [
2039
- {
2040
- "match": "(?x)\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'']])\n (?:\n (\\.\\.)\n |(:)\n |(=)\n |(\\\\) # λ not reserved as it is a letter\n |(\\|)\n |(<-|←)\n |(->|→)\n |(-<|↢)\n |(-<<|⤛)\n |(>-|⤚)\n |(>>-|⤜)\n )\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'']])",
2041
- "captures": {
2042
- "1": {
2043
- "name": "keyword.operator.double-dot.haskell"
2044
- },
2045
- "2": {
2046
- "name": "keyword.operator.colon.haskell"
2047
- },
2048
- "3": {
2049
- "name": "keyword.operator.eq.haskell"
2050
- },
2051
- "4": {
2052
- "name": "keyword.operator.lambda.haskell"
2053
- },
2054
- "5": {
2055
- "name": "keyword.operator.pipe.haskell"
2056
- },
2057
- "6": {
2058
- "name": "keyword.operator.arrow.left.haskell"
2059
- },
2060
- "7": {
2061
- "name": "keyword.operator.arrow.haskell"
2062
- },
2063
- "8": {
2064
- "name": "keyword.operator.arrow.left.tail.haskell"
2065
- },
2066
- "9": {
2067
- "name": "keyword.operator.arrow.left.tail.double.haskell"
2068
- },
2069
- "10": {
2070
- "name": "keyword.operator.arrow.tail.haskell"
2071
- },
2072
- "11": {
2073
- "name": "keyword.operator.arrow.tail.double.haskell"
2074
- }
2075
- }
2076
- },
2077
- {
2078
- "match": "(?x)\n (?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\p{S}\\p{P}&&[^\\#,;\\[`{]]) # Require closing characters\n (\\#+)\n (?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\p{S}\\p{P}&&[^),;\\]`}]]) # Disallow opening character",
2079
- "captures": {
2080
- "1": {
2081
- "name": "keyword.operator.postfix.hash.haskell"
2082
- }
2083
- }
2084
- },
2085
- {
2086
- "match": "(?x)\n (?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'\\)\\}\\]]) # Require closing characters\n (@)\n (?=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'\\(\\[\\{]) # Require opening character",
2087
- "captures": {
2088
- "1": {
2089
- "name": "keyword.operator.infix.tight.at.haskell"
2090
- }
2091
- }
2092
- },
2093
- {
2094
- "match": "(?x)\n (?<![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\p{S}\\p{P}&&[^(,;\\[`{]]) # Disallow closing characters\n (?:(~)|(!)|(-)|(\\$\\$)|(\\$)|(%))\n (?=[\\p{Ll}_'\\p{Lu}\\p{Lt}\\p{Nd}\\(\\{\\[]) # Require opening character (non operator symbol)",
2095
- "captures": {
2096
- "1": {
2097
- "name": "keyword.operator.prefix.tilde.haskell"
2098
- },
2099
- "2": {
2100
- "name": "keyword.operator.prefix.bang.haskell"
2101
- },
2102
- "3": {
2103
- "name": "keyword.operator.prefix.minus.haskell"
2104
- },
2105
- "4": {
2106
- "name": "keyword.operator.prefix.double-dollar.haskell"
2107
- },
2108
- "5": {
2109
- "name": "keyword.operator.prefix.dollar.haskell"
2110
- },
2111
- "6": {
2112
- "name": "keyword.operator.prefix.modifier.haskell"
2113
- }
2114
- }
2115
- }
2116
- ]
2117
- },
2118
- "type_operator": {
2119
- "patterns": [
2120
- {
2121
- "match": "(?x)\n # Optional promotion tick\n (?:(?<!')('))?\n # Optional qualified name\n ((?:\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.)*)\n # Type operator proper\n (?![#@]?-})(\\#+|[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+(?<!\\#))\n #((?:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']&&[^#@]]|[@#](?!-}))+)",
2122
- "captures": {
2123
- "1": {
2124
- "name": "keyword.operator.promotion.haskell"
2125
- },
2126
- "2": {
2127
- "name": "entity.name.namespace.haskell"
2128
- },
2129
- "3": {
2130
- "name": "storage.type.operator.infix.haskell"
2131
- }
2132
- }
2133
- },
2134
- {
2135
- "match": "(?x)\n # Optional promotion tick\n (')?\n # Opening backtick\n (\\`)\n # Optional qualified name\n ((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.)*)\n # Type constructor proper\n ([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n # Closing backtick\n (`)",
2136
- "captures": {
2137
- "1": {
2138
- "name": "keyword.operator.promotion.haskell"
2139
- },
2140
- "2": {
2141
- "name": "punctuation.backtick.haskell"
2142
- },
2143
- "3": {
2144
- "name": "entity.name.namespace.haskell"
2145
- },
2146
- "4": {
2147
- "name": "storage.type.infix.haskell"
2148
- },
2149
- "5": {
2150
- "name": "punctuation.backtick.haskell"
2151
- }
2152
- }
2153
- }
2154
- ]
2155
- },
2156
- "forall": {
2157
- "begin": "(?x)\n # Alphabetic forall\n (?:\n \\b(?<!')\n (forall)\n \\b(?!')\n )\n |\n # Symbolic forall\n (?:\n # Not preceded by a symbol except reserved symbols\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'']])\n (∀)\n # Not followed by a symbol except reserved symbols\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'']])\n )",
2158
- "end": "(\\.)|(->|→)",
2159
- "beginCaptures": {
2160
- "1": {
2161
- "name": "keyword.other.forall.haskell"
2162
- },
2163
- "2": {
2164
- "name": "keyword.other.forall.haskell"
2165
- }
2166
- },
2167
- "endCaptures": {
2168
- "1": {
2169
- "name": "keyword.operator.period.haskell"
2170
- },
2171
- "2": {
2172
- "name": "keyword.operator.arrow.haskell"
2173
- }
2174
- },
2175
- "patterns": [
2176
- {
2177
- "include": "#comment_like"
2178
- },
2179
- {
2180
- "include": "#type_variable"
2181
- },
2182
- {
2183
- "include": "#type_signature"
2184
- }
2185
- ]
2186
- },
2187
- "string_literal": {
2188
- "begin": "\"",
2189
- "beginCaptures": {
2190
- "0": {
2191
- "name": "punctuation.definition.string.begin.haskell"
2192
- }
2193
- },
2194
- "end": "\"",
2195
- "endCaptures": {
2196
- "0": {
2197
- "name": "punctuation.definition.string.end.haskell"
2198
- }
2199
- },
2200
- "name": "string.quoted.double.haskell",
2201
- "patterns": [
2202
- {
2203
- "match": "\\\\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])",
2204
- "name": "constant.character.escape.haskell"
2205
- },
2206
- {
2207
- "match": "\\\\o[0-7]+|\\\\x[0-9A-Fa-f]+|\\\\[0-9]+",
2208
- "name": "constant.character.escape.octal.haskell"
2209
- },
2210
- {
2211
- "match": "\\\\\\^[A-Z@\\[\\]\\\\\\^_]",
2212
- "name": "constant.character.escape.control.haskell"
2213
- },
2214
- {
2215
- "begin": "\\\\\\s",
2216
- "beginCaptures": {
2217
- "0": {
2218
- "name": "constant.character.escape.begin.haskell"
2219
- }
2220
- },
2221
- "end": "\\\\",
2222
- "endCaptures": {
2223
- "0": {
2224
- "name": "constant.character.escape.end.haskell"
2225
- }
2226
- },
2227
- "patterns": [
2228
- {
2229
- "match": "\\S+",
2230
- "name": "invalid.illegal.character-not-allowed-here.haskell"
2231
- }
2232
- ]
2233
- }
2234
- ]
2235
- },
2236
- "char_literal": {
2237
- "captures": {
2238
- "1": {
2239
- "name": "punctuation.definition.string.begin.haskell"
2240
- },
2241
- "2": {
2242
- "name": "constant.character.escape.haskell"
2243
- },
2244
- "3": {
2245
- "name": "constant.character.escape.octal.haskell"
2246
- },
2247
- "4": {
2248
- "name": "constant.character.escape.hexadecimal.haskell"
2249
- },
2250
- "5": {
2251
- "name": "constant.character.escape.control.haskell"
2252
- },
2253
- "6": {
2254
- "name": "punctuation.definition.string.end.haskell"
2255
- }
2256
- },
2257
- "match": "(?x)\n (?<![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])\n (')\n (?:\n [\\ -\\[\\]-~] # Basic Char\n | (\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE\n |DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS\n |US|SP|DEL|[abfnrtv\\\\\\\"'\\\\&])) # Escapes\n | (\\\\o[0-7]+) # Octal Escapes\n | (\\\\x[0-9A-Fa-f]+) # Hexadecimal Escapes\n | (\\\\\\^[A-Z@\\[\\]\\\\\\^_]) # Control Chars\n )\n (')\n",
2258
- "name": "string.quoted.single.haskell"
2259
- },
2260
- "float_literals": {
2261
- "comment": "Floats are decimal or hexadecimal",
2262
- "match": "(?x)\n \\b(?<!')\n (?: # Decimal\n ([0-9][_0-9]*\\.[0-9][_0-9]*(?:[eE][-+]?[0-9][_0-9]*)?\n |[0-9][_0-9]*[eE][-+]?[0-9][_0-9]*\n )\n | # Hexadecimal\n (0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*\\.[0-9a-fA-F][_0-9a-fA-F]*(?:[pP][-+]?[0-9][_0-9]*)?\n |0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*[pP][-+]?[0-9][_0-9]*\n )\n )\\b(?!')",
2263
- "captures": {
2264
- "1": {
2265
- "name": "constant.numeric.floating.decimal.haskell"
2266
- },
2267
- "2": {
2268
- "name": "constant.numeric.floating.hexadecimal.haskell"
2269
- }
2270
- }
2271
- },
2272
- "integer_literals": {
2273
- "match": "(?x)\n \\b(?<!')\n (?:\n ([0-9][_0-9]*) # Decimal integer\n | (0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*) # Hexadecimal integer\n | (0[oO]_*[0-7][_0-7]*) # Octal integer\n | (0[bB]_*[01][_01]*) # Binary integer\n )\n \\b(?!')",
2274
- "captures": {
2275
- "1": {
2276
- "name": "constant.numeric.integral.decimal.haskell"
2277
- },
2278
- "2": {
2279
- "name": "constant.numeric.integral.hexadecimal.haskell"
2280
- },
2281
- "3": {
2282
- "name": "constant.numeric.integral.octal.haskell"
2283
- },
2284
- "4": {
2285
- "name": "constant.numeric.integral.binary.haskell"
2286
- }
2287
- }
2288
- },
2289
- "numeric_literals": {
2290
- "patterns": [
2291
- {
2292
- "include": "#float_literals"
2293
- },
2294
- {
2295
- "include": "#integer_literals"
2296
- }
2297
- ]
2298
- },
2299
- "ffi": {
2300
- "begin": "^(\\s*)(foreign)\\s+(import|export)\\s+",
2301
- "beginCaptures": {
2302
- "2": {
2303
- "name": "keyword.other.foreign.haskell"
2304
- },
2305
- "3": {
2306
- "name": "keyword.other.$3.haskell"
2307
- }
2308
- },
2309
- "name": "meta.$3.foreign.haskell",
2310
- "end": "(?x) # Detect end of FFI block by decreasing indentation:\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
2311
- "patterns": [
2312
- {
2313
- "include": "#comment_like"
2314
- },
2315
- {
2316
- "match": "\\b(?<!')(ccall|cplusplus|dotnet|jvm|stdcall|prim|capi)\\s+",
2317
- "captures": {
2318
- "1": {
2319
- "name": "keyword.other.calling-convention.$1.haskell"
2320
- }
2321
- }
2322
- },
2323
- {
2324
- "begin": "(?=\")|(?=\\b(?<!')([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\b(?!'))",
2325
- "end": "(?=(::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))",
2326
- "patterns": [
2327
- {
2328
- "include": "#comment_like"
2329
- },
2330
- {
2331
- "match": "(?x)\n \\b(?<!')(safe|unsafe|interruptible)\\b(?!')\n \\s*\n (\"(?:\\\\\"|[^\"])*\")?\n \\s*\n (?:\n (?:\\b(?<!'')([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\b(?!'))\n |(?:\\(\\s*(?!--+\\))([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*\\))\n )\n",
2332
- "captures": {
2333
- "1": {
2334
- "name": "keyword.other.safety.$1.haskell"
2335
- },
2336
- "2": {
2337
- "name": "entity.name.foreign.haskell",
2338
- "patterns": [
2339
- {
2340
- "include": "#string_literal"
2341
- }
2342
- ]
2343
- },
2344
- "3": {
2345
- "name": "entity.name.function.haskell"
2346
- },
2347
- "4": {
2348
- "name": "entity.name.function.infix.haskell"
2349
- }
2350
- }
2351
- },
2352
- {
2353
- "match": "(?x)\n \\b(?<!')(safe|unsafe|interruptible)\\b(?!')\n \\s*\n (\"(?:\\\\\"|[^\"])*\")?\n \\s*$\n",
2354
- "captures": {
2355
- "1": {
2356
- "name": "keyword.other.safety.$1.haskell"
2357
- },
2358
- "2": {
2359
- "name": "entity.name.foreign.haskell",
2360
- "patterns": [
2361
- {
2362
- "include": "#string_literal"
2363
- }
2364
- ]
2365
- }
2366
- }
2367
- },
2368
- {
2369
- "match": "(?x)\n \"(?:\\\\\"|[^\"])*\"",
2370
- "captures": {
2371
- "0": {
2372
- "name": "entity.name.foreign.haskell",
2373
- "patterns": [
2374
- {
2375
- "include": "#string_literal"
2376
- }
2377
- ]
2378
- }
2379
- }
2380
- },
2381
- {
2382
- "match": "(?x)\n (?:\\b(?<!'')([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\b(?!'))\n |(?:(\\()\\s*(?!--+\\))([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*(\\)))\n",
2383
- "captures": {
2384
- "1": {
2385
- "name": "entity.name.function.haskell"
2386
- },
2387
- "2": {
2388
- "name": "punctuation.paren.haskell"
2389
- },
2390
- "3": {
2391
- "name": "entity.name.function.infix.haskell"
2392
- },
2393
- "4": {
2394
- "name": "punctuation.paren.haskell"
2395
- }
2396
- }
2397
- }
2398
- ]
2399
- },
2400
- {
2401
- "include": "#double_colon"
2402
- },
2403
- {
2404
- "include": "#type_signature"
2405
- }
2406
- ]
2407
- },
2408
- "inline_phase": {
2409
- "begin": "\\[",
2410
- "beginCaptures": {
2411
- "0": {
2412
- "name": "punctuation.bracket.haskell"
2413
- }
2414
- },
2415
- "end": "\\]",
2416
- "endCaptures": {
2417
- "0": {
2418
- "name": "punctuation.bracket.haskell"
2419
- }
2420
- },
2421
- "name": "meta.inlining-phase.haskell",
2422
- "patterns": [
2423
- {
2424
- "match": "~",
2425
- "name": "punctuation.tilde.haskell"
2426
- },
2427
- {
2428
- "include": "#integer_literals"
2429
- },
2430
- {
2431
- "match": "\\w*",
2432
- "name": "invalid"
2433
- }
2434
- ]
2435
- },
2436
- "quasi_quote": {
2437
- "patterns": [
2438
- {
2439
- "begin": "(?x)\n (\\[)\n (e|d|p)?\n (\\|(?:\\|(?!\\]))?)",
2440
- "beginCaptures": {
2441
- "1": {
2442
- "name": "keyword.operator.quasi-quotation.begin.haskell"
2443
- },
2444
- "2": {
2445
- "name": "entity.name.quasi-quoter.haskell"
2446
- },
2447
- "3": {
2448
- "name": "keyword.operator.quasi-quotation.begin.haskell"
2449
- }
2450
- },
2451
- "end": "\\3\\]",
2452
- "endCaptures": {
2453
- "0": {
2454
- "name": "keyword.operator.quasi-quotation.end.haskell"
2455
- }
2456
- },
2457
- "name": "meta.quasi-quotation.haskell",
2458
- "patterns": [
2459
- {
2460
- "include": "$self"
2461
- }
2462
- ]
2463
- },
2464
- {
2465
- "begin": "(?x)\n (\\[)\n (t)\n (\\|(?:\\|(?!\\]))?)",
2466
- "beginCaptures": {
2467
- "1": {
2468
- "name": "keyword.operator.quasi-quotation.begin.haskell"
2469
- },
2470
- "2": {
2471
- "name": "entity.name.quasi-quoter.haskell"
2472
- },
2473
- "3": {
2474
- "name": "keyword.operator.quasi-quotation.begin.haskell"
2475
- }
2476
- },
2477
- "end": "\\3\\]",
2478
- "endCaptures": {
2479
- "0": {
2480
- "name": "keyword.operator.quasi-quotation.end.haskell"
2481
- }
2482
- },
2483
- "name": "meta.quasi-quotation.haskell",
2484
- "patterns": [
2485
- {
2486
- "include": "#type_signature"
2487
- }
2488
- ]
2489
- },
2490
- {
2491
- "begin": "(?x)\n (\\[)\n (?:(\\$\\$)|(\\$))?\n (?!'\\|') # Don't parse ['|'...] as a quasi quotation\n ((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.)*) # Optional qualifier\n ((?:[^\\s\\p{S}\\p{P}]|['_])*) # Quasi-quoter\n (\\|)",
2492
- "beginCaptures": {
2493
- "1": {
2494
- "name": "keyword.operator.quasi-quotation.begin.haskell"
2495
- },
2496
- "2": {
2497
- "name": "keyword.operator.prefix.double-dollar.haskell"
2498
- },
2499
- "3": {
2500
- "name": "keyword.operator.prefix.dollar.haskell"
2501
- },
2502
- "4": {
2503
- "name": "entity.name.namespace.haskell"
2504
- },
2505
- "5": {
2506
- "name": "entity.name.quasi-quoter.haskell"
2507
- },
2508
- "6": {
2509
- "name": "keyword.operator.quasi-quotation.begin.haskell"
2510
- }
2511
- },
2512
- "end": "\\|\\]",
2513
- "endCaptures": {
2514
- "0": {
2515
- "name": "keyword.operator.quasi-quotation.end.haskell"
2516
- }
2517
- },
2518
- "name": "meta.quasi-quotation.haskell meta.embedded.block.$5"
2519
- }
2520
- ]
2521
- }
2522
- },
2523
- "scopeName": "source.haskell",
2524
- "uuid": "5C034675-1F6D-497E-8073-369D37E2FD7D"
2525
- }