mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-01 19:17:02 -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] [fennel](https://github.com/travonted/tree-sitter-fennel) (maintained by @TravonteD)
|
||||
- [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)
|
||||
- [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)
|
||||
|
|
|
|||
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" },
|
||||
}
|
||||
|
||||
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 = {
|
||||
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