diff options
Diffstat (limited to 'runtime/queries/foam')
| -rw-r--r-- | runtime/queries/foam/folds.scm | 8 | ||||
| -rw-r--r-- | runtime/queries/foam/highlights.scm | 64 | ||||
| -rw-r--r-- | runtime/queries/foam/indents.scm | 11 | ||||
| -rw-r--r-- | runtime/queries/foam/injections.scm | 23 | ||||
| -rw-r--r-- | runtime/queries/foam/locals.scm | 11 |
5 files changed, 117 insertions, 0 deletions
diff --git a/runtime/queries/foam/folds.scm b/runtime/queries/foam/folds.scm new file mode 100644 index 000000000..e05d0dbaa --- /dev/null +++ b/runtime/queries/foam/folds.scm @@ -0,0 +1,8 @@ +[ + (comment) + (list) + (dict_core) +] @fold + +(code + (code_body)* @fold) diff --git a/runtime/queries/foam/highlights.scm b/runtime/queries/foam/highlights.scm new file mode 100644 index 000000000..9c96f196e --- /dev/null +++ b/runtime/queries/foam/highlights.scm @@ -0,0 +1,64 @@ +; Comments +(comment) @comment @spell + +; Generic Key-value pairs and dictionary keywords +(key_value + keyword: (identifier) @function) + +(dict + key: (identifier) @type) + +; Macros +(macro + "$" @keyword.conditional + (prev_scope)* @keyword.conditional + (identifier)* @module) + +; Directives +"#" @keyword.conditional + +(preproc_call + directive: (identifier)* @keyword.conditional + argument: (identifier)* @module) + +((preproc_call + argument: (identifier)* @module) @keyword.conditional + (#eq? @keyword.conditional "ifeq")) + +((preproc_call) @keyword.conditional + (#any-of? @keyword.conditional "else" "endif")) + +; Literals +(number_literal) @number.float + +(string_literal) @string + +(escape_sequence) @string.escape + +(boolean) @boolean + +; Treat [m^2 s^-2] the same as if it was put in numbers format +(dimensions + dimension: (identifier) @number.float) + +; Punctuation +[ + "(" + ")" + "[" + "]" + "{" + "}" + "#{" + "#}" + "|-" + "-|" + "<!--(" + ")-->" + "$$" +] @punctuation.bracket + +";" @punctuation.delimiter + +((identifier) @constant.builtin + (#any-of? @constant.builtin "uniform" "non-uniform" "and" "or")) diff --git a/runtime/queries/foam/indents.scm b/runtime/queries/foam/indents.scm new file mode 100644 index 000000000..be02b80ed --- /dev/null +++ b/runtime/queries/foam/indents.scm @@ -0,0 +1,11 @@ +[ + "{" + "}" +] @indent.branch + +[ + (dict) + (key_value) +] @indent.begin + +(comment) @indent.ignore diff --git a/runtime/queries/foam/injections.scm b/runtime/queries/foam/injections.scm new file mode 100644 index 000000000..b9f8f838f --- /dev/null +++ b/runtime/queries/foam/injections.scm @@ -0,0 +1,23 @@ +((comment) @injection.content + (#set! injection.language "comment")) + +; Pass code blocks to Cpp highlighter +(code + (code_body) @injection.content + (#set! injection.language "cpp")) + +; Pass identifiers to Go highlighter (Cheating I know) +; ((identifier) @injection.content +; (#set! injection.language "lua") +; Highlight regex syntax inside literal strings +((string_literal) @injection.content + (#set! injection.language "regex")) + +; Highlight PyFoam syntax as Python statements +(pyfoam_variable + code_body: (_) @injection.content + (#set! injection.language "python")) + +(pyfoam_expression + code_body: (_) @injection.content + (#set! injection.language "python")) diff --git a/runtime/queries/foam/locals.scm b/runtime/queries/foam/locals.scm new file mode 100644 index 000000000..f3f689081 --- /dev/null +++ b/runtime/queries/foam/locals.scm @@ -0,0 +1,11 @@ +(dict) @local.scope + +(dict + key: (_) @local.definition.type) + +(key_value + keyword: (_) @local.definition.parameter) + +(key_value + value: (macro + (identifier)*)* @local.reference) |
