Skip to content

Commit 78b39d6

Browse files
committed
support ref/deref
1 parent 597a2b5 commit 78b39d6

File tree

4 files changed

+79
-15
lines changed

4 files changed

+79
-15
lines changed

cpp/generate.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1367,10 +1367,11 @@ def blockFinderFor( name:"", tag_as:"", start_pattern:nil, needs_semicolon: true
13671367
end_pattern: lookBehindFor(/;/),
13681368
includes: [
13691369
generateClassOrStructBlockFinder[name, [
1370-
newPattern(
1370+
ref_deref_definition_pattern.then(
13711371
match: variable_name,
13721372
tag_as: "entity.name.type.alias"
1373-
)
1373+
),
1374+
/,/,
13741375
]]
13751376
]
13761377
)

syntaxes/cpp.tmLanguage.json

Lines changed: 45 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2964,8 +2964,21 @@
29642964
"end": "[\\s\\n]*(?=;)",
29652965
"patterns": [
29662966
{
2967-
"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F]))(?:(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F])))*(?!\\w)",
2968-
"name": "entity.name.type.alias.cpp"
2967+
"match": "(((?:\\*\\s*)*)((?:\\&\\s*?){0,2})\\s*)((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F]))(?:(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F])))*(?!\\w))",
2968+
"captures": {
2969+
"2": {
2970+
"name": "storage.modifier.pointer.cpp"
2971+
},
2972+
"3": {
2973+
"name": "storage.modifier.reference.cpp"
2974+
},
2975+
"4": {
2976+
"name": "entity.name.type.alias.cpp"
2977+
}
2978+
}
2979+
},
2980+
{
2981+
"match": ","
29692982
}
29702983
]
29712984
}
@@ -3090,8 +3103,21 @@
30903103
"end": "[\\s\\n]*(?=;)",
30913104
"patterns": [
30923105
{
3093-
"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F]))(?:(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F])))*(?!\\w)",
3094-
"name": "entity.name.type.alias.cpp"
3106+
"match": "(((?:\\*\\s*)*)((?:\\&\\s*?){0,2})\\s*)((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F]))(?:(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F])))*(?!\\w))",
3107+
"captures": {
3108+
"2": {
3109+
"name": "storage.modifier.pointer.cpp"
3110+
},
3111+
"3": {
3112+
"name": "storage.modifier.reference.cpp"
3113+
},
3114+
"4": {
3115+
"name": "entity.name.type.alias.cpp"
3116+
}
3117+
}
3118+
},
3119+
{
3120+
"match": ","
30953121
}
30963122
]
30973123
}
@@ -3216,8 +3242,21 @@
32163242
"end": "[\\s\\n]*(?=;)",
32173243
"patterns": [
32183244
{
3219-
"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F]))(?:(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F])))*(?!\\w)",
3220-
"name": "entity.name.type.alias.cpp"
3245+
"match": "(((?:\\*\\s*)*)((?:\\&\\s*?){0,2})\\s*)((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F]))(?:(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F])))*(?!\\w))",
3246+
"captures": {
3247+
"2": {
3248+
"name": "storage.modifier.pointer.cpp"
3249+
},
3250+
"3": {
3251+
"name": "storage.modifier.reference.cpp"
3252+
},
3253+
"4": {
3254+
"name": "entity.name.type.alias.cpp"
3255+
}
3256+
}
3257+
},
3258+
{
3259+
"match": ","
32213260
}
32223261
]
32233262
}

syntaxes/cpp.tmLanguage.yaml

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1580,8 +1580,15 @@
15801580
begin: "(?<=})[\\s\\n]*"
15811581
end: "[\\s\\n]*(?=;)"
15821582
patterns:
1583-
- match: "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F]))(?:(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F])))*(?!\\w)"
1584-
name: entity.name.type.alias.cpp
1583+
- match: "(((?:\\*\\s*)*)((?:\\&\\s*?){0,2})\\s*)((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F]))(?:(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F])))*(?!\\w))"
1584+
captures:
1585+
'2':
1586+
name: storage.modifier.pointer.cpp
1587+
'3':
1588+
name: storage.modifier.reference.cpp
1589+
'4':
1590+
name: entity.name.type.alias.cpp
1591+
- match: ","
15851592
typedef_struct:
15861593
begin: "((?<!\\w)typedef(?!\\w))\\s*(?=(?<!\\w)struct(?!\\w))"
15871594
beginCaptures:
@@ -1645,8 +1652,15 @@
16451652
begin: "(?<=})[\\s\\n]*"
16461653
end: "[\\s\\n]*(?=;)"
16471654
patterns:
1648-
- match: "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F]))(?:(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F])))*(?!\\w)"
1649-
name: entity.name.type.alias.cpp
1655+
- match: "(((?:\\*\\s*)*)((?:\\&\\s*?){0,2})\\s*)((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F]))(?:(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F])))*(?!\\w))"
1656+
captures:
1657+
'2':
1658+
name: storage.modifier.pointer.cpp
1659+
'3':
1660+
name: storage.modifier.reference.cpp
1661+
'4':
1662+
name: entity.name.type.alias.cpp
1663+
- match: ","
16501664
typedef_union:
16511665
begin: "((?<!\\w)typedef(?!\\w))\\s*(?=(?<!\\w)union(?!\\w))"
16521666
beginCaptures:
@@ -1710,8 +1724,15 @@
17101724
begin: "(?<=})[\\s\\n]*"
17111725
end: "[\\s\\n]*(?=;)"
17121726
patterns:
1713-
- match: "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F]))(?:(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F])))*(?!\\w)"
1714-
name: entity.name.type.alias.cpp
1727+
- match: "(((?:\\*\\s*)*)((?:\\&\\s*?){0,2})\\s*)((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F]))(?:(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U000[0-9a-fA-F])))*(?!\\w))"
1728+
captures:
1729+
'2':
1730+
name: storage.modifier.pointer.cpp
1731+
'3':
1732+
name: storage.modifier.reference.cpp
1733+
'4':
1734+
name: entity.name.type.alias.cpp
1735+
- match: ","
17151736
hacky_fix_for_stray_directive:
17161737
match: "(?<!\\w)#(?:endif|else|elif)(?!\\w)"
17171738
name: keyword.control.directive.$0.cpp

test/fixtures/features/typedef_alias.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,7 @@ typedef class bar {
88

99
typedef union foobar {
1010

11-
} foobar;
11+
} foobar;
12+
typedef struct _OVERLAPPED {
13+
14+
} OVERLAPPED, *LPOVERLAPPED;

0 commit comments

Comments
 (0)