filetype: clojure
-detect:
- filename: "\\.(clj)$"
+detect:
+ filename: "\\.(clj[sc]?|edn)$"
rules:
- - constant: ""
+
+ # Constants
- constant.bool: "\\b(true|false)\\b"
- constant.macro: "\\b(nil)\\b"
+ # Valid numbers
- constant.number: "[\\-]?[0-9]+?\\b"
- constant.number: "0x[0-9][A-Fa-f]+?\\b"
- constant.number: "[\\-]?(3[0-6]|2[0-9]|1[0-9]|[2-9])r[0-9A-Z]+?\\b"
+ # Invalid numbers
- error: "[\\-]?([4-9][0-9]|3[7-9]|1|0)r[0-9A-Z]+?\\b"
+
+ # Symbols
- symbol.operator: "[=>+\\-*/'?]"
+
+ # Types/casting
- type: "\\b(byte|short|(big)?int(eger)?|long|float|num|bigdec|rationalize)\\b"
- - special: ""
- - constant.string: ""
- - constant.specialChar: "(\\\\u[0-9A-fa-f]{4,4}|\\\\newline|\\\\space|\\\\tab|\\\\formfeed|\\\\backspace|\\\\return|\\\\.)"
- - comment: ";.*$"
+
+ # String highlighting
+ - constant.string:
+ start: "\""
+ end: "\""
+ skip: "\\\\."
+ rules:
+ - constant.specialChar: "(\\\\u[0-9A-fa-f]{4,4}|\\\\newline|\\\\space|\\\\tab|\\\\formfeed|\\\\backspace|\\\\return|\\\\.)"
+
+ # Comments
+ - comment:
+ start: ";"
+ end: "$"
+ rules:
+ - todo: "(TODO|XXX|FIXME):?"
+