]> git.lizzy.rs Git - micro.git/blobdiff - runtime/syntax/go.yaml
Merge branch 'python-highlight-zero' of https://github.com/a11ce/micro into a11ce...
[micro.git] / runtime / syntax / go.yaml
index 3103e60a143af903b6c743788009494b51bc5dc4..3885c7b17d952f88d53d26ff1ef3773243ec0f5b 100644 (file)
@@ -1,52 +1,62 @@
 filetype: go
 
 detect:
-  filename: "\\.go$"
+    filename: "\\.go$"
 
 rules:
-    - statement: "\\b(break|case|continue|default|else|for|go|goto|if|range|return|switch)\\b"
-    - statement: "\\b(package|import|const|var|type|struct|func|go|defer|iota)\\b"
-    - statement: "[-+/*=<>!~%&|^]|:="
-    - identifier: "[a-zA-Z0-9]*\\("
+    # Conditionals and control flow
+    - special: "\\b(break|case|continue|default|go|goto|range|return|println|fallthrough)\\b"
+    - statement: "\\b(else|for|if|switch|select)\\b"
+    - preproc: "\\b(package|import|const|var|type|struct|func|defer|iota|make|new|copy|len|cap|panic|append|close|delete|print|recover)\\b"
+    - symbol.operator: "[-+/*=<>!~%&|^]|:="
+
+      # Types
+    - symbol: "(,|\\.)"
     - type: "\\b(u?int(8|16|32|64)?|float(32|64)|complex(64|128))\\b"
     - type: "\\b(uintptr|byte|rune|string|interface|bool|map|chan|error)\\b"
-    - constant: "\\b(true|false|nil)\\b"
-    - statement: "(\\{|\\})"
-    - statement: "(\\(|\\))"
-    - statement: "(\\[|\\])"
-    - statement: "!"
-    - statement: ","
-    - constant.number: "\\b([0-9]+|0x[0-9a-fA-F]*)\\b"
-    - constant.specialChar: "([0-7]{3|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})"
+    - type.keyword: "\\b(struct)\\b"
+    - constant.bool: "\\b(true|false|nil)\\b"
 
-    - comment:
-        start: "//"
-        end: "$"
-        rules:
-            - todo: "(TODO|XXX|FIXME):?"
+      # Brackets
+    - symbol.brackets: "(\\{|\\})"
+    - symbol.brackets: "(\\(|\\))"
+    - symbol.brackets: "(\\[|\\])"
 
-    - comment:
-        start: "/\\*"
-        end: "\\*/"
-        rules:
-            - todo: "(TODO|XXX|FIXME):?"
+      # Numbers and strings
+    - constant.number: "\\b([0-9]+|0x[0-9a-fA-F]*)\\b|'.'"
 
     - constant.string:
         start: "\""
         end: "\""
+        skip: "\\\\."
         rules:
-            - constant.specialChar: "\\\\."
             - constant.specialChar: "%."
+            - constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]"
+            - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})"
 
     - constant.string:
         start: "'"
         end: "'"
+        skip: "\\\\."
         rules:
-            - preproc: "..+"
+            - error: "..+"
             - constant.specialChar: "%."
-            - constant.specialChar: "\\\\."
+            - constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]"
+            - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})"
 
     - constant.string:
         start: "`"
         end: "`"
         rules: []
+
+    - comment:
+        start: "//"
+        end: "$"
+        rules:
+            - todo: "(TODO|XXX|FIXME):?"
+
+    - comment:
+        start: "/\\*"
+        end: "\\*/"
+        rules:
+            - todo: "(TODO|XXX|FIXME):?"