diff options
author | Garrett D'Amore | 2022-10-20 21:54:17 +0000 |
---|---|---|
committer | GitHub | 2022-10-20 21:54:17 +0000 |
commit | 36f97b6aadec1a5c0cc61859d4f456f005983be0 (patch) | |
tree | e732a26348c6b35ca6025774a138a12e38202469 /runtime | |
parent | de607830a2e9643dfe99828b9329f533a4f31fa9 (diff) |
Add support for D (#4372)
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/queries/d/highlights.scm | 231 | ||||
-rw-r--r-- | runtime/queries/d/indents.scm | 17 | ||||
-rw-r--r-- | runtime/queries/d/injections.scm | 2 | ||||
-rw-r--r-- | runtime/queries/d/textobjects.scm | 9 |
4 files changed, 259 insertions, 0 deletions
diff --git a/runtime/queries/d/highlights.scm b/runtime/queries/d/highlights.scm new file mode 100644 index 00000000..b5db8431 --- /dev/null +++ b/runtime/queries/d/highlights.scm @@ -0,0 +1,231 @@ +; highlights.scm +; +; Highlighting queries for D code for use by Tree-Sitter. +; +; Copyright 2022 Garrett D'Amore +; +; Distributed under the MIT License. +; (See accompanying file LICENSE.txt or https://opensource.org/licenses/MIT) +; SPDX-License-Identifier: MIT + +; these are listed first, because they override keyword queries +(identity_expression (in) @operator) +(identity_expression (is) @operator) + +(storage_class) @keyword.storage + +(function_declaration (identifier) @function) + +(call_expression (identifier) @function) +(call_expression (type (identifier) @function)) + +(module_fqn) @namespace + +[ + (abstract) + (alias) + (align) + (asm) + (assert) + (auto) + (cast) + (const) + (debug) + (delete) + (deprecated) + (export) + (extern) + (final) + (immutable) + (in) + (inout) + (invariant) + (is) + (lazy) + ; "macro" - obsolete + (mixin) + (module) + (new) + (nothrow) + (out) + (override) + (package) + (pragma) + (private) + (protected) + (public) + (pure) + (ref) + (scope) + (shared) + (static) + (super) + (synchronized) + (template) + (this) + (throw) + (typeid) + (typeof) + (unittest) + (version) + (with) + (gshared) + (traits) + (vector) + (parameters_) +] @keyword + +[ + (class) + (struct) + (interface) + (union) + (enum) + (function) + (delegate) +] @keyword.storage.type + +[ + (break) + (case) + (catch) + (continue) + (do) + (default) + (finally) + (else) + (goto) + (if) + (switch) + (try) +] @keyword.control + +(return) @keyword.control.return + +(import) @keyword.control.import + +[ + (for) + (foreach) + (foreach_reverse) + (while) +] @keyword.control.repeat + +[ + (not_in) + (not_is) + "/=" + "/" + ".." + "..." + "&" + "&=" + "&&" + "|" + "|=" + "||" + "-" + "-=" + "--" + "+" + "+=" + "++" + "<" + "<=" + "<<" + "<<=" + ">" + ">=" + ">>=" + ">>>=" + ">>" + ">>>" + "!" + "!=" + "?" + "$" + "=" + "==" + "*" + "*=" + "%" + "%=" + "^" + "^=" + "^^" + "^^=" + "~" + "~=" + "@" + "=>" +] @operator + +[ + "(" + ")" + "[" + "]" +] @punctuation.bracket + +[ + ";" + "." + ":" + "," +] @punctuation.delimiter + +[ + (true) + (false) +] @constant.builtin.boolean + +(null) @constant.builtin + +(special_keyword) @constant.builtin + +(directive) @keyword.directive +(shebang) @keyword.directive + +(comment) @comment + +[ + (void) + (bool) + (byte) + (ubyte) + (char) + (short) + (ushort) + (wchar) + (dchar) + (int) + (uint) + (long) + (ulong) + (real) + (double) +] @type.builtin + +[ + (cent) + (ucent) + (ireal) + (idouble) + (ifloat) + (creal) + (double) + (cfloat) +] @warning ; these types are deprecated + +(label (identifier) @label) +(goto_statement (goto) @keyword (identifier) @label) + +(string_literal) @string +(int_literal) @constant.numeric.integer +(float_literal) @constant.numeric.float +(char_literal) @constant.character +(identifier) @variable +(at_attribute) @attribute + +; everything after __EOF_ is plain text +(end_file) @ui.text diff --git a/runtime/queries/d/indents.scm b/runtime/queries/d/indents.scm new file mode 100644 index 00000000..73ff0b82 --- /dev/null +++ b/runtime/queries/d/indents.scm @@ -0,0 +1,17 @@ +[ + (parameters) + (template_parameters) + (expression_statement) + (aggregate_body) + (function_body) + (scope_statement) + (block_statement) + (case_statement) +] @indent + +[ + (case) + (default) + "}" + "]" +] @outdent diff --git a/runtime/queries/d/injections.scm b/runtime/queries/d/injections.scm new file mode 100644 index 00000000..321c90ad --- /dev/null +++ b/runtime/queries/d/injections.scm @@ -0,0 +1,2 @@ +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/runtime/queries/d/textobjects.scm b/runtime/queries/d/textobjects.scm new file mode 100644 index 00000000..9ca07160 --- /dev/null +++ b/runtime/queries/d/textobjects.scm @@ -0,0 +1,9 @@ +(function_declaration (function_body) @function.inside) @function.around +(comment) @comment.inside +(comment)+ @comment.around +(class_declaration (aggregate_body) @class.inside) @class.around +(interface_declaration (aggregate_body) @class.inside) @class.around +(struct_declaration (aggregate_body) @class.inside) @class.around +(unittest_declaration (block_statement) @test.insid) @test.around +(parameter) @parameter.inside +(template_parameter) @parameter.inside
\ No newline at end of file |