outline.scm

  1(preproc_def
  2    "#define" @context
  3    name: (_) @name) @item
  4
  5(preproc_function_def
  6    "#define" @context
  7    name: (_) @name
  8    parameters: (preproc_params
  9        "(" @context
 10        ")" @context)) @item
 11
 12(type_definition
 13    "typedef" @context
 14    declarator: (_) @name) @item
 15
 16(struct_specifier
 17    "struct" @context
 18    name: (_) @name) @item
 19
 20(class_specifier
 21    "class" @context
 22    name: (_) @name) @item
 23
 24(enum_specifier
 25    "enum" @context
 26    name: (_) @name) @item
 27
 28(enumerator
 29    name: (_) @name) @item
 30
 31(concept_definition
 32    "concept" @context
 33    name: (_) @name) @item
 34
 35(declaration
 36    (storage_class_specifier) @context
 37    (type_qualifier)? @context
 38    type: (_) @context
 39    declarator: (init_declarator
 40      ; The declaration may define multiple variables, using @item on the
 41      ; declarator so that they get distinct ranges.
 42      declarator: (_) @item @name))
 43
 44(function_definition
 45    (type_qualifier)? @context
 46    type: (_)? @context
 47    declarator: [
 48        (function_declarator
 49            declarator: (_) @name
 50            parameters: (parameter_list
 51                "(" @context
 52                ")" @context))
 53        (pointer_declarator
 54            "*" @context
 55            declarator: (function_declarator
 56                declarator: (_) @name
 57                parameters: (parameter_list
 58                    "(" @context
 59                    ")" @context)))
 60        (pointer_declarator
 61            "*" @context
 62            declarator: (pointer_declarator
 63                "*" @context
 64                declarator: (function_declarator
 65                    declarator: (_) @name
 66                    parameters: (parameter_list
 67                        "(" @context
 68                        ")" @context))))
 69        (reference_declarator
 70            ["&" "&&"] @context
 71            (function_declarator
 72                declarator: (_) @name
 73                parameters: (parameter_list
 74                    "(" @context
 75                    ")" @context)))
 76    ]
 77    (type_qualifier)? @context) @item
 78
 79(declaration
 80    (type_qualifier)? @context
 81    type: (_)? @context
 82    declarator: [
 83        (field_identifier) @name
 84        (pointer_declarator
 85            "*" @context
 86            declarator: (field_identifier) @name)
 87        (function_declarator
 88            declarator: (_) @name
 89            parameters: (parameter_list
 90                "(" @context
 91                ")" @context))
 92        (pointer_declarator
 93            "*" @context
 94            declarator: (function_declarator
 95                declarator: (_) @name
 96                parameters: (parameter_list
 97                    "(" @context
 98                    ")" @context)))
 99        (pointer_declarator
100            "*" @context
101            declarator: (pointer_declarator
102                "*" @context
103                declarator: (function_declarator
104                    declarator: (_) @name
105                    parameters: (parameter_list
106                        "(" @context
107                        ")" @context))))
108        (reference_declarator
109            ["&" "&&"] @context
110            (function_declarator
111                declarator: (_) @name
112                parameters: (parameter_list
113                    "(" @context
114                    ")" @context)))
115    ]
116    (type_qualifier)? @context) @item
117
118(field_declaration
119    (type_qualifier)? @context
120    type: (_) @context
121    declarator: [
122        (field_identifier) @name
123        (pointer_declarator
124            "*" @context
125            declarator: (field_identifier) @name)
126        (function_declarator
127            declarator: (_) @name
128            parameters: (parameter_list
129                "(" @context
130                ")" @context))
131        (pointer_declarator
132            "*" @context
133            declarator: (function_declarator
134                declarator: (_) @name
135                parameters: (parameter_list
136                    "(" @context
137                    ")" @context)))
138        (pointer_declarator
139            "*" @context
140            declarator: (pointer_declarator
141                "*" @context
142                declarator: (function_declarator
143                    declarator: (_) @name
144                    parameters: (parameter_list
145                        "(" @context
146                        ")" @context))))
147        (reference_declarator
148            ["&" "&&"] @context
149            (function_declarator
150                declarator: (_) @name
151                parameters: (parameter_list
152                    "(" @context
153                    ")" @context)))
154    ; Fields declarations may define multiple fields, and so @item is on the
155    ; declarator so they each get distinct ranges.
156    ] @item
157    (type_qualifier)? @context)
158
159(comment) @annotation