aboutsummaryrefslogtreecommitdiff
path: root/runtime/queries/elixir
diff options
context:
space:
mode:
authorCorey Powell2021-06-01 19:46:31 +0000
committerCorey Powell2021-06-02 02:59:16 +0000
commitca042a4bde48be12734aa832e91c3cb3a9e6a931 (patch)
tree96cb9bd2c2c3bff2eb9032a67ee4548f62b77a83 /runtime/queries/elixir
parent67b1cd32c75f5772f6b9ed2922313eb73167f40a (diff)
Added elixir syntax
Using custom fork for now to get around generating the source files
Diffstat (limited to 'runtime/queries/elixir')
-rw-r--r--runtime/queries/elixir/highlights.scm146
1 files changed, 146 insertions, 0 deletions
diff --git a/runtime/queries/elixir/highlights.scm b/runtime/queries/elixir/highlights.scm
new file mode 100644
index 00000000..b9ec0210
--- /dev/null
+++ b/runtime/queries/elixir/highlights.scm
@@ -0,0 +1,146 @@
+["when" "and" "or" "not in" "not" "in" "fn" "do" "end" "catch" "rescue" "after" "else"] @keyword
+
+[(true) (false) (nil)] @constant.builtin
+
+(keyword
+ [(keyword_literal)
+ ":"] @tag)
+
+(keyword
+ (keyword_string
+ [(string_start)
+ (string_content)
+ (string_end)] @tag))
+
+[(atom_literal)
+ (atom_start)
+ (atom_content)
+ (atom_end)] @tag
+
+(comment) @comment
+
+(escape_sequence) @escape
+
+(call function: (function_identifier) @keyword
+ (#match? @keyword "^(defmodule|defexception|defp|def|with|case|cond|raise|import|require|use|defmacrop|defmacro|defguardp|defguard|defdelegate|defstruct|alias|defimpl|defprotocol|defoverridable|receive|if|for|try|throw|unless|reraise|super|quote|unquote|unquote_splicing)$"))
+
+(call function: (function_identifier) @keyword
+ [(call
+ function: (function_identifier) @function
+ (arguments
+ [(identifier) @variable.parameter
+ (_ (identifier) @variable.parameter)
+ (_ (_ (identifier) @variable.parameter))
+ (_ (_ (_ (identifier) @variable.parameter)))
+ (_ (_ (_ (_ (identifier) @variable.parameter))))
+ (_ (_ (_ (_ (_ (identifier) @variable.parameter)))))]))
+ (binary_op
+ left:
+ (call
+ function: (function_identifier) @function
+ (arguments
+ [(identifier) @variable.parameter
+ (_ (identifier) @variable.parameter)
+ (_ (_ (identifier) @variable.parameter))
+ (_ (_ (_ (identifier) @variable.parameter)))
+ (_ (_ (_ (_ (identifier) @variable.parameter))))
+ (_ (_ (_ (_ (_ (identifier) @variable.parameter)))))]))
+ operator: "when")
+ (binary_op
+ left: (identifier) @variable.parameter
+ operator: _ @function
+ right: (identifier) @variable.parameter)]
+ (#match? @keyword "^(defp|def|defmacrop|defmacro|defguardp|defguard|defdelegate)$")
+ (#match? @variable.parameter "^[^_]"))
+
+(call (function_identifier) @keyword
+ [(call
+ function: (function_identifier) @function)
+ (identifier) @function
+ (binary_op
+ left:
+ [(call
+ function: (function_identifier) @function)
+ (identifier) @function]
+ operator: "when")]
+ (#match? @keyword "^(defp|def|defmacrop|defmacro|defguardp|defguard|defdelegate)$"))
+
+(anonymous_function
+ (stab_expression
+ left: (bare_arguments
+ [(identifier) @variable.parameter
+ (_ (identifier) @variable.parameter)
+ (_ (_ (identifier) @variable.parameter))
+ (_ (_ (_ (identifier) @variable.parameter)))
+ (_ (_ (_ (_ (identifier) @variable.parameter))))
+ (_ (_ (_ (_ (_ (identifier) @variable.parameter)))))]))
+ (#match? @variable.parameter "^[^_]"))
+
+(unary_op
+ operator: "@"
+ (call (identifier) @attribute
+ (heredoc
+ [(heredoc_start)
+ (heredoc_content)
+ (heredoc_end)] @doc))
+ (#match? @attribute "^(doc|moduledoc)$"))
+
+(module) @type
+
+(unary_op
+ operator: "@" @attribute
+ [(call
+ function: (function_identifier) @attribute)
+ (identifier) @attribute])
+
+(unary_op
+ operator: _ @operator)
+
+(binary_op
+ operator: _ @operator)
+
+(heredoc
+ [(heredoc_start)
+ (heredoc_content)
+ (heredoc_end)] @string)
+
+(string
+ [(string_start)
+ (string_content)
+ (string_end)] @string)
+
+(sigil_start) @string.special
+(sigil_content) @string
+(sigil_end) @string.special
+
+(interpolation
+ "#{" @punctuation.special
+ "}" @punctuation.special)
+
+[
+ ","
+ "->"
+ "."
+] @punctuation.delimiter
+
+[
+ "("
+ ")"
+ "["
+ "]"
+ "{"
+ "}"
+ "<<"
+ ">>"
+] @punctuation.bracket
+
+[(identifier) @function.special
+ (#match? @function.special "^__.+__$")]
+
+[(remote_identifier) @function.special
+ (#match? @function.special "^__.+__$")]
+
+[(identifier) @comment
+ (#match? @comment "^_")]
+
+(ERROR) @warning