aboutsummaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
authorAusten LeBeau2022-07-10 16:27:44 +0000
committerGitHub2022-07-10 16:27:44 +0000
commit0cb0c306183be94b9d42c3fae22b805850f87584 (patch)
tree69335d6fb5aa8cf2d593b0aaa6fa105eba3dfc1c /runtime
parente109022bfd34b9297905b9da5904f6aa2279e74f (diff)
add fortran language (#3025)
Diffstat (limited to 'runtime')
-rw-r--r--runtime/queries/fortran/folds.scm11
-rw-r--r--runtime/queries/fortran/highlights.scm171
-rw-r--r--runtime/queries/fortran/indents.scm27
3 files changed, 209 insertions, 0 deletions
diff --git a/runtime/queries/fortran/folds.scm b/runtime/queries/fortran/folds.scm
new file mode 100644
index 00000000..f62d9dd7
--- /dev/null
+++ b/runtime/queries/fortran/folds.scm
@@ -0,0 +1,11 @@
+;; by @oponkork
+[
+ (if_statement)
+ (where_statement)
+ (enum_statement)
+ (do_loop_statement)
+ (derived_type_definition)
+ (function)
+ (subroutine)
+ (interface)
+] @fold \ No newline at end of file
diff --git a/runtime/queries/fortran/highlights.scm b/runtime/queries/fortran/highlights.scm
new file mode 100644
index 00000000..90f4ecd0
--- /dev/null
+++ b/runtime/queries/fortran/highlights.scm
@@ -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
+
diff --git a/runtime/queries/fortran/indents.scm b/runtime/queries/fortran/indents.scm
new file mode 100644
index 00000000..daa8bac1
--- /dev/null
+++ b/runtime/queries/fortran/indents.scm
@@ -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 \ No newline at end of file