diff options
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | plugins/language_hs.lua | 45 |
2 files changed, 46 insertions, 0 deletions
@@ -27,6 +27,7 @@ Plugin | Description [`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_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 [`language_odin`](plugins/language_odin.lua?raw=1) | Syntax for the [Odin](https://github.com/odin-lang/Odin) programming language [`language_php`](plugins/language_php.lua?raw=1) | Syntax for the [PHP](https://php.net) programming language diff --git a/plugins/language_hs.lua b/plugins/language_hs.lua new file mode 100644 index 0000000..f0bf378 --- /dev/null +++ b/plugins/language_hs.lua @@ -0,0 +1,45 @@ +local syntax = require "core.syntax" + +syntax.add { + files = { "%.hs$" }, + comment = "%-%-", + patterns = { + { pattern = {"%-%-", "\n"}, type = "comment" }, + { pattern = { "{%-", "%-}" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "-?0x%x+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = "[!%#%$%%&*+./%<=>%?@\\%^|%-~:]", type = "operator" }, + { pattern = "[%a_'][%w_']*", type = "symbol" }, + }, + symbols = { + ["as"] = "keyword", + ["case"] = "keyword", + ["of"] = "keyword", + ["class"] = "keyword", + ["data"] = "keyword", + ["default"] = "keyword", + ["deriving"] = "keyword", + ["do"] = "keyword", + ["forall"] = "keyword", + ["foreign"] = "keyword", + ["hiding"] = "keyword", + ["if"] = "keyword", + ["then"] = "keyword", + ["else"] = "keyword", + ["import"] = "keyword", + ["infix"] = "keyword", + ["infixl"] = "keyword", + ["infixr"] = "keyword", + ["let"] = "keyword", + ["in"] = "keyword", + ["mdo"] = "keyword", + ["module"] = "keyword", + ["newtype"] = "keyword", + ["qualified"] = "keyword", + ["type"] = "keyword", + ["where"] = "keyword", + }, +} |