diff options
| author | Elwardi <elwardifadeli@gmail.com> | 2021-12-14 13:45:56 +0100 |
|---|---|---|
| committer | Stephan Seitz <stephan.seitz@fau.de> | 2022-01-08 13:20:52 +0100 |
| commit | 16e77495c45a2e3794af72f09de717f81ea418a2 (patch) | |
| tree | f1a295c58ae112e0d2b28b31558857add5c7472b /queries/foam | |
| parent | Improve Haskell highlighting (diff) | |
| download | nvim-treesitter-16e77495c45a2e3794af72f09de717f81ea418a2.tar nvim-treesitter-16e77495c45a2e3794af72f09de717f81ea418a2.tar.gz nvim-treesitter-16e77495c45a2e3794af72f09de717f81ea418a2.tar.bz2 nvim-treesitter-16e77495c45a2e3794af72f09de717f81ea418a2.tar.lz nvim-treesitter-16e77495c45a2e3794af72f09de717f81ea418a2.tar.xz nvim-treesitter-16e77495c45a2e3794af72f09de717f81ea418a2.tar.zst nvim-treesitter-16e77495c45a2e3794af72f09de717f81ea418a2.zip | |
Add OpenFOAM parser
Diffstat (limited to 'queries/foam')
| -rw-r--r-- | queries/foam/folds.scm | 7 | ||||
| -rw-r--r-- | queries/foam/highlights.scm | 61 | ||||
| -rw-r--r-- | queries/foam/indents.scm | 11 | ||||
| -rw-r--r-- | queries/foam/injections.scm | 9 | ||||
| -rw-r--r-- | queries/foam/locals.scm | 6 | ||||
| -rw-r--r-- | queries/foam/textobjects.scm | 8 |
6 files changed, 102 insertions, 0 deletions
diff --git a/queries/foam/folds.scm b/queries/foam/folds.scm new file mode 100644 index 000000000..2e499c2e2 --- /dev/null +++ b/queries/foam/folds.scm @@ -0,0 +1,7 @@ +[ + (comment) + (list) + (dict_core) +] @fold + +(code (code_body)* @fold) diff --git a/queries/foam/highlights.scm b/queries/foam/highlights.scm new file mode 100644 index 000000000..ea895cf9b --- /dev/null +++ b/queries/foam/highlights.scm @@ -0,0 +1,61 @@ +;; Comments +(comment) @comment + +;; Generic Key-value pairs and dictionary keywords +(key_value + keyword: (identifier) @function +) +(dict + key: (identifier) @type +) + +;; Macros +(macro + "$" @conditional + (prev_scope)* @conditional + (identifier)* @namespace +) + + +;; Directives +"#" @conditional +(preproc_call + directive: (identifier)* @conditional + argument: (identifier)* @namespace +) +( + (preproc_call + argument: (identifier)* @namespace + ) @conditional + (#match? @conditional "ifeq") +) +( + (preproc_call) @conditional + (#match? @conditional "(else|endif)") +) + +;; Literal numbers and strings +(number_literal) @float +(string_literal) @string +(escape_sequence) @escape + +;; Treat [m^2 s^-2] the same as if it was put in numbers format +(dimensions dimension: (identifier) @float) + +;; Punctuation +[ + "(" + ")" + "[" + "]" + "{" + "}" + "#{" + "#}" + ";" +] @punctuation + +;; Special identifiers +([(identifier) "on" "off" "true" "false" "yes" "no"] @attribute +(#match? @attribute "^(uniform|non-uniform|and|or|on|off|true|false|yes|no)$") +) diff --git a/queries/foam/indents.scm b/queries/foam/indents.scm new file mode 100644 index 000000000..033700c17 --- /dev/null +++ b/queries/foam/indents.scm @@ -0,0 +1,11 @@ +[ + "{" + "}" +] @branch + +[(dict) (key_value)] @indent + + +[ + (comment) +] @ignore diff --git a/queries/foam/injections.scm b/queries/foam/injections.scm new file mode 100644 index 000000000..08d10721c --- /dev/null +++ b/queries/foam/injections.scm @@ -0,0 +1,9 @@ +;; Pass code blocks to Cpp highlighter +(code (code_body) @cpp) + +;; Pass identifiers to Go highlighter (Cheating I know) +;;((identifier) @lua) + +;; Highlight regex syntax inside literal strings +((string_literal) @regex) + diff --git a/queries/foam/locals.scm b/queries/foam/locals.scm new file mode 100644 index 000000000..2abe743dd --- /dev/null +++ b/queries/foam/locals.scm @@ -0,0 +1,6 @@ +(dict) @scope + +(dict key: (_) @definition.type) + +(key_value keyword: (_) @definition.parameter) +(key_value value: (macro (identifier)*)* @reference) diff --git a/queries/foam/textobjects.scm b/queries/foam/textobjects.scm new file mode 100644 index 000000000..6dfab06f7 --- /dev/null +++ b/queries/foam/textobjects.scm @@ -0,0 +1,8 @@ +(dict) @class.outer +((dict_core) @class.inner) +((key_value value: _? @_start (_)* _? @parameter.inner) + (#make-range! "function.inner" @_start @parameter.inner)) @function.outer +(code (_)* @class.inner) @class.outer +((comment) @_start ((comment)+) @_end + (#make-range! "comment.outer" @_start @_end)) +(comment) @comment.inner |
