diff options
Diffstat (limited to 'runtime/queries/sourcepawn')
| -rw-r--r-- | runtime/queries/sourcepawn/highlights.scm | 303 | ||||
| -rw-r--r-- | runtime/queries/sourcepawn/injections.scm | 3 | ||||
| -rw-r--r-- | runtime/queries/sourcepawn/locals.scm | 19 |
3 files changed, 325 insertions, 0 deletions
diff --git a/runtime/queries/sourcepawn/highlights.scm b/runtime/queries/sourcepawn/highlights.scm new file mode 100644 index 000000000..21cbb9733 --- /dev/null +++ b/runtime/queries/sourcepawn/highlights.scm @@ -0,0 +1,303 @@ +(identifier) @variable + +; Assume all-caps names are constants +((identifier) @constant + (#lua-match? @constant "^[A-Z][A-Z0-9_]+$")) + +; Function definitions/declarations +(function_definition + name: (identifier) @function) + +(function_declaration + name: (identifier) @function) + +(parameter_declaration + name: (identifier) @variable.parameter) + +; Methods / Properties +(field_access + field: (identifier) @variable.member) + +; Function calls +(call_expression + function: (identifier) @function) + +(call_expression + function: (field_access + field: (identifier) @function.method.call)) + +; Types +[ + (builtin_type) + (any_type) +] @type.builtin + +(type + (identifier) @type) + +; Variables +(variable_declaration + name: (identifier) @variable) + +(old_variable_declaration + name: (identifier) @variable) + +[ + (system_lib_string) + (string_literal) +] @string + +; Preprocessor +[ + "#include" + "#tryinclude" +] @keyword.import + +[ + (preproc_assert) + (preproc_pragma) + (preproc_if) + (preproc_else) + (preproc_elseif) + (preproc_endinput) + (preproc_endif) + (preproc_error) + (preproc_warning) +] @keyword.directive + +[ + "#define" + "#undef" +] @keyword.directive.define + +(macro_param) @variable.parameter + +(preproc_define + name: (identifier) @constant) + +(preproc_macro + name: (identifier) @function.macro) + +(preproc_undefine + name: (identifier) @constant) + +; Expressions +(view_as) @function.builtin + +(sizeof_expression) @function.macro + +[ + (this) + ; https://github.com/alliedmodders/sourcemod/blob/5c0ae11a4619e9cba93478683c7737253ea93ba6/plugins/include/handles.inc#L78 + (hardcoded_symbol) +] @variable.builtin + +; Comments +(comment) @comment @spell + +; General +(parameter_declaration + defaultValue: (identifier) @constant) + +[ + (fixed_dimension) + (dimension) +] @punctuation.bracket + +(escape_sequence) @string.escape + +; Constructors +(new_expression + class: (identifier) @type + arguments: (call_arguments) @constructor) + +; Methodmaps +(methodmap + name: (identifier) @type) + +(methodmap + inherits: (identifier) @type) + +(methodmap_method_constructor + name: (identifier) @constructor) + +(methodmap_method + name: (identifier) @function.method) + +(methodmap_native + name: (identifier) @function.method) + +(methodmap_property + name: (identifier) @property) + +[ + (methodmap_property_getter) + (methodmap_property_setter) +] @function.method + +; Enum structs +(enum_struct + name: (identifier) @type) + +(enum_struct_field + name: (identifier) @variable.member) + +(enum_struct_method + name: (identifier) @function.method) + +; Non-type Keywords +(variable_storage_class) @keyword.modifier + +(visibility) @keyword.modifier + +(assertion) @function.builtin + +(function_declaration_kind) @keyword.function + +[ + "new" + "delete" +] @keyword.operator + +[ + "." + "," +] @punctuation.delimiter + +; Operators +[ + "+" + "-" + "*" + "/" + "%" + "++" + "--" + "=" + "+=" + "-=" + "*=" + "/=" + "==" + "!=" + "<" + ">" + ">=" + "<=" + "!" + "&&" + "||" + "&" + "|" + "~" + "^" + "<<" + ">>" + ">>>" + "|=" + "&=" + "^=" + "~=" + "<<=" + ">>=" + "..." + (ignore_argument) + (scope_access) + (rest_operator) +] @operator + +; public Plugin myinfo +(struct_declaration + name: (identifier) @variable.builtin) + +; Typedef/Typedef +(typedef + name: (identifier) @type) + +(functag + name: (identifier) @type) + +(funcenum + name: (identifier) @type) + +(typeset + name: (identifier) @type) + +(typedef_expression) @keyword.function ; function void(int x) + +; Enums +(enum + name: (identifier) @type) + +(enum_entry + name: (identifier) @constant) + +(enum_entry + value: (_) @constant) + +; Literals +(int_literal) @number + +(char_literal) @character + +(float_literal) @number.float + +(string_literal) @string + +(array_literal) @punctuation.bracket + +(bool_literal) @boolean + +(null) @constant.builtin + +((identifier) @constant.builtin + (#eq? @constant.builtin "INVALID_HANDLE")) + +; Keywords +"return" @keyword.return + +[ + "if" + "else" + "case" + "default" + "switch" +] @keyword.conditional + +[ + "do" + "while" + "for" + "continue" + "break" +] @keyword.repeat + +[ + "__nullable__" + "defined" + "delete" + "functag" + "get" + "methodmap" + "new" + "property" + "public" + "set" + "typeset" + "void" +] @keyword + +[ + "enum" + "funcenum" + "struct" + "typedef" +] @keyword.type + +[ + "const" + "native" + "static" + "stock" + "forward" +] @keyword.modifier diff --git a/runtime/queries/sourcepawn/injections.scm b/runtime/queries/sourcepawn/injections.scm new file mode 100644 index 000000000..c579ffad8 --- /dev/null +++ b/runtime/queries/sourcepawn/injections.scm @@ -0,0 +1,3 @@ +; Parse JSDoc annotations in comments +((comment) @injection.content + (#set! injection.language "jsdoc")) diff --git a/runtime/queries/sourcepawn/locals.scm b/runtime/queries/sourcepawn/locals.scm new file mode 100644 index 000000000..39d6fb516 --- /dev/null +++ b/runtime/queries/sourcepawn/locals.scm @@ -0,0 +1,19 @@ +[ + (function_definition) + (alias_declaration) + (enum_struct_method) + (methodmap_method) + (methodmap_method_constructor) + (methodmap_method_destructor) + (methodmap_property_method) +] @local.scope + +; Definitions +(variable_declaration + name: (identifier) @local.definition) + +(old_variable_declaration + name: (identifier) @local.definition) + +; References +(identifier) @local.reference |
