Added `replace-symbol` command to findreplace plugin
This commit is contained in:
parent
9fc185af2f
commit
5155ce0527
|
@ -1,5 +1,6 @@
|
||||||
local core = require "core"
|
local core = require "core"
|
||||||
local command = require "core.command"
|
local command = require "core.command"
|
||||||
|
local config = require "core.config"
|
||||||
local search = require "core.doc.search"
|
local search = require "core.doc.search"
|
||||||
local DocView = require "core.docview"
|
local DocView = require "core.docview"
|
||||||
|
|
||||||
|
@ -67,15 +68,11 @@ local function find(label, search_fn)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
local function replace(pattern_escape)
|
local function replace(fn)
|
||||||
core.command_view:enter("Find To Replace", function(old)
|
core.command_view:enter("Find To Replace", function(old)
|
||||||
core.command_view:enter("Replace \"" .. old .. "\" With", function(new)
|
core.command_view:enter("Replace \"" .. old .. "\" With", function(new)
|
||||||
local n = doc():replace(function(text)
|
local n = doc():replace(function(text)
|
||||||
if pattern_escape then
|
return fn(text, old, new)
|
||||||
return text:gsub(old:gsub("%W", "%%%1"), new:gsub("%%", "%%%%"), nil)
|
|
||||||
else
|
|
||||||
return text:gsub(old, new)
|
|
||||||
end
|
|
||||||
end)
|
end)
|
||||||
core.log("Replaced %d instance(s) of %q with %q", n, old, new)
|
core.log("Replaced %d instance(s) of %q with %q", n, old, new)
|
||||||
end)
|
end)
|
||||||
|
@ -137,10 +134,27 @@ command.add("core.docview", {
|
||||||
end,
|
end,
|
||||||
|
|
||||||
["find-replace:replace"] = function()
|
["find-replace:replace"] = function()
|
||||||
replace(true)
|
replace(function(text, old, new)
|
||||||
|
return text:gsub(old:gsub("%W", "%%%1"), new:gsub("%%", "%%%%"), nil)
|
||||||
|
end)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
["find-replace:replace-pattern"] = function()
|
["find-replace:replace-pattern"] = function()
|
||||||
replace(false)
|
replace(function(text, old, new)
|
||||||
|
return text:gsub(old, new)
|
||||||
|
end)
|
||||||
|
end,
|
||||||
|
|
||||||
|
["find-replace:replace-symbol"] = function()
|
||||||
|
replace(function(text, old, new)
|
||||||
|
local n = 0
|
||||||
|
local res = text:gsub(config.symbol_pattern, function(sym)
|
||||||
|
if old == sym then
|
||||||
|
n = n + 1
|
||||||
|
return new
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
return res, n
|
||||||
|
end)
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue