]> git.lizzy.rs Git - micro.git/commitdiff
Add V syntax highlighting.
authorDelyan Angelov <delian66@gmail.com>
Mon, 30 Dec 2019 14:13:15 +0000 (16:13 +0200)
committerGitHub <noreply@github.com>
Mon, 30 Dec 2019 14:13:15 +0000 (16:13 +0200)
V is a new general purpose language, inspired mainly by Go, Rust, Pascal and C.
Main site: https://vlang.io/
Github: https://github.com/vlang/v

runtime/syntax/v.yaml [new file with mode: 0644]

diff --git a/runtime/syntax/v.yaml b/runtime/syntax/v.yaml
new file mode 100644 (file)
index 0000000..6f1c96d
--- /dev/null
@@ -0,0 +1,85 @@
+filetype: v
+
+detect:
+    filename: "\\.v$"
+
+rules:
+    # Conditionals and control flow
+    - keywords: "\\b(import|go|defer)\\b"
+    - special: "\\b(or|break|continue|match|case|goto|return|none)\\b"
+    - function: "\\b(fn)\\b"
+    - main_function: "\\b(fn main\\(\\))"
+    - optionals: "\\b(none|error\\()"
+    - statement: "\\b(if|else|for|match)\\b"
+    - assert: "\\b(assert)\\b"
+    - symbol.operator: "\\b([-+/*=<>!~%&|^])\\b"
+    - symbol.operator: "\\b(:=)\\b"
+    - symbol.operator: "\\b(\\|\\|)\b"
+    - symbol.operator: "\\b(\\&\\&)\\b"
+
+    - compile_if: "\\b(\\$if|\\$else)\\b"
+    - oses: "\\b(mac|macos|linux|windows|freebsd|openbsd|netbsd|dragonfly|js|android|solaris|haiku)\\b"
+
+      # Types
+    - symbol: "(,|\\.)"
+    - btype: "\\b(bool)\\b"
+    - ztype: "\\b(char|byte)\\b"
+    - itype: "\\b(int|i(8|16|64)|u(8|16|32|64))\\b"
+    - ftype: "\\b(f(32|64))\\b"
+    - ptype: "\\b(uintptr|charptr|byteptr|voidptr)\\b"
+    - atype: "\\b(array)\\b"
+    - stype: "\\b(string|ustring)\\b"
+    - mtype: "\\b(map)\\b"
+    - type.keyword: "\\b(pub|mut|struct|enum|interface|module|type|const)\\b"
+    - constant.bool: "\\b(true|false)\\b"
+
+      # Brackets
+    - symbol.brackets: "(\\{|\\})"
+    - symbol.brackets: "(\\(|\\))"
+    - symbol.brackets: "(\\[|\\])"
+
+      # Numbers and strings
+    - constant.number: "\\b([0-9]+|0x[0-9a-fA-F]*)\\b|'.'"
+
+    - constant.string:
+        start: "\""
+        end: "\""
+        skip: "\\\\."
+        rules:
+            - 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:
+            - error: "..+"
+            - 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):?"
+
+    - function.attribute:
+        start: "^\\["
+        end: "\\]$"
+        rules:
+            - known: "\\b(deprecated|inline|typedef|if)\\b"
+