@@ -6,49 +6,47 @@ local util = require("neogit.lib.util")
6
6
7
7
local a = require (" plenary.async" )
8
8
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
10
45
--- @param gitdir string
11
46
--- @return uv_fs_event_t
12
47
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
-
21
48
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 )
52
50
53
51
return w
54
52
end
0 commit comments