Skip to content

Commit a24e306

Browse files
committed
Refactor watcher
1 parent ffc52e7 commit a24e306

File tree

1 file changed

+37
-39
lines changed

1 file changed

+37
-39
lines changed

lua/neogit/watcher.lua

Lines changed: 37 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -6,49 +6,47 @@ local util = require("neogit.lib.util")
66

77
local a = require("plenary.async")
88

9-
-- Adapted from https://github.com/lewis6991/gitsigns.nvim/blob/main/lua/gitsigns/manager.lua#L575
9+
local watch_gitdir_handler = a.void(function()
10+
logger.debug("[WATCHER] Dispatching Refresh")
11+
require("neogit.status").dispatch_refresh()
12+
end)
13+
14+
local watch_gitdir_handler_db =
15+
util.debounce_trailing(config.values.filewatcher.interval, watch_gitdir_handler)
16+
17+
local fs_event_handler = function(err, filename, events)
18+
if err then
19+
logger.error(string.format("[WATCHER] Git dir update error: %s", err))
20+
return
21+
end
22+
23+
local info = string.format(
24+
"[WATCHER] Git dir update: '%s' %s",
25+
filename,
26+
vim.inspect(events, { indent = "", newline = " " })
27+
)
28+
29+
-- stylua: ignore
30+
if
31+
filename == nil or
32+
filename:match("%.lock$") or
33+
filename:match("COMMIT_EDITMSG") or
34+
filename:match("~$")
35+
then
36+
logger.debug(string.format("%s (ignoring)", info))
37+
return
38+
end
39+
40+
logger.debug(info)
41+
watch_gitdir_handler_db()
42+
end
43+
44+
-- Adapted from https://github.com/lewis6991/gitsigns.nvim/blob/main/lua/gitsigns/watcher.lua#L103
1045
--- @param gitdir string
1146
--- @return uv_fs_event_t
1247
local function start(gitdir)
13-
local watch_gitdir_handler_db = util.debounce_trailing(
14-
config.values.filewatcher.interval,
15-
a.void(function()
16-
logger.debug("[WATCHER] Dispatching Refresh")
17-
require("neogit.status").dispatch_refresh()
18-
end)
19-
)
20-
2148
local w = assert(uv.new_fs_event())
22-
23-
w:start(
24-
gitdir,
25-
{},
26-
a.void(function(err, filename, events)
27-
if err then
28-
logger.error(string.format("[WATCHER] Git dir update error: %s", err))
29-
return
30-
end
31-
32-
local info = string.format(
33-
"[WATCHER] Git dir update: '%s' %s",
34-
filename,
35-
vim.inspect(events, { indent = "", newline = " " })
36-
)
37-
38-
-- stylua: ignore
39-
if
40-
filename:match("%.lock$") or
41-
filename:match("COMMIT_EDITMSG") or
42-
filename:match("~$")
43-
then
44-
logger.debug(string.format("%s (ignoring)", info))
45-
return
46-
end
47-
48-
logger.debug(info)
49-
watch_gitdir_handler_db()
50-
end)
51-
)
49+
w:start(gitdir, {}, fs_event_handler)
5250

5351
return w
5452
end

0 commit comments

Comments
 (0)