aboutsummaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/language_diff.lua70
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 = {}
+}