diff options
Diffstat (limited to 'plugins/language_diff.lua')
-rw-r--r-- | plugins/language_diff.lua | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/plugins/language_diff.lua b/plugins/language_diff.lua new file mode 100644 index 0000000..4376b26 --- /dev/null +++ b/plugins/language_diff.lua @@ -0,0 +1,70 @@ +-- mod-version:2 -- lite-xl 2.0 +local syntax = require "core.syntax" +local style = require "core.style" +local common = require "core.common" + +-- we need these symbol types to have uniform colors +style.syntax["diff_add"] = { common.color "#72b886" } +style.syntax["diff_del"] = { common.color "#F36161" } + +syntax.add { + name = "Diff", + files = { "%.diff$", "%.patch$", "%.rej$" }, + headers = "^diff %-", + patterns = { + -- Method the patch was generated with and source/target files + { regex = "^diff .+", type = "function" }, + -- Seen for changing the file permissions + { regex = "^new .+", type = "comment" }, + -- Usually holds starting and ending commit + { regex = "^index .+", type = "comment" }, + -- Position to patch + { + pattern = "@@.-@@ ().+", --with heading + type = { "number", "string" } + }, + { + regex = "^@@ [\\d,\\-\\+ ]+ @@\n", --wihtout heading + type = "number" + }, + -- Other position to patch formats + { + regex = "^-{3} [\\d]+,[\\d]+ \\-{4}\n", + type = "number" + }, + { + regex = "^\\*{3} [\\d]+,[\\d]+ \\*{4}\n", + type = "number" + }, + -- Source and target file + { regex = "^-{3} .+", type = "keyword" }, + { regex = "^\\+{3} .+", type = "keyword" }, + -- Rarely used source file indicator + { regex = "^\\*{3} .+", type = "keyword" }, + -- git patches seem to add 3 dashes to separate message from changed files + { regex = "^-{3}\n", type = "normal" }, + -- Addition and deletion of lines + { regex = "^-.*", type = "diff_del" }, + { regex = "^\\+.*", type = "diff_add" }, + { regex = "^<.*", type = "diff_del" }, + { regex = "^>.*", type = "diff_add" }, + -- Change between two lines + { regex = "^!.*", type = "number" }, + -- Stuff usually found on a authored patch heading + { + pattern = "From ()[a-fA-F0-9]+ ().+", + type = { "keyword", "number", "string" } + }, + { regex = "^[a-zA-Z\\-]+: ", type = "keyword" }, + -- Diff stats + { regex = "^ [\\d]+ files? changed", type = "function" }, + { regex = "[\\d]+ insertions?\\(\\+\\)", type = "diff_add" }, + { regex = "[\\d]+ deletions?\\(\\-\\)", type = "diff_del" }, + -- Match e-mail + { + pattern = ".*()<[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+%.[a-zA-Z0-9-.]+>", + type = {"string", "keyword2"} + }, + }, + symbols = {} +} |