diff options
-rw-r--r-- | manifest.json | 11 | ||||
-rw-r--r-- | plugins/language_bazel.lua | 102 |
2 files changed, 113 insertions, 0 deletions
diff --git a/manifest.json b/manifest.json index 4a8c53a..3b1b936 100644 --- a/manifest.json +++ b/manifest.json @@ -65,6 +65,7 @@ "language_assembly_x86": {}, "language_autohotkey_v1": {}, "language_batch": {}, + "language_bazel": {}, "language_bib": {}, "language_blade": {}, "language_blueprint": {}, @@ -670,6 +671,16 @@ "version": "0.1" }, { + "description": "Syntax for [Bazel](https://bazel.build/) build tool files.", + "id": "language_bazel", + "mod_version": "3", + "path": "plugins/language_bazel.lua", + "tags": [ + "language" + ], + "version": "0.1" + }, + { "description": "Syntax for [BibTex](https://en.wikipedia.org/wiki/BibTeX) files", "id": "language_bib", "mod_version": "3", diff --git a/plugins/language_bazel.lua b/plugins/language_bazel.lua new file mode 100644 index 0000000..8b0348e --- /dev/null +++ b/plugins/language_bazel.lua @@ -0,0 +1,102 @@ +--- Author: Rohan Vashisht: https://github.com/rohanvashisht1234/ +-- mod-version:3 +------------ IMPORT LIB ------------ +local syntax_highlight = require("core.syntax") +------------------------------------ + +------------- DATABASE ------------- + +---- SYMBOLS ---- +local SYMBOLS = {} + +local KEYWORDS = { + "break", + "continue", + "elif", + "else", + "for", + "if", + "pass", + "return", + "True", + "False" +} + +local KEYWORDS2 = { + "as", + "assert", + "class", + "del", + "except", + "finally", + "from", + "global", + "import", + "in", + "is", + "lambda", + "nonlocal", + "raise", + "try", + "while", + "with", + "yield" +} + +local LITERALS = { + "all", + "any", + "bool", + "dict", + "dir", + "enumerate", + "getattr", + "hasattr", + "hash", + "int", + "len", + "list", + "load", + "max", + "min", + "repr", + "reversed", + "sorted", + "str", + "tuple", + "type", + "zip" +} +----------------- + +---- PATTERNS ---- +local PATTERNS = { + { pattern = { '"', '"', '\\' }, type = "string" }, -- tested ok + { pattern = "#.*", type = "comment" }, -- tested ok + { pattern = "[!%-/*?:=><]", type = "operator" }, -- tested ok + { pattern = "-?%d+[%d%.eE_]*", type = "number" }, -- tested ok + { pattern = '[%a_][%w_]*%f[(]', type = 'function' }, -- tested ok + { pattern = "-?%d+[%d%.eE_]*", type = "number" }, -- tested ok + { pattern = "[%a_][%w_]*", type = "normal" } -- tested ok +} +------------------ +------------------------------------ + +--------------- MAIN --------------- +for _, keyword in ipairs(KEYWORDS) do + SYMBOLS[keyword] = "keyword" +end +for _, keyword2 in ipairs(KEYWORDS2) do + SYMBOLS[keyword2] = "keyword2" +end +for _, literal in ipairs(LITERALS) do + SYMBOLS[literal] = "literal" +end +syntax_highlight.add { + name = "Bazel", + files = {"%.bazel$","%.bzl$"}, + comment = "#", + patterns = PATTERNS, + symbols = SYMBOLS, +} +------------------------------------ |