add fortran language (#3025)

This commit is contained in:
Austen LeBeau 2022-07-10 11:27:44 -05:00 committed by GitHub
parent e109022bfd
commit 0cb0c30618
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 224 additions and 0 deletions

View file

@ -22,6 +22,7 @@
| erb | ✓ | | | |
| erlang | ✓ | ✓ | | `erlang_ls` |
| fish | ✓ | ✓ | ✓ | |
| fortran | ✓ | | ✓ | `fortls` |
| gdscript | ✓ | | ✓ | |
| git-attributes | ✓ | | | |
| git-commit | ✓ | | | |

View file

@ -1514,3 +1514,17 @@ roots = []
comment-token = "--"
indent = { tab-width = 2, unit = " " }
language-server = { command = "idris2-lsp" }
[[language]]
name = "fortran"
scope = "source.fortran"
injection-regex = "fortran"
file-types = ["f", "for", "f90", "f95", "f03"]
roots = ["fpm.toml"]
comment-token = "!"
indent = { tab-width = 4, unit = " "}
language-server = { command = "fortls", args = ["--lowercase_intrinsics"] }
[[grammar]]
name = "fortran"
source = { git = "https://github.com/stadelmanma/tree-sitter-fortran", rev = "f0f2f100952a353e64e26b0fa710b4c296d7af13" }

View file

@ -0,0 +1,11 @@
;; by @oponkork
[
(if_statement)
(where_statement)
(enum_statement)
(do_loop_statement)
(derived_type_definition)
(function)
(subroutine)
(interface)
] @fold

View file

@ -0,0 +1,171 @@
[
(intrinsic_type)
"dimension"
"intent"
"in"
"out"
"inout"
"type"
"endtype"
"attributes"
"global"
"device"
"host"
"grid_global"
"pointer"
] @keyword.storage.modifier
[
"contains"
"public"
"private"
] @keyword.directive
[
"implicit"
(none)
] @attribute
[
"function"
"endfunction"
"endprogram"
"subroutine"
"endsubroutine"
] @keyword.storage
[
"module"
"endmodule"
"bind"
"call"
"class"
"continue"
"cycle"
"enumerator"
"equivalence"
"exit"
"format"
"goto"
"include"
"interface"
"endinterface"
"only"
"parameter"
"procedure"
"print"
"program"
"endprogram"
"read"
"return"
"result"
"stop"
"use"
"write"
"enum"
"endenum"
(default)
(procedure_qualifier)
] @keyword
[
"if"
"then"
"else"
"elseif"
"endif"
"where"
"endwhere"
] @keyword.control.conditional
[
"do"
"enddo"
"while"
"forall"
] @keyword.control.repeat
[
"*"
"**"
"+"
"-"
"/"
"="
"<"
">"
"<="
">="
"=="
"/="
] @operator
[
"\\.and\\."
"\\.or\\."
"\\.lt\\."
"\\.gt\\."
"\\.ge\\."
"\\.le\\."
"\\.eq\\."
"\\.eqv\\."
"\\.neqv\\."
] @keyword.operator
;; Brackets
[
"("
")"
"["
"]"
] @punctuation.bracket
;; Delimiter
[
"::"
","
"%"
] @punctuation.delimiter
(parameters
(identifier) @variable.parameter)
(program_statement
(name) @namespace)
(module_statement
(name) @namespace)
(function_statement
(name) @function)
(subroutine_statement
(name) @function)
(end_program_statement
(name) @namespace)
(end_module_statement
(name) @namespace)
(end_function_statement
(name) @function)
(end_subroutine_statement
(name) @function)
(subroutine_call
(name) @function)
(keyword_argument
name: (identifier) @keyword)
(derived_type_member_expression
(type_member) @variable.other.member)
(identifier) @variable
(string_literal) @string
(number_literal) @constant.numeric
(boolean_literal) @constant.builtin.boolean
(comment) @comment

View file

@ -0,0 +1,27 @@
[
(module)
(program)
(subroutine)
(function)
; (interface)
(if_statement)
(do_loop_statement)
(where_statement)
(derived_type_definition)
(enum)
] @indent
[
(end_module_statement)
(end_program_statement)
(end_subroutine_statement)
(end_function_statement)
; (end_interface_statement)
(end_if_statement)
(end_do_loop_statement)
(else_clause)
(elseif_clause)
(end_type_statement)
(end_enum_statement)
(end_where_statement)
] @outdent