* #1961 diagnostic logging refresh_nodes_for_path * #1961 add cycle detection to refresh_nodes_for_path * #1961 escape special characters on when path matching during refresh * #1961 escape special characters on when path matching during refresh
This commit is contained in:
parent
8b8d457e07
commit
4222bb875d
@ -166,6 +166,9 @@ function M.refresh_nodes_for_path(path)
|
|||||||
|
|
||||||
local profile = log.profile_start("refresh_nodes_for_path %s", path)
|
local profile = log.profile_start("refresh_nodes_for_path %s", path)
|
||||||
|
|
||||||
|
-- avoids cycles
|
||||||
|
local paths_refreshed = {}
|
||||||
|
|
||||||
NodeIterator.builder({ explorer })
|
NodeIterator.builder({ explorer })
|
||||||
:hidden()
|
:hidden()
|
||||||
:recursor(function(node)
|
:recursor(function(node)
|
||||||
@ -177,10 +180,13 @@ function M.refresh_nodes_for_path(path)
|
|||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
:applier(function(node)
|
:applier(function(node)
|
||||||
local abs_contains = node.absolute_path and path:match("^" .. node.absolute_path)
|
local abs_contains = node.absolute_path and path:find(node.absolute_path, 1, true) ~= 1
|
||||||
local link_contains = node.link_to and path:match("^" .. node.link_to)
|
local link_contains = node.link_to and path:find(node.link_to, 1, true) ~= 1
|
||||||
if abs_contains or link_contains then
|
if abs_contains or link_contains then
|
||||||
M.refresh_node(node)
|
if not paths_refreshed[node.absolute_path] then
|
||||||
|
paths_refreshed[node.absolute_path] = true
|
||||||
|
M.refresh_node(node)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
:iterate()
|
:iterate()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user