Unnamed repository; edit this file 'description' to name the repository.
Update fortran tree sitter files (#14448)
Steffen 5 months ago
parent 5bfc7bf · commit 342f2a9
-rw-r--r--languages.toml2
-rw-r--r--runtime/queries/fortran/folds.scm3
-rw-r--r--runtime/queries/fortran/highlights.scm274
-rw-r--r--runtime/queries/fortran/indents.scm6
4 files changed, 166 insertions, 119 deletions
diff --git a/languages.toml b/languages.toml
index d239e93b..70d31cc1 100644
--- a/languages.toml
+++ b/languages.toml
@@ -2700,7 +2700,7 @@ language-servers = [ "fortls" ]
[[grammar]]
name = "fortran"
-source = { git = "https://github.com/stadelmanma/tree-sitter-fortran", rev = "f0f2f100952a353e64e26b0fa710b4c296d7af13" }
+source = { git = "https://github.com/stadelmanma/tree-sitter-fortran", rev = "8334abca785db3a041292e3b3b818a82a55b238f" }
[[language]]
name = "ungrammar"
diff --git a/runtime/queries/fortran/folds.scm b/runtime/queries/fortran/folds.scm
index f62d9dd7..01e24dd6 100644
--- a/runtime/queries/fortran/folds.scm
+++ b/runtime/queries/fortran/folds.scm
@@ -7,5 +7,6 @@
(derived_type_definition)
(function)
(subroutine)
+ (module_procedure)
(interface)
-] @fold \ No newline at end of file
+] @fold
diff --git a/runtime/queries/fortran/highlights.scm b/runtime/queries/fortran/highlights.scm
index 0901a4aa..4b3c9b96 100644
--- a/runtime/queries/fortran/highlights.scm
+++ b/runtime/queries/fortran/highlights.scm
@@ -1,134 +1,167 @@
-[
- (intrinsic_type)
- "dimension"
- "intent"
- "in"
- "out"
- "inout"
- "type"
- "endtype"
- "attributes"
- "global"
- "device"
- "host"
- "grid_global"
- "pointer"
-] @keyword.storage.modifier
+(identifier) @variable
+(string_literal) @string
+(number_literal) @constant.numeric
+(boolean_literal) @constant.builtin.boolean
+(comment) @comment
[
- "contains"
- "public"
- "private"
-] @keyword.directive
+ (intrinsic_type)
+ "allocatable"
+ "attributes"
+ "device"
+ "dimension"
+ "endtype"
+ "global"
+ "grid_global"
+ "host"
+ "import"
+ "in"
+ "inout"
+ "intent"
+ "optional"
+ "out"
+ "pointer"
+ "type"
+ "value"
+ ] @keyword.storage.modifier
[
-"implicit"
-(none)
-] @attribute
+ "contains"
+ "private"
+ "public"
+ ] @keyword.directive
[
- "function"
- "endfunction"
- "endprogram"
- "subroutine"
- "endsubroutine"
-] @keyword.storage
+ (none)
+ "implicit"
+ ] @attribute
[
- "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
+ "endfunction"
+ "endprogram"
+ "endsubroutine"
+ "function"
+ "procedure"
+ "subroutine"
+ ] @keyword.function
[
- "if"
- "then"
- "else"
- "elseif"
- "endif"
- "where"
- "endwhere"
-] @keyword.control.conditional
+ (default)
+ (procedure_qualifier)
+ "abstract"
+ "bind"
+ "call"
+ "class"
+ "continue"
+ "cycle"
+ "end"
+ "endenum"
+ "endinterface"
+ "endmodule"
+ "endprocedure"
+ "endprogram"
+ "endsubmodule"
+ "enum"
+ "enumerator"
+ "equivalence"
+ "exit"
+ "extends"
+ "format"
+ "goto"
+ "include"
+ "interface"
+ "intrinsic"
+ "non_intrinsic"
+ "module"
+ "namelist"
+ "only"
+ "parameter"
+ "print"
+ "procedure"
+ "program"
+ "read"
+ "stop"
+ "submodule"
+ "use"
+ "write"
+ ] @keyword
+
+"return" @keyword.control.return
[
- "do"
- "enddo"
- "while"
- "forall"
-] @keyword.control.repeat
+ "else"
+ "elseif"
+ "elsewhere"
+ "endif"
+ "endwhere"
+ "if"
+ "then"
+ "where"
+ ] @keyword.control.conditional
[
- "*"
- "**"
- "+"
- "-"
- "/"
- "="
- "<"
- ">"
- "<="
- ">="
- "=="
- "/="
-] @operator
+ "do"
+ "enddo"
+ "forall"
+ "while"
+ ] @keyword.control.repeat
[
- "\\.and\\."
- "\\.or\\."
- "\\.lt\\."
- "\\.gt\\."
- "\\.ge\\."
- "\\.le\\."
- "\\.eq\\."
- "\\.eqv\\."
- "\\.neqv\\."
-] @keyword.operator
+ "*"
+ "+"
+ "-"
+ "/"
+ "="
+ "<"
+ ">"
+ "<="
+ ">="
+ "=="
+ "/="
+ ] @operator
-(identifier) @variable
-
- ;; Brackets
- [
- "("
- ")"
- "["
- "]"
+[
+ "\\.and\\."
+ "\\.or\\."
+ "\\.lt\\."
+ "\\.gt\\."
+ "\\.ge\\."
+ "\\.le\\."
+ "\\.eq\\."
+ "\\.eqv\\."
+ "\\.neqv\\."
+ ] @keyword.operator
+
+;; Brackets
+[
+ "("
+ ")"
+ "["
+ "]"
+ "<<<"
+ ">>>"
] @punctuation.bracket
- ;; Delimiter
- [
- "::"
- ","
- "%"
+;; Delimiter
+[
+ "::"
+ ","
+ "%"
] @punctuation.delimiter
+[
+ "defined"
+ "#define"
+ "#elif"
+ "#else"
+ "#endif"
+ "#if"
+ "#ifdef"
+ "#ifndef"
+ "#include"
+ (preproc_directive)
+] @keyword.directive
+
(parameters
(identifier) @variable.parameter)
@@ -138,26 +171,38 @@
(module_statement
(name) @namespace)
+(submodule_statement
+ (module_name) (name) @namespace)
+
(function_statement
(name) @function)
(subroutine_statement
(name) @function)
+(module_procedure_statement
+ (name) @function)
+
(end_program_statement
(name) @namespace)
(end_module_statement
(name) @namespace)
+(end_submodule_statement
+ (name) @namespace)
+
(end_function_statement
(name) @function)
(end_subroutine_statement
(name) @function)
+(end_module_procedure_statement
+ (name) @function)
+
(subroutine_call
- (name) @function)
+ (identifier) @function)
(keyword_argument
name: (identifier) @keyword)
@@ -165,8 +210,5 @@
(derived_type_member_expression
(type_member) @variable.other.member)
-(string_literal) @string
-(number_literal) @constant.numeric
-(boolean_literal) @constant.builtin.boolean
-(comment) @comment
-
+(call_expression
+ (identifier) @function)
diff --git a/runtime/queries/fortran/indents.scm b/runtime/queries/fortran/indents.scm
index daa8bac1..2248b383 100644
--- a/runtime/queries/fortran/indents.scm
+++ b/runtime/queries/fortran/indents.scm
@@ -1,7 +1,9 @@
[
(module)
+ (submodule)
(program)
(subroutine)
+ (module_procedure)
(function)
; (interface)
(if_statement)
@@ -13,8 +15,10 @@
[
(end_module_statement)
+ (end_submodule_statement)
(end_program_statement)
(end_subroutine_statement)
+ (end_module_procedure_statement)
(end_function_statement)
; (end_interface_statement)
(end_if_statement)
@@ -24,4 +28,4 @@
(end_type_statement)
(end_enum_statement)
(end_where_statement)
-] @outdent \ No newline at end of file
+] @outdent