tree-sitter-c.cson 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. name: 'C'
  2. scopeName: 'source.c'
  3. type: 'tree-sitter'
  4. parser: 'tree-sitter-c'
  5. firstLineRegex: '-\\*-[^*]*(Mode:\\s*)?C(\\s*;.*?)?\\s*-\\*-'
  6. injectionRegex: 'c|C'
  7. fileTypes: [
  8. 'h'
  9. 'c'
  10. 'h.in'
  11. ]
  12. folds: [
  13. {
  14. type: ['comment', 'preproc_arg']
  15. }
  16. {
  17. type: ['preproc_if', 'preproc_ifdef', 'preproc_elif'],
  18. end: {type: ['preproc_else', 'preproc_elif']}
  19. }
  20. {
  21. type: ['preproc_if', 'preproc_ifdef'],
  22. end: {index: -1}
  23. }
  24. {
  25. type: ['preproc_else', 'preproc_elif']
  26. start: {index: 0}
  27. }
  28. {
  29. type: [
  30. 'enumerator_list'
  31. 'compound_statement'
  32. 'declaration_list'
  33. 'field_declaration_list'
  34. 'parameter_list'
  35. 'argument_list'
  36. 'initializer_list'
  37. 'parenthesized_expression'
  38. 'template_parameter_list'
  39. 'template_argument_list'
  40. ]
  41. start: {index: 0}
  42. end: {index: -1}
  43. }
  44. {
  45. type: 'case_statement'
  46. start: {index: 0}
  47. end: {type: 'break_statement', index: -1}
  48. }
  49. {
  50. type: 'case_statement'
  51. start: {index: 0}
  52. }
  53. ]
  54. comments:
  55. start: '// '
  56. scopes:
  57. 'translation_unit': 'source.c'
  58. 'comment': 'comment.block'
  59. 'identifier': [
  60. {match: '^[A-Z\\d_]+$', scopes: 'constant.other'}
  61. ]
  62. '"#if"': 'keyword.control.directive'
  63. '"#ifdef"': 'keyword.control.directive'
  64. '"#ifndef"': 'keyword.control.directive'
  65. '"#elif"': 'keyword.control.directive'
  66. '"#else"': 'keyword.control.directive'
  67. '"#endif"': 'keyword.control.directive'
  68. '"#define"': 'keyword.control.directive'
  69. '"#include"': 'keyword.control.directive'
  70. 'preproc_directive': 'keyword.control.directive'
  71. '"if"': 'keyword.control'
  72. '"else"': 'keyword.control'
  73. '"do"': 'keyword.control'
  74. '"for"': 'keyword.control'
  75. '"while"': 'keyword.control'
  76. '"break"': 'keyword.control'
  77. '"continue"': 'keyword.control'
  78. '"return"': 'keyword.control'
  79. '"switch"': 'keyword.control'
  80. '"case"': 'keyword.control'
  81. '"default"': 'keyword.control'
  82. '"goto"': 'keyword.control'
  83. '"struct"': 'keyword.control'
  84. '"enum"': 'keyword.control'
  85. '"union"': 'keyword.control'
  86. '"typedef"': 'keyword.control'
  87. 'preproc_function_def > identifier:nth-child(1)': 'entity.name.function.preprocessor'
  88. 'preproc_arg': 'meta.preprocessor.macro'
  89. '''
  90. call_expression > identifier,
  91. call_expression > field_expression > field_identifier,
  92. function_declarator > identifier
  93. ''': 'entity.name.function'
  94. 'statement_identifier': 'constant.variable'
  95. 'field_identifier': 'variable.other.member'
  96. 'type_identifier': 'support.storage.type'
  97. 'primitive_type': 'support.storage.type'
  98. '"signed"': 'support.storage.type'
  99. '"unsigned"': 'support.storage.type'
  100. '"short"': 'support.storage.type'
  101. '"long"': 'support.storage.type'
  102. 'char_literal': 'string.quoted.single'
  103. 'string_literal': 'string.quoted.double'
  104. 'system_lib_string': 'string.quoted.other'
  105. 'escape_sequence': 'constant.character.escape'
  106. 'number_literal': 'constant.numeric.decimal'
  107. 'null': 'constant.language.null'
  108. 'true': 'constant.language.boolean'
  109. 'false': 'constant.language.boolean'
  110. 'auto': 'storage.modifier'
  111. '"extern"': 'storage.modifier'
  112. '"register"': 'storage.modifier'
  113. '"static"': 'storage.modifier'
  114. '"inline"': 'storage.modifier'
  115. '"const"': 'storage.modifier'
  116. '"volatile"': 'storage.modifier'
  117. '"restrict"': 'storage.modifier'
  118. '"_Atomic"': 'storage.modifier'
  119. 'function_specifier': 'storage.modifier'
  120. '";"': 'punctuation.terminator.statement'
  121. '"["': 'punctuation.definition.begin.bracket.square'
  122. '"]"': 'punctuation.definition.end.bracket.square'
  123. '","': 'punctuation.separator.delimiter'
  124. 'char_literal > "\'"': 'punctuation.definition.string'
  125. 'string_literal > "\\""': 'punctuation.definition.string'
  126. '"{"': 'punctuation.section.block.begin.bracket.curly'
  127. '"}"': 'punctuation.section.block.end.bracket.curly'
  128. '"("': 'punctuation.section.parens.begin.bracket.round'
  129. '")"': 'punctuation.section.parens.end.bracket.round'
  130. '"sizeof"': 'keyword.operator.sizeof'
  131. '"."': 'keyword.operator.member'
  132. '"->"': 'keyword.operator.member'
  133. '"*"': 'keyword.operator'
  134. '"-"': 'keyword.operator'
  135. '"+"': 'keyword.operator'
  136. '"/"': 'keyword.operator'
  137. '"%"': 'keyword.operator'
  138. '"++"': 'keyword.operator'
  139. '"--"': 'keyword.operator'
  140. '"=="': 'keyword.operator'
  141. '"!"': 'keyword.operator'
  142. '"!="': 'keyword.operator'
  143. '"<"': 'keyword.operator'
  144. '">"': 'keyword.operator'
  145. '">="': 'keyword.operator'
  146. '"<="': 'keyword.operator'
  147. '"&&"': 'keyword.operator'
  148. '"||"': 'keyword.operator'
  149. '"&"': 'keyword.operator'
  150. '"|"': 'keyword.operator'
  151. '"^"': 'keyword.operator'
  152. '"~"': 'keyword.operator'
  153. '"<<"': 'keyword.operator'
  154. '">>"': 'keyword.operator'
  155. '"="': 'keyword.operator'
  156. '"+="': 'keyword.operator'
  157. '"-="': 'keyword.operator'
  158. '"*="': 'keyword.operator'
  159. '"/="': 'keyword.operator'
  160. '"%="': 'keyword.operator'
  161. '"<<="': 'keyword.operator'
  162. '">>="': 'keyword.operator'
  163. '"&="': 'keyword.operator'
  164. '"^="': 'keyword.operator'
  165. '"|="': 'keyword.operator'
  166. '"?"': 'keyword.operator'
  167. '":"': 'keyword.operator'