From 40670af9806e2bc5be820a18a50b4ffcd14f40fb Mon Sep 17 00:00:00 2001 From: Amaan Qureshi Date: Wed, 22 Mar 2023 05:24:56 -0400 Subject: feat: add Bass --- queries/bass/folds.scm | 5 ++ queries/bass/highlights.scm | 109 ++++++++++++++++++++++++++++++++++++++++++++ queries/bass/indents.scm | 22 +++++++++ queries/bass/injections.scm | 1 + queries/bass/locals.scm | 25 ++++++++++ 5 files changed, 162 insertions(+) create mode 100644 queries/bass/folds.scm create mode 100644 queries/bass/highlights.scm create mode 100644 queries/bass/indents.scm create mode 100644 queries/bass/injections.scm create mode 100644 queries/bass/locals.scm (limited to 'queries') diff --git a/queries/bass/folds.scm b/queries/bass/folds.scm new file mode 100644 index 000000000..d99e0c1ac --- /dev/null +++ b/queries/bass/folds.scm @@ -0,0 +1,5 @@ +[ + (list) + (scope) + (cons) +] @fold diff --git a/queries/bass/highlights.scm b/queries/bass/highlights.scm new file mode 100644 index 000000000..296443d52 --- /dev/null +++ b/queries/bass/highlights.scm @@ -0,0 +1,109 @@ +;; Variables + +(list (symbol) @variable) + +(cons (symbol) @variable) + +(scope (symbol) @variable) + +(symbind (symbol) @variable) + +;; Constants + +((symbol) @constant + (#lua-match? @constant "^_*[A-Z][A-Z0-9_]*$")) + +;; Functions + +(list + . (symbol) @function) + +;; Namespaces + +(symbind + (symbol) @namespace + . (keyword)) + +;; Includes + +((symbol) @include + (#any-of? @include "use" "import" "load")) + +;; Keywords + +((symbol) @keyword + (#any-of? @keyword "do" "doc")) + +;; Special Functions + +; Keywords construct a symbol + +(keyword) @constructor + +((list + . (symbol) @keyword.function + . (symbol) @function + (symbol)? @parameter) + (#any-of? @keyword.function "def" "defop" "defn" "fn")) + +((cons + . (symbol) @keyword.function + . (symbol) @function + (symbol)? @parameter) + (#any-of? @keyword.function "def" "defop" "defn" "fn")) + +((symbol) @function.builtin + (#any-of? @function.builtin "dump" "mkfs" "json" "log" "error" "now" "cons" "wrap" "unwrap" "eval" "make-scope" "bind" "meta" "with-meta" "null?" "ignore?" "boolean?" "number?" "string?" "symbol?" "scope?" "sink?" "source?" "list?" "pair?" "applicative?" "operative?" "combiner?" "path?" "empty?" "thunk?" "+" "*" "quot" "-" "max" "min" "=" ">" ">=" "<" "<=" "list->source" "across" "emit" "next" "reduce-kv" "assoc" "symbol->string" "string->symbol" "str" "substring" "trim" "scope->list" "string->fs-path" "string->cmd-path" "string->dir" "subpath" "path-name" "path-stem" "with-image" "with-dir" "with-args" "with-cmd" "with-stdin" "with-env" "with-insecure" "with-label" "with-port" "with-tls" "with-mount" "thunk-cmd" "thunk-args" "resolve" "start" "addr" "wait" "read" "cache-dir" "binds?" "recall-memo" "store-memo" "mask" "list" "list*" "first" "rest" "length" "second" "third" "map" "map-pairs" "foldr" "foldl" "append" "filter" "conj" "list->scope" "merge" "apply" "id" "always" "vals" "keys" "memo" "succeeds?" "run" "last" "take" "take-all" "insecure!" "from" "cd" "wrap-cmd" "mkfile" "path-base" "not")) + +((symbol) @function.macro + (#any-of? @function.macro "op" "current-scope" "quote" "let" "provide" "module" "or" "and" "curryfn" "for" "$" "linux")) + +;; Conditionals + +((symbol) @conditional + (#any-of? @conditional "if" "case" "cond" "when")) + +;; Repeats + +((symbol) @repeat + (#any-of? @repeat "each")) + +;; Operators + +((symbol) @operator (#any-of? @operator "&" "*" "+" "-" "<" "<=" "=" ">" ">=")) + +;; Punctuation + +[ "(" ")" ] @punctuation.bracket + +[ "{" "}" ] @punctuation.bracket + +[ "[" "]" ] @punctuation.bracket + +((symbol) @punctuation.delimiter + (#eq? @punctuation.delimiter "->")) + +;; Literals + +(string) @string + +(escape_sequence) @string.escape + +(path) @text.uri @string.special + +(number) @number + +(boolean) @boolean + +[ + (ignore) + (null) +] @constant.builtin + +[ + "^" +] @character.special + +;; Comments + +(comment) @comment @spell diff --git a/queries/bass/indents.scm b/queries/bass/indents.scm new file mode 100644 index 000000000..f1f4e0ecf --- /dev/null +++ b/queries/bass/indents.scm @@ -0,0 +1,22 @@ +[ + (list) + (scope) + (cons) +] @indent + +[ + ")" + "}" + "]" +] @indent_end + +[ "(" ")" ] @branch + +[ "{" "}" ] @branch + +[ "[" "]" ] @branch + +[ + (ERROR) + (comment) +] @auto diff --git a/queries/bass/injections.scm b/queries/bass/injections.scm new file mode 100644 index 000000000..4bb7d675d --- /dev/null +++ b/queries/bass/injections.scm @@ -0,0 +1 @@ +(comment) @comment diff --git a/queries/bass/locals.scm b/queries/bass/locals.scm new file mode 100644 index 000000000..5a94e7532 --- /dev/null +++ b/queries/bass/locals.scm @@ -0,0 +1,25 @@ +; Scopes + +[ + (list) + (scope) + (cons) +] @scope + +; References + +(symbol) @reference + +; Definitions + +((list + . (symbol) @_fnkw + . (symbol) @definition.function + (symbol)? @definition.parameter) + (#any-of? @_fnkw "def" "defop" "defn" "fn")) + +((cons + . (symbol) @_fnkw + . (symbol) @definition.function + (symbol)? @definition.parameter) + (#any-of? @_fnkw "def" "defop" "defn" "fn")) -- cgit v1.2.3-70-g09d2