mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 01:34:25 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			333 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Scheme
		
	
	
	
	
	
			
		
		
	
	
			333 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Scheme
		
	
	
	
	
	
; Lower priority to prefer @variable.parameter when identifier appears in parameter_declaration.
 | 
						|
((identifier) @variable
 | 
						|
  (#set! "priority" 95))
 | 
						|
 | 
						|
(preproc_def
 | 
						|
  (preproc_arg) @variable)
 | 
						|
 | 
						|
[
 | 
						|
  "default"
 | 
						|
  "goto"
 | 
						|
  "asm"
 | 
						|
  "__asm__"
 | 
						|
] @keyword
 | 
						|
 | 
						|
[
 | 
						|
  "enum"
 | 
						|
  "struct"
 | 
						|
  "union"
 | 
						|
  "typedef"
 | 
						|
] @keyword.type
 | 
						|
 | 
						|
[
 | 
						|
  "sizeof"
 | 
						|
  "offsetof"
 | 
						|
] @keyword.operator
 | 
						|
 | 
						|
(alignof_expression
 | 
						|
  .
 | 
						|
  _ @keyword.operator)
 | 
						|
 | 
						|
"return" @keyword.return
 | 
						|
 | 
						|
[
 | 
						|
  "while"
 | 
						|
  "for"
 | 
						|
  "do"
 | 
						|
  "continue"
 | 
						|
  "break"
 | 
						|
] @keyword.repeat
 | 
						|
 | 
						|
[
 | 
						|
  "if"
 | 
						|
  "else"
 | 
						|
  "case"
 | 
						|
  "switch"
 | 
						|
] @keyword.conditional
 | 
						|
 | 
						|
[
 | 
						|
  "#if"
 | 
						|
  "#ifdef"
 | 
						|
  "#ifndef"
 | 
						|
  "#else"
 | 
						|
  "#elif"
 | 
						|
  "#endif"
 | 
						|
  "#elifdef"
 | 
						|
  "#elifndef"
 | 
						|
  (preproc_directive)
 | 
						|
] @keyword.directive
 | 
						|
 | 
						|
"#define" @keyword.directive.define
 | 
						|
 | 
						|
"#include" @keyword.import
 | 
						|
 | 
						|
[
 | 
						|
  ";"
 | 
						|
  ":"
 | 
						|
  ","
 | 
						|
  "::"
 | 
						|
] @punctuation.delimiter
 | 
						|
 | 
						|
"..." @punctuation.special
 | 
						|
 | 
						|
[
 | 
						|
  "("
 | 
						|
  ")"
 | 
						|
  "["
 | 
						|
  "]"
 | 
						|
  "{"
 | 
						|
  "}"
 | 
						|
] @punctuation.bracket
 | 
						|
 | 
						|
[
 | 
						|
  "="
 | 
						|
  "-"
 | 
						|
  "*"
 | 
						|
  "/"
 | 
						|
  "+"
 | 
						|
  "%"
 | 
						|
  "~"
 | 
						|
  "|"
 | 
						|
  "&"
 | 
						|
  "^"
 | 
						|
  "<<"
 | 
						|
  ">>"
 | 
						|
  "->"
 | 
						|
  "."
 | 
						|
  "<"
 | 
						|
  "<="
 | 
						|
  ">="
 | 
						|
  ">"
 | 
						|
  "=="
 | 
						|
  "!="
 | 
						|
  "!"
 | 
						|
  "&&"
 | 
						|
  "||"
 | 
						|
  "-="
 | 
						|
  "+="
 | 
						|
  "*="
 | 
						|
  "/="
 | 
						|
  "%="
 | 
						|
  "|="
 | 
						|
  "&="
 | 
						|
  "^="
 | 
						|
  ">>="
 | 
						|
  "<<="
 | 
						|
  "--"
 | 
						|
  "++"
 | 
						|
] @operator
 | 
						|
 | 
						|
; Make sure the comma operator is given a highlight group after the comma
 | 
						|
; punctuator so the operator is highlighted properly.
 | 
						|
(comma_expression
 | 
						|
  "," @operator)
 | 
						|
 | 
						|
[
 | 
						|
  (true)
 | 
						|
  (false)
 | 
						|
] @boolean
 | 
						|
 | 
						|
(conditional_expression
 | 
						|
  [
 | 
						|
    "?"
 | 
						|
    ":"
 | 
						|
  ] @keyword.conditional.ternary)
 | 
						|
 | 
						|
(string_literal) @string
 | 
						|
 | 
						|
(system_lib_string) @string
 | 
						|
 | 
						|
(escape_sequence) @string.escape
 | 
						|
 | 
						|
(null) @constant.builtin
 | 
						|
 | 
						|
(number_literal) @number
 | 
						|
 | 
						|
(char_literal) @character
 | 
						|
 | 
						|
(preproc_defined) @function.macro
 | 
						|
 | 
						|
((field_expression
 | 
						|
  (field_identifier) @property) @_parent
 | 
						|
  (#not-has-parent? @_parent template_method function_declarator call_expression))
 | 
						|
 | 
						|
(field_designator) @property
 | 
						|
 | 
						|
((field_identifier) @property
 | 
						|
  (#has-ancestor? @property field_declaration)
 | 
						|
  (#not-has-ancestor? @property function_declarator))
 | 
						|
 | 
						|
(statement_identifier) @label
 | 
						|
 | 
						|
(declaration
 | 
						|
  type: (type_identifier) @_type
 | 
						|
  declarator: (identifier) @label
 | 
						|
  (#eq? @_type "__label__"))
 | 
						|
 | 
						|
[
 | 
						|
  (type_identifier)
 | 
						|
  (type_descriptor)
 | 
						|
] @type
 | 
						|
 | 
						|
(storage_class_specifier) @keyword.modifier
 | 
						|
 | 
						|
[
 | 
						|
  (type_qualifier)
 | 
						|
  (gnu_asm_qualifier)
 | 
						|
  "__extension__"
 | 
						|
] @keyword.modifier
 | 
						|
 | 
						|
(linkage_specification
 | 
						|
  "extern" @keyword.modifier)
 | 
						|
 | 
						|
(type_definition
 | 
						|
  declarator: (type_identifier) @type.definition)
 | 
						|
 | 
						|
(primitive_type) @type.builtin
 | 
						|
 | 
						|
(sized_type_specifier
 | 
						|
  _ @type.builtin
 | 
						|
  type: _?)
 | 
						|
 | 
						|
((identifier) @constant
 | 
						|
  (#lua-match? @constant "^[A-Z][A-Z0-9_]+$"))
 | 
						|
 | 
						|
(preproc_def
 | 
						|
  (preproc_arg) @constant
 | 
						|
  (#lua-match? @constant "^[A-Z][A-Z0-9_]+$"))
 | 
						|
 | 
						|
(enumerator
 | 
						|
  name: (identifier) @constant)
 | 
						|
 | 
						|
(case_statement
 | 
						|
  value: (identifier) @constant)
 | 
						|
 | 
						|
((identifier) @constant.builtin
 | 
						|
  ; format-ignore
 | 
						|
  (#any-of? @constant.builtin
 | 
						|
    "stderr" "stdin" "stdout"
 | 
						|
    "__FILE__" "__LINE__" "__DATE__" "__TIME__"
 | 
						|
    "__STDC__" "__STDC_VERSION__" "__STDC_HOSTED__"
 | 
						|
    "__cplusplus" "__OBJC__" "__ASSEMBLER__"
 | 
						|
    "__BASE_FILE__" "__FILE_NAME__" "__INCLUDE_LEVEL__"
 | 
						|
    "__TIMESTAMP__" "__clang__" "__clang_major__"
 | 
						|
    "__clang_minor__" "__clang_patchlevel__"
 | 
						|
    "__clang_version__" "__clang_literal_encoding__"
 | 
						|
    "__clang_wide_literal_encoding__"
 | 
						|
    "__FUNCTION__" "__func__" "__PRETTY_FUNCTION__"
 | 
						|
    "__VA_ARGS__" "__VA_OPT__"))
 | 
						|
 | 
						|
(preproc_def
 | 
						|
  (preproc_arg) @constant.builtin
 | 
						|
  ; format-ignore
 | 
						|
  (#any-of? @constant.builtin
 | 
						|
    "stderr" "stdin" "stdout"
 | 
						|
    "__FILE__" "__LINE__" "__DATE__" "__TIME__"
 | 
						|
    "__STDC__" "__STDC_VERSION__" "__STDC_HOSTED__"
 | 
						|
    "__cplusplus" "__OBJC__" "__ASSEMBLER__"
 | 
						|
    "__BASE_FILE__" "__FILE_NAME__" "__INCLUDE_LEVEL__"
 | 
						|
    "__TIMESTAMP__" "__clang__" "__clang_major__"
 | 
						|
    "__clang_minor__" "__clang_patchlevel__"
 | 
						|
    "__clang_version__" "__clang_literal_encoding__"
 | 
						|
    "__clang_wide_literal_encoding__"
 | 
						|
    "__FUNCTION__" "__func__" "__PRETTY_FUNCTION__"
 | 
						|
    "__VA_ARGS__" "__VA_OPT__"))
 | 
						|
 | 
						|
(attribute_specifier
 | 
						|
  (argument_list
 | 
						|
    (identifier) @variable.builtin))
 | 
						|
 | 
						|
(attribute_specifier
 | 
						|
  (argument_list
 | 
						|
    (call_expression
 | 
						|
      function: (identifier) @variable.builtin)))
 | 
						|
 | 
						|
((call_expression
 | 
						|
  function: (identifier) @function.builtin)
 | 
						|
  (#lua-match? @function.builtin "^__builtin_"))
 | 
						|
 | 
						|
((call_expression
 | 
						|
  function: (identifier) @function.builtin)
 | 
						|
  (#has-ancestor? @function.builtin attribute_specifier))
 | 
						|
 | 
						|
; Preproc def / undef
 | 
						|
(preproc_def
 | 
						|
  name: (_) @constant)
 | 
						|
 | 
						|
(preproc_call
 | 
						|
  directive: (preproc_directive) @_u
 | 
						|
  argument: (_) @constant
 | 
						|
  (#eq? @_u "#undef"))
 | 
						|
 | 
						|
(call_expression
 | 
						|
  function: (identifier) @function.call)
 | 
						|
 | 
						|
(call_expression
 | 
						|
  function: (field_expression
 | 
						|
    field: (field_identifier) @function.call))
 | 
						|
 | 
						|
(function_declarator
 | 
						|
  declarator: (identifier) @function)
 | 
						|
 | 
						|
(function_declarator
 | 
						|
  declarator: (parenthesized_declarator
 | 
						|
    (pointer_declarator
 | 
						|
      declarator: (field_identifier) @function)))
 | 
						|
 | 
						|
(preproc_function_def
 | 
						|
  name: (identifier) @function.macro)
 | 
						|
 | 
						|
(comment) @comment @spell
 | 
						|
 | 
						|
((comment) @comment.documentation
 | 
						|
  (#lua-match? @comment.documentation "^/[*][*][^*].*[*]/$"))
 | 
						|
 | 
						|
; Parameters
 | 
						|
(parameter_declaration
 | 
						|
  declarator: (identifier) @variable.parameter)
 | 
						|
 | 
						|
(parameter_declaration
 | 
						|
  declarator: (array_declarator) @variable.parameter)
 | 
						|
 | 
						|
(parameter_declaration
 | 
						|
  declarator: (pointer_declarator) @variable.parameter)
 | 
						|
 | 
						|
; K&R functions
 | 
						|
; To enable support for K&R functions,
 | 
						|
; add the following lines to your own query config and uncomment them.
 | 
						|
; They are commented out as they'll conflict with C++
 | 
						|
; Note that you'll need to have `; extends` at the top of your query file.
 | 
						|
;
 | 
						|
; (parameter_list (identifier) @variable.parameter)
 | 
						|
;
 | 
						|
; (function_definition
 | 
						|
;   declarator: _
 | 
						|
;   (declaration
 | 
						|
;     declarator: (identifier) @variable.parameter))
 | 
						|
;
 | 
						|
; (function_definition
 | 
						|
;   declarator: _
 | 
						|
;   (declaration
 | 
						|
;     declarator: (array_declarator) @variable.parameter))
 | 
						|
;
 | 
						|
; (function_definition
 | 
						|
;   declarator: _
 | 
						|
;   (declaration
 | 
						|
;     declarator: (pointer_declarator) @variable.parameter))
 | 
						|
(preproc_params
 | 
						|
  (identifier) @variable.parameter)
 | 
						|
 | 
						|
[
 | 
						|
  "__attribute__"
 | 
						|
  "__declspec"
 | 
						|
  "__based"
 | 
						|
  "__cdecl"
 | 
						|
  "__clrcall"
 | 
						|
  "__stdcall"
 | 
						|
  "__fastcall"
 | 
						|
  "__thiscall"
 | 
						|
  "__vectorcall"
 | 
						|
  (ms_pointer_modifier)
 | 
						|
  (attribute_declaration)
 | 
						|
] @attribute
 |