]> git.lizzy.rs Git - micro.git/blobdiff - runtime/syntax/haskell.yaml
Merge branch 'master' into highlight-nimscript
[micro.git] / runtime / syntax / haskell.yaml
index d69e46f010ccc024855031019a88743ae615ca35..af406ab8c15f5c582a25b83ae775adab22b1e35e 100644 (file)
@@ -1,24 +1,50 @@
 filetype: haskell
 
-detect: 
+detect:
     filename: "\\.hs$"
 
 rules:
+    # Keywords
     - statement: "[ ](as|case|of|class|data|default|deriving|do|forall|foreign|hiding|if|then|else|import|infix|infixl|infixr|instance|let|in|mdo|module|newtype|qualified|type|where)[ ]"
     - statement: "(^data|^foreign|^import|^infix|^infixl|^infixr|^instance|^module|^newtype|^type)[ ]"
     - statement: "[ ](as$|case$|of$|class$|data$|default$|deriving$|do$|forall$|foreign$|hiding$|if$|then$|else$|import$|infix$|infixl$|infixr$|instance$|let$|in$|mdo$|module$|newtype$|qualified$|type$|where$)"
+
+      # Various symbols
     - symbol: "(\\||@|!|:|_|~|=|\\\\|;|\\(\\)|,|\\[|\\]|\\{|\\})"
+
+      # Operators
     - symbol.operator: "(==|/=|&&|\\|\\||<|>|<=|>=)"
+
+      # Various symbols
     - special: "(->|<-)"
     - symbol: "\\.|\\$"
+
+      # Data constructors
     - constant.bool: "\\b(True|False)\\b"
     - constant: "(Nothing|Just|Left|Right|LT|EQ|GT)"
+
+      # Data classes
     - identifier.class: "[ ](Read|Show|Enum|Eq|Ord|Data|Bounded|Typeable|Num|Real|Fractional|Integral|RealFrac|Floating|RealFloat|Monad|MonadPlus|Functor)"
-    - constant.string: "\"[^\\\"]*\""
-    - comment: "--.*"
+
+      # Strings
+    - constant.string:
+        start: "\""
+        end: "\""
+        skip: "\\\\."
+        rules:
+            - constant.specialChar: "\\\\."
+
+      # Comments
+    - comment:
+        start: "--"
+        end: "$"
+        rules:
+            - todo: "(TODO|XXX|FIXME):?"
+
     - comment:
         start: "\\{-"
         end: "-\\}"
-        rules: []
+        rules:
+            - todo: "(TODO|XXX|FIXME):?"
 
     - identifier.micro: "undefined"