grammars/hint.haskell.json in github-linguist-7.1.3 vs grammars/hint.haskell.json in github-linguist-7.2.0
- old
+ new
@@ -257,10 +257,13 @@
},
{
"include": "#deriving"
},
{
+ "include": "#via"
+ },
+ {
"include": "#assignment_op"
},
{
"match": "(?:(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s*)(?:((?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|-\u003e|=\u003e)+\\s*)+))(?:(?:\\s+)(?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|-\u003e|=\u003e)+\\s*)+)))*)?))",
"captures": {
@@ -354,46 +357,66 @@
"deriving_instance_decl": {
"patterns": [
{
"name": "meta.declaration.instance.deriving.haskell",
"contentName": "meta.type-signature.haskell",
- "begin": "^([ \\t]*)(deriving\\s+instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
+ "begin": "^([ \\t]*)(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s+(instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
"end": "^(?!\\1[ \\t]|[ \\t]*$)",
"patterns": [
{
"include": "#pragma"
},
{
"include": "#type_signature"
+ },
+ {
+ "include": "#deriving_via"
}
],
"beginCaptures": {
"2": {
"name": "keyword.other.haskell"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#deriving_strategies"
+ }
+ ]
+ },
+ "4": {
+ "name": "keyword.other.haskell"
}
}
}
]
},
"deriving_keyword": {
"patterns": [
{
"name": "meta.deriving.haskell",
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
"captures": {
"1": {
"name": "keyword.other.haskell"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#deriving_strategies"
+ }
+ ]
}
}
}
]
},
"deriving_list": {
"patterns": [
{
"name": "meta.deriving.haskell",
- "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)\\s*\\(",
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s*\\(",
"end": "\\)",
"patterns": [
{
"match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
"captures": {
@@ -404,31 +427,58 @@
}
],
"beginCaptures": {
"1": {
"name": "keyword.other.haskell"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#deriving_strategies"
+ }
+ ]
}
}
}
]
},
"deriving_simple": {
"patterns": [
{
"name": "meta.deriving.haskell",
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
"captures": {
"1": {
"name": "keyword.other.haskell"
},
"2": {
+ "patterns": [
+ {
+ "include": "#deriving_strategies"
+ }
+ ]
+ },
+ "3": {
"name": "entity.other.inherited-class.haskell"
}
}
}
]
},
+ "deriving_strategies": {
+ "patterns": [
+ {
+ "name": "meta.deriving.strategy.haskell",
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(stock|newtype|anyclass)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
+ "captures": {
+ "1": {
+ "name": "keyword.other.haskell"
+ }
+ }
+ }
+ ]
+ },
"double_colon_operator": {
"patterns": [
{
"name": "keyword.other.double-colon.haskell",
"match": "(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))"
@@ -1474,9 +1524,74 @@
"unit": {
"patterns": [
{
"name": "constant.language.unit.haskell",
"match": "\\(\\)"
+ }
+ ]
+ },
+ "via": {
+ "patterns": [
+ {
+ "include": "#via_list"
+ },
+ {
+ "include": "#via_simple"
+ },
+ {
+ "include": "#via_keyword"
+ }
+ ]
+ },
+ "via_keyword": {
+ "patterns": [
+ {
+ "name": "meta.via.haskell",
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
+ "captures": {
+ "1": {
+ "name": "keyword.other.haskell"
+ }
+ }
+ }
+ ]
+ },
+ "via_list": {
+ "patterns": [
+ {
+ "name": "meta.via.haskell",
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ],
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.haskell"
+ }
+ }
+ }
+ ]
+ },
+ "via_simple": {
+ "patterns": [
+ {
+ "name": "meta.via.haskell",
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
+ "captures": {
+ "1": {
+ "name": "keyword.other.haskell"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ }
+ }
}
]
},
"where": {
"patterns": [