summaryrefslogtreecommitdiffstats
path: root/pairs.lua
diff options
context:
space:
mode:
authorGeorgi Kirilov <>2020-11-22 15:10:49 +0200
committerGeorgi Kirilov <>2023-10-04 18:24:58 +0800
commit8d0c543453b671086480ed106df1378cf49cc384 (patch)
tree5f840e7e838e6ad5b529cc2c4113d141eb06a8bb /pairs.lua
parent096c115c6e9b5445f98e7aece7798ac22b7df2c9 (diff)
downloadvis-pairs-8d0c543453b671086480ed106df1378cf49cc384.tar.gz
Don't overwrite existing configuration
Diffstat (limited to 'pairs.lua')
-rw-r--r--pairs.lua25
1 files changed, 19 insertions, 6 deletions
diff --git a/pairs.lua b/pairs.lua
index 900ae06..16315e2 100644
--- a/pairs.lua
+++ b/pairs.lua
@@ -187,13 +187,26 @@ vis.events.subscribe(vis.events.INIT, function()
inner = new(vis.textobject, vis.textobject_register, M.prefix.inner, inner, "Delimited block (inner variant)"),
outer = new(vis.textobject, vis.textobject_register, M.prefix.outer, outer, "Delimited block (outer variant)"),
}
+
local tag = {"<" * l.Cg(l.C((l.S"_:" + l.R("az", "AZ")) * (l.R("az", "AZ", "09") + l.S"_:.-")^0), "t") * (1 - l.S"><")^0 * (">" - l.B"/"), l.Cmt("</" * l.Cb("t") * l.C((1 - l.P">")^1) * ">", function(_, _, c1, c2) return c1 == c2 end)}
- M.map.html = {t = tag}
- M.map.xml = {t = tag}
- local any_paren = {l.Cg(l.C(l.S"([{"), "s"), l.Cmt(l.Cb("s") * l.C(1), function(_, _, c1, c2) return builtin_textobjects[c1][2] == c2 end)}
- M.map.scheme = {b = any_paren}
- M.map.lisp = {b = any_paren}
- M.map.clojure = {b = any_paren}
+ local any_bracket = {l.Cg(l.C(l.S"([{"), "s"), l.Cmt(l.Cb("s") * l.C(1), function(_, _, c1, c2) return builtin_textobjects[c1][2] == c2 end)}
+ local presets = {
+ html = {t = tag},
+ xml = {t = tag},
+ scheme = {b = any_bracket},
+ lisp = {b = any_bracket},
+ clojure = {b = any_bracket},
+ }
+ for syntax, bindings in pairs(presets) do
+ if not M.map[syntax] then
+ M.map[syntax] = bindings
+ else
+ for key, pattern in pairs(bindings) do
+ if not M.map[syntax][key] then M.map[syntax][key] = pattern end
+ end
+ end
+ end
+
end)
M = {