aboutsummaryrefslogtreecommitdiff
path: root/plugins/language_diff.lua
diff options
context:
space:
mode:
authorjgmdev <jgmdev@gmail.com>2022-03-03 02:20:45 -0400
committerjgmdev <jgmdev@gmail.com>2022-03-03 02:20:45 -0400
commite759d63313a04cc9b4d9822328c8c35da022f84d (patch)
tree2c263c0c0cdc0a8efff6d934a334c4abb6c42a8c /plugins/language_diff.lua
parentd9a43a143cae877b106915eab7f52578b4814139 (diff)
downloadlite-xl-plugins-e759d63313a04cc9b4d9822328c8c35da022f84d.tar.gz
lite-xl-plugins-e759d63313a04cc9b4d9822328c8c35da022f84d.zip
Added language_diff
Diffstat (limited to 'plugins/language_diff.lua')
-rw-r--r--plugins/language_diff.lua72
1 files changed, 72 insertions, 0 deletions
diff --git a/plugins/language_diff.lua b/plugins/language_diff.lua
new file mode 100644
index 0000000..46a6af4
--- /dev/null
+++ b/plugins/language_diff.lua
@@ -0,0 +1,72 @@
+-- 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 .+\n$", type = "function" },
+ -- Seen for changing the file permissions
+ { regex = "^new .+\n$", type = "comment" },
+ -- Usually holds starting and ending commit
+ { regex = "^index .+\n$", type = "comment" },
+ -- Position to patch
+ {
+ pattern = "@@.-@@ ().+\n", --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} .+\n$", type = "keyword" },
+ { regex = "^\\+{3} .+\n$", type = "keyword" },
+ -- Rarely used source file indicator
+ { regex = "^\\*{3} .+\n$", 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 = "^\\-.*\n$", type = "diff_del" },
+ { regex = "^\\+.*\n$", type = "diff_add" },
+ { regex = "^<.*\n$", type = "diff_del" },
+ { regex = "^>.*\n$", type = "diff_add" },
+ -- Change between two lines
+ { regex = "^!.*\n$", type = "number" },
+ -- Stuff usually found on a authored patch heading
+ {
+ pattern = "From ()[a-fA-F0-9]+ ().+\n",
+ 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
+ {
+ regex = "<[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+>\n",
+ type = "keyword2"
+ },
+ -- Everything else is normal text
+ { pattern = "[%a_][%w_]*", type = "normal" },
+ },
+ symbols = {}
+}