mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-13 00:40:06 -04:00
Add OpenFOAM parser
This commit is contained in:
parent
50fee51d35
commit
16e77495c4
9 changed files with 131 additions and 0 deletions
|
|
@ -178,6 +178,7 @@ We are looking for maintainers to add more parsers and to write query files for
|
||||||
- [x] [erlang](https://github.com/AbstractMachinesLab/tree-sitter-erlang) (maintained by @ostera)
|
- [x] [erlang](https://github.com/AbstractMachinesLab/tree-sitter-erlang) (maintained by @ostera)
|
||||||
- [x] [fennel](https://github.com/travonted/tree-sitter-fennel) (maintained by @TravonteD)
|
- [x] [fennel](https://github.com/travonted/tree-sitter-fennel) (maintained by @TravonteD)
|
||||||
- [x] [fish](https://github.com/ram02z/tree-sitter-fish) (maintained by @ram02z)
|
- [x] [fish](https://github.com/ram02z/tree-sitter-fish) (maintained by @ram02z)
|
||||||
|
- [x] [foam](https://github.com/FoamScience/tree-sitter-foam) (maintained by @FoamScience)
|
||||||
- [ ] [fortran](https://github.com/stadelmanma/tree-sitter-fortran)
|
- [ ] [fortran](https://github.com/stadelmanma/tree-sitter-fortran)
|
||||||
- [x] [fusion](https://gitlab.com/jirgn/tree-sitter-fusion.git) (maintained by @jirgn)
|
- [x] [fusion](https://gitlab.com/jirgn/tree-sitter-fusion.git) (maintained by @jirgn)
|
||||||
- [x] [Godot (gdscript)](https://github.com/PrestonKnopp/tree-sitter-gdscript) (maintained by @Shatur95)
|
- [x] [Godot (gdscript)](https://github.com/PrestonKnopp/tree-sitter-gdscript) (maintained by @Shatur95)
|
||||||
|
|
|
||||||
13
after/ftdetect/foam.vim
Normal file
13
after/ftdetect/foam.vim
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
" Last Change: 2021 Dec 13
|
||||||
|
|
||||||
|
function! s:foamFile(path)
|
||||||
|
let l:lines = getline(1, 10)
|
||||||
|
for line in lines
|
||||||
|
if match(line, 'FoamFile') >= 0
|
||||||
|
set filetype=foam
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
autocmd BufNewFile,BufRead * call s:foamFile(expand("%"))
|
||||||
|
autocmd FileType cpp call s:foamFile(expand("%"))
|
||||||
|
|
@ -846,6 +846,21 @@ list.rasi = {
|
||||||
maintainers = { "@Fymyte" },
|
maintainers = { "@Fymyte" },
|
||||||
}
|
}
|
||||||
|
|
||||||
|
list.foam = {
|
||||||
|
install_info = {
|
||||||
|
url = "https://github.com/FoamScience/tree-sitter-foam",
|
||||||
|
branch = "master",
|
||||||
|
files = {"src/parser.c", "src/scanner.cc"},
|
||||||
|
generate_requires_npm = true,
|
||||||
|
},
|
||||||
|
maintainers = { "@FoamScience" },
|
||||||
|
filetype = "foam",
|
||||||
|
used_by = {"OpenFOAM"},
|
||||||
|
-- Queries might change over time on the grammar's side
|
||||||
|
-- Otherwise everything runs fine
|
||||||
|
experimental = true,
|
||||||
|
}
|
||||||
|
|
||||||
local M = {
|
local M = {
|
||||||
list = list,
|
list = list,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
7
queries/foam/folds.scm
Normal file
7
queries/foam/folds.scm
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
[
|
||||||
|
(comment)
|
||||||
|
(list)
|
||||||
|
(dict_core)
|
||||||
|
] @fold
|
||||||
|
|
||||||
|
(code (code_body)* @fold)
|
||||||
61
queries/foam/highlights.scm
Normal file
61
queries/foam/highlights.scm
Normal file
|
|
@ -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)$")
|
||||||
|
)
|
||||||
11
queries/foam/indents.scm
Normal file
11
queries/foam/indents.scm
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
[
|
||||||
|
"{"
|
||||||
|
"}"
|
||||||
|
] @branch
|
||||||
|
|
||||||
|
[(dict) (key_value)] @indent
|
||||||
|
|
||||||
|
|
||||||
|
[
|
||||||
|
(comment)
|
||||||
|
] @ignore
|
||||||
9
queries/foam/injections.scm
Normal file
9
queries/foam/injections.scm
Normal file
|
|
@ -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)
|
||||||
|
|
||||||
6
queries/foam/locals.scm
Normal file
6
queries/foam/locals.scm
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
(dict) @scope
|
||||||
|
|
||||||
|
(dict key: (_) @definition.type)
|
||||||
|
|
||||||
|
(key_value keyword: (_) @definition.parameter)
|
||||||
|
(key_value value: (macro (identifier)*)* @reference)
|
||||||
8
queries/foam/textobjects.scm
Normal file
8
queries/foam/textobjects.scm
Normal file
|
|
@ -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
|
||||||
Loading…
Add table
Add a link
Reference in a new issue