diff options
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | plugins/language_fennel.lua | 100 |
2 files changed, 101 insertions, 0 deletions
@@ -31,6 +31,7 @@ Plugin | Description [`language_cpp`](plugins/language_cpp.lua?raw=1) | Syntax for the [C++](https://isocpp.org/) programming language [`language_csharp`](plugins/language_csharp.lua?raw=1) | Syntax for the [C#](http://csharp.net) programming language [`language_fe`](plugins/language_fe.lua?raw=1) | Syntax for the [fe](https://github.com/rxi/fe) programming language +[`language_fennel`](plugins/language_fennel.lua?raw=1) | Syntax for the [fennel](https://fennel-lang.org) programming language [`language_go`](plugins/language_go.lua?raw=1) | Syntax for the [Go](https://golang.org/) programming language [`language_hs`](plugins/language_hs.lua?raw=1) | Syntax for the [Haskell](https://www.haskell.org/) programming language [`language_jiyu`](plugins/language_jiyu.lua?raw=1) | Syntax for the [jiyu](https://github.com/machinamentum/jiyu) programming language diff --git a/plugins/language_fennel.lua b/plugins/language_fennel.lua new file mode 100644 index 0000000..7320e91 --- /dev/null +++ b/plugins/language_fennel.lua @@ -0,0 +1,100 @@ +-- Support for the Fennel programming language: https://fennel-lang.org +-- Covers all the keywords up to Fennel version 0.4.0 + +-- Currently only covers highlighting, not indentation, delimiter +-- matching, or evaluation. + +local syntax = require "core.syntax" + +syntax.add { + files = "%.fnl$", + comment = ";", + patterns = { + { pattern = ";.-\n", type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = "0x[%da-fA-F]+", type = "number" }, + { pattern = "-?%d+[%d%.]*", type = "number" }, + { pattern = "-?%.?%d+", type = "number" }, + { pattern = "%f[^(][^()'%s\"]+", type = "function" }, + { pattern = "[^()'%s\"]+", type = "symbol" }, + }, + + symbols = { + ["eval-compiler"] = "keyword2", + ["doc"] = "keyword2", + ["lua"] = "keyword2", + ["hashfn"] = "keyword2", + ["macro"] = "keyword2", + ["macros"] = "keyword2", + ["import-macros"] = "keyword2", + ["do"] = "keyword2", + ["values"] = "keyword2", + ["if"] = "keyword2", + ["when"] = "keyword2", + ["each"] = "keyword2", + ["for"] = "keyword2", + ["fn"] = "keyword2", + ["lambda"] = "keyword2", + ["λ"] = "keyword2", + ["partial"] = "keyword2", + ["while"] = "keyword2", + ["set"] = "keyword2", + ["global"] = "keyword2", + ["var"] = "keyword2", + ["local"] = "keyword2", + ["let"] = "keyword2", + ["tset"] = "keyword2", + ["set-forcibly!"] = "keyword2", + ["doto"] = "keyword2", + ["match"] = "keyword2", + ["or"] = "keyword2", + ["and"] = "keyword2", + ["not"] = "keyword2", + ["not="] = "keyword2", + ["pick-args"] = "keyword2", + ["pick-values"] = "keyword2", + ["macrodebug"] = "keyword2", + + ["."] = "keyword", + ["+"] = "keyword", + [".."] = "keyword", + ["^"] = "keyword", + ["-"] = "keyword", + ["*"] = "keyword", + ["%"] = "keyword", + ["/"] = "keyword", + [">"] = "keyword", + ["<"] = "keyword", + [">="] = "keyword", + ["<="] = "keyword", + ["="] = "keyword", + ["#"] = "keyword", + ["..."] = "keyword", + [":"] = "keyword", + ["->"] = "keyword", + ["->>"] = "keyword", + ["-?>"] = "keyword", + ["-?>>"] = "keyword", + ["$"] = "keyword", + ["$1"] = "keyword", + ["$2"] = "keyword", + ["$3"] = "keyword", + ["$4"] = "keyword", + ["$5"] = "keyword", + ["$6"] = "keyword", + ["$7"] = "keyword", + ["$8"] = "keyword", + ["$9"] = "keyword", + + ["lshift"] = "keyword", + ["rshift"] = "keyword", + ["bor"] = "keyword", + ["band"] = "keyword", + ["bnot"] = "keyword", + ["bxor"] = "keyword", + + ["nil"] = "literal", + ["true"] = "literal", + ["false"] = "literal", + } +} |